【问题标题】: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】:
在第一个循环迭代中,i 和 j 都将采用值 0。第二个循环不会进入,因为 j<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