zb88448699 发表于 2022-6-6 16:00:59

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:15:31

本帖最后由 临时号 于 2022-6-6 16:16 编辑

都会死循环啊,你确定没有抄错

临时号 发表于 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;
}

zb88448699 发表于 2022-6-6 16:26:22

临时号 发表于 2022-6-6 16:18
把i

这个结果不对啊!我确定没抄错!

临时号 发表于 2022-6-6 16:28:38

zb88448699 发表于 2022-6-6 16:26
这个结果不对啊!我确定没抄错!

你的想法是不是输出从1加到100的结果

zb88448699 发表于 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;
}

zb88448699 发表于 2022-6-6 16:33:19

临时号 发表于 2022-6-6 16:28
你的想法是不是输出从1加到100的结果

是啊!但是调换位置后,结果不对了!

临时号 发表于 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;
}

风车呼呼呼 发表于 2022-6-6 16:34:15

你确定第二种没问题?不如你先说说你的第一种和第二种区别在什么地方
想知道问题在哪的话,只需要重新看一遍for的语法就懂了

临时号 发表于 2022-6-6 16:35:19

本帖最后由 临时号 于 2022-6-6 16:39 编辑

zb88448699 发表于 2022-6-6 16:33
是啊!但是调换位置后,结果不对了!

一开始i初始化是1,所以i<=100的条件表明执行99次,还需要加一次,执行结果也是正确的

jackz007 发表于 2022-6-6 17:38:29

本帖最后由 jackz007 于 2022-6-6 17:49 编辑

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

      如果 for 循环的括号内两个分号之间的逻辑表达式缺席(没有写条件),则表示循环条件恒成立,循环成为死循环。

顶级太阳 发表于 2022-6-7 21:37:54

感觉你这个for的条件语句写错了呀。今天刚刚看过了小甲鱼老师的嵌套循环视频课。for语句后面第一个表达式应该是初始值,可以定义i和sum的初始值。第二个表达式应该是循环条件,换一个说法是结束循环的条件。第三个表达式是更新计数器,用来调整i的值。
你抄的两个程序中,第二个判断循环结束的语句采用了sum=sum+i,i++,那么这个条件永远也不会为假(或者说是0),那么就是进入了死循环了。而第三个表达式应该是用来调整i值的,仅仅写了一个要求i<=100,那么这个就意味着i的值一直不变,还是原地循环,仍然要求程序在死循环里转。
估计你把小甲鱼的for抄错了。建议你再核对一遍。

临时号 发表于 2022-6-7 23:38:59

本帖最后由 临时号 于 2022-6-7 23:41 编辑

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

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

你for循环的结构写错了,条件和每次循环后要执行的语句写反了

jhanker 发表于 2022-6-8 14:58:26

临时号 发表于 2022-6-7 23:38
for循环的结构是for(初始化;条件;每次循环后要执行的语句)

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

{:5_110:}

zb88448699 发表于 2022-6-8 21:25:12

临时号 发表于 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]
查看完整版本: for语句问题!