for语句问题!
各位大佬!程序这样写为什么回进入死循环!#include <stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;sum=sum+i,i++;i<=100)
{
printf("%d\n",sum);
}
return 0;
}
而小甲鱼老师写的就不会?
#include <stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;sum=sum+i,i++;i<=100)
{
printf("%d\n",sum);
}
return 0;
}
这个错在哪了? 本帖最后由 临时号 于 2022-6-6 16:16 编辑
都会死循环啊,你确定没有抄错 把i<=100和sum=sum+i,i++掉换位置就不会出错
#include <stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;i<=100;sum=sum+i,i++)
{
printf("%d\n",sum);
}
return 0;
} 临时号 发表于 2022-6-6 16:18
把i
这个结果不对啊!我确定没抄错! zb88448699 发表于 2022-6-6 16:26
这个结果不对啊!我确定没抄错!
你的想法是不是输出从1加到100的结果 #include <stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;sum=sum+i,i++;i<=100)
{
printf("%d\n",sum);
}
return 0;
} 临时号 发表于 2022-6-6 16:28
你的想法是不是输出从1加到100的结果
是啊!但是调换位置后,结果不对了! zb88448699 发表于 2022-6-6 16:33
是啊!但是调换位置后,结果不对了!
#include <stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;i<=101;sum=sum+i,i++)
{
printf("%d\n",sum);
}
return 0;
} 你确定第二种没问题?不如你先说说你的第一种和第二种区别在什么地方
想知道问题在哪的话,只需要重新看一遍for的语法就懂了 本帖最后由 临时号 于 2022-6-6 16:39 编辑
zb88448699 发表于 2022-6-6 16:33
是啊!但是调换位置后,结果不对了!
一开始i初始化是1,所以i<=100的条件表明执行99次,还需要加一次,执行结果也是正确的 本帖最后由 jackz007 于 2022-6-6 17:49 编辑
for(<循环开始前要执行的语句,可以有多句,语句之间用逗号分隔> ; <逻辑表达式,如果此逻辑表达式为真则本次循环继续> ; <每次循环结尾需要执行的语句,可以有多句,语句之间用逗号隔开>)
如果 for 循环的括号内两个分号之间的逻辑表达式缺席(没有写条件),则表示循环条件恒成立,循环成为死循环。 感觉你这个for的条件语句写错了呀。今天刚刚看过了小甲鱼老师的嵌套循环视频课。for语句后面第一个表达式应该是初始值,可以定义i和sum的初始值。第二个表达式应该是循环条件,换一个说法是结束循环的条件。第三个表达式是更新计数器,用来调整i的值。
你抄的两个程序中,第二个判断循环结束的语句采用了sum=sum+i,i++,那么这个条件永远也不会为假(或者说是0),那么就是进入了死循环了。而第三个表达式应该是用来调整i值的,仅仅写了一个要求i<=100,那么这个就意味着i的值一直不变,还是原地循环,仍然要求程序在死循环里转。
估计你把小甲鱼的for抄错了。建议你再核对一遍。 本帖最后由 临时号 于 2022-6-7 23:41 编辑
for循环的结构是for(初始化;条件;每次循环后要执行的语句)
如果照你这样写,sum=sum+i始终不为0,条件始终成立,而每次循环后要执行的语句也没有对变量进行更改,肯定是死循环啊
你for循环的结构写错了,条件和每次循环后要执行的语句写反了
临时号 发表于 2022-6-7 23:38
for循环的结构是for(初始化;条件;每次循环后要执行的语句)
如果照你这样写,sum=sum+i始终不为0,条件始终 ...
{:5_110:} 临时号 发表于 2022-6-6 16:33
谢谢您的讲解!我把打印挪出到for语句外结果就对了!#include <stdio.h>
int main()
{
int i,sum;
for(i=1,sum=0;i<=100;sum=sum+i,i++)
{
}
printf("%d\n",sum);
return 0;
}
页:
[1]