lsy358027330 发表于 2020-10-3 15:13:22

这个作业S1E14答案是啥

本帖最后由 lsy358027330 于 2020-10-3 17:10 编辑

就是那个带你学C带你飞的第14章,for语句和循环嵌套 里面那个小甲鱼没有给答案的题目,这是源代码
#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;
}

是实现可以一行输入多数的相加,然后小甲鱼在内循环里进行修改,将顺序调换,答案就会不同,为什么啊,百思不得其解
……
                do
                {
                        status = scanf("%f", &num);
                        sum = sum + num;
                } while (getchar() != '\n' && status == 1);
……

1+2相加会成5,1+2+3会相加成9

zltzlt 发表于 2020-10-3 15:15:34

???

Jacksturdy 发表于 2020-10-3 16:36:31

你把问题说清楚点

lsy358027330 发表于 2020-10-3 16:41:01

本帖最后由 lsy358027330 于 2020-10-3 17:06 编辑

啊,我把问题修改了一下,希望大神解答https://fishc.com.cn/forum.php?mod=viewthread&tid=68999&extra=page%3D1%26filter%3Dtypeid%26typeid%3D570就是这个里面的

lsy358027330 发表于 2020-10-3 17:06:33

zltzlt 发表于 2020-10-3 15:15
???

抱歉,修改了题目了

lsy358027330 发表于 2020-10-3 17:07:06

Jacksturdy 发表于 2020-10-3 16:36
你把问题说清楚点

抱歉,修改问题了,求大神解答

Jacksturdy 发表于 2020-10-3 17:25:41

我也是新手,我是这样看的,   当 sum = sum + num;在前面时第一次执行的时候sum = 0;而当status = scanf("%f", &num);在前面的时候已经将用户输入的数字赋值到num里面了,所以第一次执行sum = sum + num;的时候sum已经有一个值了,这样就多了
                  

lsy358027330 发表于 2020-10-3 17:31:49

Jacksturdy 发表于 2020-10-3 17:25
我也是新手,我是这样看的,   当 sum = sum + num;在前面时第一次执行的时候sum = 0;而当status = scan ...

那样应该结果会多 1 而不是最后一个数,所以我在想会不会scanf是倒着赋值的{:5_94:}
页: [1]
查看完整版本: 这个作业S1E14答案是啥