c语言1加到100的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 01:50:55
刚开始自学,翻了没两页书就遇到麻烦了,高手帮忙
#include"stdio.h"
main()
{ int s,i;
s=0;
for(i=1;i<=100;i++)
s=s+i;
printf("%d",s);
}
这个有问题吗?
为什么运行之后总出现101呢?
for(i=1;i<=100;i++)
我在这句后面加了个分号了,我去掉之后就是5050了
可是为什么会这样呢?这里的分号代表什么意思?

for语句 应该是到后面的第一个分号 打止的
所以for循环 只运行for这一句 for(i=1;i<=100;i++)
所以把它加到101后在运行后面的

printf("%d",s)这条语句中,你检查下是不是把s错打成i了哦
看过你修改问题之后我知道为什么咯
加分号的话,那是个空循环,i一直自加到101,自加过程中什么也不做,然后循环结束后执行s=0+101=101所以输出101
不加分号的话,i每自加一次,都会执行s=s+i这条语句,就能输出5050这个正确答案
不知道说清楚没有。。

代码没错
printf("%d",i);//可能你写成这样了

编译器的关系吧!这题建议用数列做,速度上N倍增长:
(1+100)*100/2

加分号 等价于
for(i=1;i<=100;i++)
{}
一个空循环 循环结束后才执行 后面的 s=s+i;
所以是101
因为i自加到101时才 跳出循环

for(i=1;i<=100;i++) //A
s=s+i; //B
每一个循环都可以看成是一个复合语句,当满足循环条件即执行B语句 或语句块。如果你在for后加分号,它可以被写成这样:
for(i=1;i<=100;i++)
;
s=s+i;
等价于
for(i=1;i<=100;i++)
{
;
}
s=s+i;
这样写你就能明白了吧!计数器i在循环语句中除了一直在自增之外什么也没做,等i到了101,循环结束,s初始值为0,自然也只能输出101了。