int main(void)
{
int height = 24;
while (height > 23 || height <=0)
{
printf("How tall do you want the tower to be?\n");
height = GetInt();
}
for(int a = 0; a < height; a++)
{
for(int c = a; c<=height; c++)
{
printf(" ");
}
for(int b = height - a; b<=height; b++)
{
printf("#");
}
printf("\n");
}
}
所以,我要做的是有一个与终端窗口左边缘对齐的塔。但是出于某种原因,这会在“最后一行”(塔底)的开头产生两个额外的空格。甚至更奇怪,当我用笔和纸坐下并手动运行程序时,我显示第一行应该有一些空格,等于“高度”+ 1,后面跟着一个“#”然后是一个新行,然后是一个等于“height”的空格,后跟两个“#”,依此类推。为什么我的代码不是那样评估的,而且我的两个额外空格是什么?对不起的解释很抱歉。
答案 0 :(得分:4)
这是因为您在每行的开头打印height + 1
,而您想打印height-1
个空格。
更改您的条件:
for(int c = a; c<=height; c++)
到
for(int c = a; c<height-1; c++)