【问题标题】:My nested loop is printing one row less than wanted/expected我的嵌套循环打印的行比想要/预期的少
【发布时间】:2019-08-08 09:47:19
【问题描述】:

我需要提示用户选择 h 并使用 h 打印出每行递增 1 的行数。所以我理解这部分并且我已经嵌套了我的循环但是当我选择 exmp: h= 4 它打印 3 行。我是编程的初学者,并且已经为此烦恼了几天:P

我希望您给我一些提示,如何自己解决这个问题,而不仅仅是获得答案。 谢谢!

for (int i = 0; i < h; i++)
{
          for( int j = 0; j < i; j++)
          {
              printf("#");
          }
     printf("\n");
}
   }

【问题讨论】:

  • 考虑使用调试器,马上就会发现问题

标签: c loops for-loop nested-loops


【解决方案1】:

在第一个循环迭代中,ij 都将采用值 0。第二个循环不会进入,因为 j&lt;i 为 false。

在最后一次迭代中,i 将采用值 h-1,j 将从 0 迭代到 h-2,从而打印 h-1 #s。

考虑将第一个循环更改为以下内容:

for (int i = 0; i <= h; i++)

【讨论】:

  • 我很高兴能帮上忙
【解决方案2】:

外层循环精确地迭代h 次。

但是对于第一次迭代,当i 等于0 时,内部循环被跳过,因为循环的条件

for( int j = 0; j < i; j++)
                ^^^^^

评估为假。

看来你的意思是如下

#include <stdio.h>

int main(void) 
{
    while ( 1 )
    {
        printf( "Enter the height of a pyramid (0 - exit): " );

        unsigned int h;

        if ( scanf( "%u", &h ) != 1 || h == 0 ) break;

        putchar( '\n' );

        for ( unsigned int i = 0; i < h; i++ )
        {
            for ( unsigned int j = 0; j < i + 1; j++)
            {
                printf( "#" );
            }
            putchar( '\n' );
        }

        putchar( '\n' );
    }

    return 0;
}

程序输出可能看起来像

Enter the height of a pyramid (0 - exit): 10

#
##
###
####
#####
######
#######
########
#########
##########

Enter the height of a pyramid (0 - exit): 0

【讨论】:

    猜你喜欢
    • 2018-10-16
    • 2022-08-19
    • 1970-01-01
    • 2023-04-06
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多