为了账号安全,请及时绑定邮箱和手机立即绑定

计算100以内整数的和,这样算出来是5051多了1为什么呢?

#include <stdio.h>

int main()

{

    int sum=0;

    int i=0;

    while( i<=100 )  //循环条件

    {

        i++;         //改变循环变量的值

        sum=sum+i;

    }

    printf("100以内所有整数之和为:%d\n", sum);

    return 0;

}


正在回答

4 回答

 i++;         //改变循环变量的值

sum=sum+i;

把这两行的位置互换一下。



1 回复 有任何疑惑可以回复我~
#1

后会无期_ 提问者

非常感谢!
2017-06-12 回复 有任何疑惑可以回复我~

完整代码如下:

#include <stdio.h>

int main()

{

    int i,sum=0;

    i=0;

    while(  i<=100  )  //循环条件应该是什么呢?

    {

        sum=sum+i;

        i++;         //这里是不是应该改变循环变量的值

    }

    printf("100以内所有整数之和为:%d\n", sum);

    return 0;

}


1 回复 有任何疑惑可以回复我~
#1

冀东奇

你这个也行。
2017-07-17 回复 有任何疑惑可以回复我~

楼主我有点不明白,就是我用电脑运行一遍也是5151但是不明白哪里错了,第一次循环的的时候sum不是=0+1的嘛?然后依次循环到100嘛?

0 回复 有任何疑惑可以回复我~
#1

后会无期_ 提问者

是的,我以上代码错的点应该是多了一个等于号,起始值没错。 由于有了一个等于号,在最后i=100是还会再进入一次循环,代码顺序是i++; sum=sum+i;所以到sum这里,i已经等于101了。所以是多算了一次,就从1加到101了,多了101。希望您能够帮助你理解。
2017-05-24 回复 有任何疑惑可以回复我~
#2

齐天大圣只有一个

喔喔,这样子呀,谢谢你的解答哦!然后我按照你的方法在刚开始输入的是i=1,结果算的是5050,可是我就不明白为什么算的是这个结果?能说一下你理解的第一次循环和最后一次循环是循环体等于什么可以嘛? 还有疑问就是我在书里面看到的都是循环体为sum=sum+i然后再是i++,按照这种方法我把i等于0和1都带进去算了发现结果都一样,那是不是说它们的区别就只在于循环的次数上面啊?
2017-05-24 回复 有任何疑惑可以回复我~
#3

后会无期_ 提问者 回复 齐天大圣只有一个

sum=sum+i;i++;这两句的前后顺序改变的话是会不一样的,主要区别在于第一次和最后一次循环时累加的起始值和结束值不同,是先计算再自增还是先自增再计算,一个是0加到100,一个是1加到101。
2017-06-12 回复 有任何疑惑可以回复我~

看错了,是5151,多了101,加多了,应该把i起始值改为1,或者去掉循环条件里的等于号。

0 回复 有任何疑惑可以回复我~
#1

后会无期_ 提问者

起始值改为1就变成2+3+4+......+100+101=5150了
2017-05-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

计算100以内整数的和,这样算出来是5051多了1为什么呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信