啊哈磊_编程从这里起步
标题: 啊哈c例题问题 [打印本页]
作者: a1399753221 时间: 2013-3-7 17:09
标题: 啊哈c例题问题
从键盘输入一个正整数,让计算机判断这个数是否为一个一位数(1-9之间),如果是输出yes,不是则输出no。这道题
我的代码
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a>=1 && a<=9)
printf("yes");
else
printf("no");
sleep(5000);
return 0;
}
为什么我输入5.5 也显示的是yes,题目上不是要求正整数吗?求指点怎么输入小数让他显示no啊
作者: rosynirvana 时间: 2013-3-7 17:09
a1399753221 发表于 2013-3-7 21:00
整数 不就是不包括小数吗?
麻烦一下 帮我写一下吧 谢谢啦
就是说你输入一个小数,计算机仍然会当作一个整数读取
scanf是个很麻烦的函数,要求的类型(例如%d %f)和用户实际输入类型不相符时会出现很多预期之外的问题- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- int main()
- {
- int i, flag;
- flag = 0;
- i = getchar();
- if(!isdigit(i))
- flag = 1;
- else{
- i = getchar();
- if(i != '\n')
- flag = 1;
- }
-
-
- if(flag == 0)
- printf("yes\n");
- else
- printf("no\n");
- system("pause");
- return 0;
- }
复制代码 用了个ctype.h中的isdigit(i),i会被当作一个字符来处理,如果这个字符的字面值是个数字就返回1,否则返回0
例如 i = '5', isdigit(i)返回1
但是 i = 'a', isdigit(i)就会返回0
此外用了个getchar(),作用是从输入流中读取一个字符
这段代码忽略了用户输入是 +1 +2 这种情况, 1,空格,空格,回车这类情况
只有输入是1,回车这类情会输出yes
作者: rosynirvana 时间: 2013-3-7 19:26
scanf("%d",&a)
会在你的输入中读取一个整数
想要一个fully functioning的程序,只用ahaC现在讲过的东西是不可能的
如果你有兴趣,我可以写一个演示一下
作者: a1399753221 时间: 2013-3-7 21:00
rosynirvana 发表于 2013-3-7 19:26
scanf("%d",&a)
会在你的输入中读取一个整数
整数 不就是不包括小数吗?
麻烦一下 帮我写一下吧 谢谢啦
作者: a1399753221 时间: 2013-3-21 14:47
rosynirvana 发表于 2013-3-7 21:30
就是说你输入一个小数,计算机仍然会当作一个整数读取
scanf是个很麻烦的函数,要求的类型(例如%d %f)和 ...
额 好神奇 好多看不懂得。。。不过还是谢谢了
作者: a1399753221 时间: 2013-3-21 14:47
rosynirvana 发表于 2013-3-7 21:30
就是说你输入一个小数,计算机仍然会当作一个整数读取
scanf是个很麻烦的函数,要求的类型(例如%d %f)和 ...
额 好神奇 好多看不懂得。。。不过还是谢谢了
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) |
Powered by Discuz! X3.2 |