|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
动动手第二题:
为什么以下程序可以在同一行内过滤非浮点数?实现原理是什么?
- #include <stdio.h>
- int main()
- {
- float i;
- float j = 0;
- int status;
-
- do
- {
- printf("请输入合法的数字:");
- do
- {
- j = i + j;
- status = scanf("%f", &i);//为什么在取得一个浮点数后status会立马变成1,而不是等整行输入完成后再判断?
- }
- while (getchar() != '\n' && status == 1);
-
- }
- while (status == 1);//为什么输入非浮点型数据,比如a后status还是1?
-
- printf("结果是: %.2f", j);
-
- return 0;
- }
复制代码
到这里就做不懂题目了。。。哭
输入整数的话也会被认为是浮点型,因为scanf里的格式字符是%f,输入整数后小数点后面会自动补0
你需要知道scanf函数的返回值:
如: scanf("%d %d",&a,&b); 函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2; 如果只有a被成功读入,返回值为1; 如果a和b都未被成功读入,返回值为0;
|
|