|
发表于 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的值是正确的。 |
|