【问题标题】:unable to identify the problem with this code无法识别此代码的问题
【发布时间】:2021-10-29 21:22:39
【问题描述】:

我正在尝试从 1 打印到 21。我使用了 while 循环,但它运行无限。

 #include<stdio.h>
    int main(){
       int i=0;
       while(i<20)
         printf(":%d",i+1);
    return 0;
    }

【问题讨论】:

  • 你有循环条件i &lt; 20,但你没有在循环内修改i。循环内没有分配给i。所以i 永远不会从0 改变它的值,这从输出中应该很清楚。也许您应该改用for 循环?
  • ii 永不改变。
  • 你的没有增加。
  • 您需要在每次迭代时增加i 的值。否则,循环将运行无限次。

标签: c loops while-loop infinite-loop


【解决方案1】:

i+1 不修改变量 i。此表达式将仅显示 i+1 的结果。要实际增加变量,请尝试此行。

printf(":%d",++i);

【讨论】:

  • 也许++i 会更合适
【解决方案2】:

如果要打印最多 21 的数字,那么循环的这个条件

while(i<20)

不正确。你至少应该写

while(i<21)

考虑到printf调用中的表达式i + 1

printf(":%d",i+1);

循环是无限的,因为在循环内变量i 没有被更改,并且始终保持等于最初设置的0

int i=0;

你可以这样写循环

int i = 0;

while( i++ < 21 )
{
    printf(":%d", i);
}

或者

while( i < 21 )
{
    printf(":%d", ++i);
}

第一个循环更具可读性。

或者如果你想输出最多 20 的数字,那么循环看起来像

int i = 0;

while( i++ < 20 )
{
    printf(":%d", i);
}

或者

while( i < 20 )
{
    printf(":%d", ++i);
}

【讨论】:

    【解决方案3】:

    您没有增加i 的值,因此不会发生任何事情。这里i增加了1。

    #include<stdio.h>
    int main(){
       int i=0;
       while(i<=20){
           printf(":%d",i+1);
           i++;
       }
       return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-29
      • 1970-01-01
      • 2014-06-26
      • 2016-10-17
      • 2014-01-16
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多