鱼C论坛

 找回密码
 立即注册
查看: 1556|回复: 14

[已解决]for语句问题!

[复制链接]
发表于 2022-6-6 16:00:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬!程序这样写为什么回进入死循环!
#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-7 21:37:54
感觉你这个for的条件语句写错了呀。今天刚刚看过了小甲鱼老师的嵌套循环视频课。for语句后面第一个表达式应该是初始值,可以定义i和sum的初始值。第二个表达式应该是循环条件,换一个说法是结束循环的条件。第三个表达式是更新计数器,用来调整i的值。
你抄的两个程序中,第二个判断循环结束的语句采用了sum=sum+i,i++,那么这个条件永远也不会为假(或者说是0),那么就是进入了死循环了。而第三个表达式应该是用来调整i值的,仅仅写了一个要求i<=100,那么这个就意味着i的值一直不变,还是原地循环,仍然要求程序在死循环里转。
估计你把小甲鱼的for抄错了。建议你再核对一遍。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-6 16:15:31 | 显示全部楼层
本帖最后由 临时号 于 2022-6-6 16:16 编辑

都会死循环啊,你确定没有抄错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 16:18:22 | 显示全部楼层
把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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-6 16:26:22 | 显示全部楼层

这个结果不对啊!我确定没抄错!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 16:28:38 | 显示全部楼层
zb88448699 发表于 2022-6-6 16:26
这个结果不对啊!我确定没抄错!

你的想法是不是输出从1加到100的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-6 16:31:42 | 显示全部楼层
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-6 16:33:19 | 显示全部楼层
临时号 发表于 2022-6-6 16:28
你的想法是不是输出从1加到100的结果

是啊!但是调换位置后,结果不对了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 16:33:45 | 显示全部楼层
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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 16:34:15 | 显示全部楼层
你确定第二种没问题?不如你先说说你的第一种和第二种区别在什么地方
想知道问题在哪的话,只需要重新看一遍for的语法就懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 16:35:19 | 显示全部楼层
本帖最后由 临时号 于 2022-6-6 16:39 编辑
zb88448699 发表于 2022-6-6 16:33
是啊!但是调换位置后,结果不对了!


一开始i初始化是1,所以i<=100的条件表明执行99次,还需要加一次,执行结果也是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-6 17:38:29 | 显示全部楼层
本帖最后由 jackz007 于 2022-6-6 17:49 编辑

        for(<循环开始前要执行的语句,可以有多句,语句之间用逗号分隔> ; <逻辑表达式,如果此逻辑表达式为真则本次循环继续> ; <每次循环结尾需要执行的语句,可以有多句,语句之间用逗号隔开>)

        如果 for 循环的括号内两个分号之间的逻辑表达式缺席(没有写条件),则表示循环条件恒成立,循环成为死循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-7 21:37:54 | 显示全部楼层    本楼为最佳答案   
感觉你这个for的条件语句写错了呀。今天刚刚看过了小甲鱼老师的嵌套循环视频课。for语句后面第一个表达式应该是初始值,可以定义i和sum的初始值。第二个表达式应该是循环条件,换一个说法是结束循环的条件。第三个表达式是更新计数器,用来调整i的值。
你抄的两个程序中,第二个判断循环结束的语句采用了sum=sum+i,i++,那么这个条件永远也不会为假(或者说是0),那么就是进入了死循环了。而第三个表达式应该是用来调整i值的,仅仅写了一个要求i<=100,那么这个就意味着i的值一直不变,还是原地循环,仍然要求程序在死循环里转。
估计你把小甲鱼的for抄错了。建议你再核对一遍。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-7 23:38:59 | 显示全部楼层
本帖最后由 临时号 于 2022-6-7 23:41 编辑

for循环的结构是for(初始化;条件;每次循环后要执行的语句)

如果照你这样写,sum=sum+i始终不为0,条件始终成立,而每次循环后要执行的语句也没有对变量进行更改,肯定是死循环啊

你for循环的结构写错了,条件和每次循环后要执行的语句写反了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-8 14:58:26 | 显示全部楼层
临时号 发表于 2022-6-7 23:38
for循环的结构是for(初始化;条件;每次循环后要执行的语句)

如果照你这样写,sum=sum+i始终不为0,条件始终 ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-8 21:25:12 | 显示全部楼层

谢谢您的讲解!我把打印挪出到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;
 } 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 12:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表