超级简单问题求助
#include <stdio.h>int main()
{
float num = 0;
double sum = 0;
int status;
do
{
printf("请输入合法的数字:");
do
{
sum = sum + num;
status = scanf("%f", &num);
} while (getchar() != '\n' && status == 1);
} while(status == 1);
printf("结果是:%.2lf\n", sum);
return 0;
}
//就是我这个是要输入数字,然后相加,当输入不是数字的时候退出循环,就是哪个第一个while语句,哪个getchar(),当我输入1再空格再输入2再空格,是不是当我空格的时候,就已经又进行一次内循环了? 是的,回为你用的是 do ... while 结构,先运行一次循环体,再进行判断 https://www.runoob.com/cprogramming/c-do-while-loop.html
不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do...while 循环是在循环的尾部检查它的条件。
do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。
也就是,先执行一遍,然后输入1,判断输入是否为数字,以此决定是否执行第二次循环 是我表达错了,应该是第二个do while语句,就是我的意思是,我可以这样输入1 3 4 5然后回车,他又提示我请输入合法的数字,假如我又输入3,然后又提示我,加入我再输入一个q,然后跳出循环,得到结果为16,我就是想问一下,为什么输入1 3 4 5,没有出现问题? 严凯 发表于 2020-11-17 18:23
是我表达错了,应该是第二个do while语句,就是我的意思是,我可以这样输入1 3 4 5然后回车,他又提示我请 ...
因为每次循环scanf时一个一个读取的,getchar也只判断一位,所以只要没有读取到非法字符,status不变,就会一直循环
页:
[1]