爱学习的阿瑶 发表于 2021-12-17 20:50:29

为什么修改代码上下顺序,运行输出结果不一致

#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;
}

jackz007 发表于 2021-12-17 21:18:30

#include <stdio.h>

int main(void)
{
      double num = 0 , sum = 0            ;
      int status                            ;
      while(1) {
                printf("请输入合法的数字:");
                status = scanf("%lf" , & num) ;
                if(status == 1) sum += num    ;
                else break                  ;
      }
      printf("%.2lf\n" , sum)               ;
}
      这个代码和 getchar() 一毛钱关系也没有,干嘛要招惹它???

小亦003 发表于 2021-12-17 21:26:10

我也觉得都是15{:10_266:},求解{:10_258:}

jhq999 发表于 2021-12-18 12:14:00

本帖最后由 jhq999 于 2021-12-18 12:16 编辑

第一个sum+=num;sum=0+0;sum=1+0;sum=1+2;.....sum=10+5;
第二个sum=1+0;sum=1+2;.....sum=10+5;sum=15+5;//当你输入不是数字,scanf("%lf",&num);不改变num的值,所以sum=15+5;
页: [1]
查看完整版本: 为什么修改代码上下顺序,运行输出结果不一致