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

来源:4-6 循环结构之while循环

后会无期_

2017-05-14 11:55

#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回答

  • 亿通制卡彩印
    2017-06-12 17:56:17
    已采纳

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

    sum=sum+i;

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



    后会无期_

    非常感谢!

    2017-06-12 23:36:01

    共 1 条回复 >

  • 亿通制卡彩印
    2017-06-12 17:59:40

    完整代码如下:

    #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;

    }


    冀东奇

    你这个也行。

    2017-07-17 10:54:32

    共 1 条回复 >

  • 齐天大圣只有一个
    2017-05-24 11:25:50

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

    后会无期_ 回复齐天大圣只有...

    sum=sum+i;i++;这两句的前后顺序改变的话是会不一样的,主要区别在于第一次和最后一次循环时累加的起始值和结束值不同,是先计算再自增还是先自增再计算,一个是0加到100,一个是1加到101。

    2017-06-12 23:40:28

    共 3 条回复 >

  • 后会无期_
    2017-05-14 12:13:42

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

    后会无期_

    起始值改为1就变成2+3+4+......+100+101=5150了

    2017-05-14 12:20:39

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题