鱼C论坛

 找回密码
 立即注册
查看: 2355|回复: 4

s1e14课后作业求助

[复制链接]
发表于 2023-11-8 14:56:30 | 显示全部楼层
这个问题是由于代码中的两行语句的顺序导致的。

在第二个do...while循环中,首先执行的是 status = scanf("%f", &num); 语句,然后才会执行 sum = sum + num; 语句。

当你输入数字1时,首先会执行 status = scanf("%f", &num); 语句,将输入的数字1赋值给num,并将status设置为1(表示成功读取一个浮点数)。然后执行 sum = sum + num; 语句,将sum的值加上num的值,此时sum变为1。

当你输入数字2时,再次执行 status = scanf("%f", &num); 语句,将输入的数字2赋值给num,并将status设置为1。然后执行 sum = sum + num; 语句,将sum的值加上num的值,此时sum变为3。

以此类推,当你输入数字4时,sum的值变为10。

如果你将这两行语句的顺序调换,即先执行 sum = sum + num; 语句,再执行 status = scanf("%f", &num); 语句,那么结果会变为14。

因为当你输入数字1时,首先执行 sum = sum + num; 语句,将sum的值加上num的值,此时sum变为1。然后执行 status = scanf("%f", &num); 语句,将输入的数字2赋值给num,并将status设置为1。接着执行 sum = sum + num; 语句,将sum的值再加上num的值,此时sum变为3。

以此类推,当你输入数字4时,sum的值变为14。

所以,调换这两行语句的顺序会导致结果不同。正确的顺序是先执行 status = scanf("%f", &num); 语句,再执行 sum = sum + num; 语句,以保证sum的值是正确的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 07:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表