leon_xinxin 发表于 2020-9-13 03:15:57

求大神解答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;
}
到这里就做不懂题目了。。。哭

巴巴鲁 发表于 2020-9-13 06:41:18

输入整数的话也会被认为是浮点型,因为scanf里的格式字符是%f,输入整数后小数点后面会自动补0
你需要知道scanf函数的返回值:
如: scanf("%d %d",&a,&b); 函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2; 如果只有a被成功读入,返回值为1; 如果a和b都未被成功读入,返回值为0;

风过无痕1989 发表于 2020-9-13 09:44:56

到这里我也不想回复了,因为回复了,他们得到答案了,一拍屁股就走了,连不需要他们付出什么的最佳答案者舍不得给

leon_xinxin 发表于 2020-9-13 22:48:03

风过无痕1989 发表于 2020-9-13 02:44
到这里我也不想回复了,因为回复了,他们得到答案了,一拍屁股就走了,连不需要他们付出什么的最佳答案者舍 ...

我是诚心问的,大哥

风过无痕1989 发表于 2020-9-13 22:53:51

leon_xinxin 发表于 2020-9-13 22:48
我是诚心问的,大哥

我是顺着你的话“到这里就做不懂题目了”说的,^_^
页: [1]
查看完整版本: 求大神解答14课后习题~