| 
 | 
 
 
发表于 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; 才会退出程序)
  
 
 
 |   
 
 
 
 |