|
发表于 2023-11-9 17:38:34
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下:
#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;
}
假如输入数字的是1 2 3 4
然后输入q退出
结果是10
但是将第二个do…while里面的改成
status = scanf("%f", &num);
sum = sum + num;
结果却是14,想了很久不明白,希望能给我通俗的解释一下
如果是:
- sum = sum + num;
- status = scanf("%f", &num);
复制代码
程序的执行流程如下:
sum = 0 + 0 = 0
sum = 0 + 1 = 1
sum = 1 + 2 = 3
sum = 3 + 3 = 6
sum = 6 + 4 = 10
如果是:
- status = scanf("%f", &num);
- sum = sum + num;
复制代码
程序的执行流程如下:
sum = 0 + 1 = 1
sum = 1 + 2 = 3
sum = 3 + 3 = 6
sum = 6 + 4 = 10
sum = 10 + 4 = 14(这里虽然接收到退出指令,但还要执行了一次 sum = sum + num; 才会退出程序)
|
|