醉听风 发表于 2021-11-16 21:13:13

小白求助

                                 看不懂{:5_111:}
……
                do
                {
                        sum = sum + num;
                        status = scanf("%f", &num);
                } while (getchar() != '\n' && status == 1);
……
……
                do
                {
                        status = scanf("%f", &num);
                        sum = sum + num;
                } while (getchar() != '\n' && status == 1);
……

最终的执念 发表于 2021-11-16 21:13:14

喵喵喵

最终的执念 发表于 2021-11-16 21:41:16

我很好奇上面的代码 是怎么产生下面的结果的

醉听风 发表于 2021-11-16 21:46:17

最终的执念 发表于 2021-11-16 21:41
我很好奇上面的代码 是怎么产生下面的结果的

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

最终的执念 发表于 2021-11-16 21:55:33

第一次num和sum都没值   所以....
而且getchar() != '\n'这条件你确定成立....

醉听风 发表于 2021-11-16 22:39:01

最终的执念 发表于 2021-11-16 22:02
喵喵喵

懂了,修改前:输入1那次循环并没有赋值给sum,等第二次循环时才把1赋值给sum。
         修改后:第一次循环就给sum赋值了,还把最后的数相加了两次
status = scanf("%f", &num);
可以说一下这个会让status等1吗?{:5_111:}

最终的执念 发表于 2021-11-17 00:18:48

啊这不完全成立
页: [1]
查看完整版本: 小白求助