这段代码为什么会出现错误的结果?
#include <stdio.h>int main(void)
{
int i=1, sum=0;
do
{
i = i + 1;
sum = sum + i;
} while (i <= 100); // 娉ㄦ剰锛岃繖閲屾湁鍒嗗彿锛?锛?
printf("%d\n", sum);
printf("%d\n", i);
return 0;
}
上面这段代码,我认为他的值应该是5151,为什么会是5150?
开始循环时 i = 1 时没有加到 sum 中,而是先将 i + 1 了,也就是从 2 开始加
而最后循环 101 时 正好 sum 等于 5049 了,所以结果为 5150
有没有更好的解释?
{:10_254:}
这段代码结果sum = 5150,而i = 101.那么这个代码最终的数值我觉得应该是5151 yuzhitai 发表于 2021-6-26 11:56
这段代码结果sum = 5150,而i = 101.那么这个代码最终的数值我觉得应该是5151
这不理解吗? 第一次开始循环时,你 i 初始值是 1 ,而你循环体中
i = i + 1;
sum = sum + i;
是先执行 i = i + 1 ,那么此时 i 不是等于 2 了吗?,而 2~100 的和为 5049 最后一次循环 101 加上不就为 5150 了吗?
5049+ 101 是等于 5151 吗?
懂了,谢谢。i的作用就相当于初始值和累加值。sum在i的基础上进行累加。 #include <stdio.h>
int main(void)
{
int i=0, sum=0;
do
{
++i;//相当于初始值。
sum = sum + i;
} while (i <= 99); // 娉ㄦ剰锛岃繖閲屾湁鍒嗗彿锛?锛?
printf("%d\n", sum);
printf("%d\n", i);
return 0;
}
这是我认为比较合适的方法。
页:
[1]