全部问题 > 当前问题

这个为什么不是输出1到100的和?而是 101??

#include<stdio.h>

main()

{

int i=1;

while(i<=100)

{

i=i+1;

i++;

}

printf("和为%d\n",i);

}

这个为什么不是输出1到100的和?而是 101??


匿名课官 2015-11-21 20:48:33

共 5 个回答

嘿嘿大人 2015-11-21 21:01:41

因为你始终是在对i进行操作,当i=101的时候跳出while循环,所以输出i肯定是101咯;修改如下:

#include<stdio.h>


main()


{


int i=1,s=0;


while(i<=100)


{


s+=i;


i++;



}


printf("和为%d\n",s);


}


匿名课官 2015-11-21 21:30:20

必须要再定义一个变量吗?

i=i+1;

i++;


为啥不可以累加到100?

匿名课官 2015-11-21 21:30:41

回复 嘿嘿大人

必须要再定义一个变量吗?

i=i+1;

i++;


为啥不可以累加到100?


嘿嘿大人 2015-11-21 21:33:21

回复 匿名课官:必须再定义一个,因为你while循环的条件是i<=100,你把所有的都叠加到了i上,当i加到了101的时候就会跳出循环根本就不会往下面执行了

嘿嘿大人 2015-11-21 21:35:28

回复 匿名课官

给你举个例子;

当i=99的时候,按照你的语句执行

i=i+1也就是i=99+1=100

然后i++,i=101;

然后返回到while(i<=100),这是i=101,明显是不成立的,所以跳出循环执行printf("和为%d\n",i);输出了i的值也就是101

问题来自: while循环和do循环