求大神解答14课后习题~
动动手第二题:为什么以下程序可以在同一行内过滤非浮点数?实现原理是什么?
#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; 到这里我也不想回复了,因为回复了,他们得到答案了,一拍屁股就走了,连不需要他们付出什么的最佳答案者舍不得给 风过无痕1989 发表于 2020-9-13 02:44
到这里我也不想回复了,因为回复了,他们得到答案了,一拍屁股就走了,连不需要他们付出什么的最佳答案者舍 ...
我是诚心问的,大哥 leon_xinxin 发表于 2020-9-13 22:48
我是诚心问的,大哥
我是顺着你的话“到这里就做不懂题目了”说的,^_^
页:
[1]