wy丶12 发表于 2020-7-2 21:28:31

大佬们 这题是为啥

本帖最后由 wy丶12 于 2020-7-2 21:31 编辑

在14课 课后作业里的这题 :
……
                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);
……

为啥计算顺序变了之后得到的结果就不一样了 ,一直都没想明白

永恒的蓝色梦想 发表于 2020-7-2 21:31:32

先接水后倒水和先倒水后接水,结果一样么?

sunrise085 发表于 2020-7-2 21:48:19

第一种写法是对的。每次加的都是上次循环所输入的num值,若没有正确的输入,status为0,则退出循环。这种写法,num需要赋初值为0
第二种写法是有问题的,每次加的是本次循环所输入的num值,然后若没有正确输入,status为0,而num还是上次循环的值,会被再加一遍,那就加错了。

wy丶12 发表于 2020-7-2 21:55:50

永恒的蓝色梦想 发表于 2020-7-2 21:31
先接水后倒水和先倒水后接水,结果一样么?

嗯 谢谢大佬 {:10_323:}

wy丶12 发表于 2020-7-2 21:56:38

sunrise085 发表于 2020-7-2 21:48
第一种写法是对的。每次加的都是上次循环所输入的num值,若没有正确的输入,status为0,则退出循环。这种写 ...

嗯 谢谢大佬 {:10_323:}
页: [1]
查看完整版本: 大佬们 这题是为啥