为什么我的循环打印不像我期望从伪代码那样?

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 + 1 ,而您想打印height-1空格。

改变你的状况:

for(int c = a; c<=height; c++)

for(int c = a; c<height-1; c++)
链接地址: http://www.djcxy.com/p/77487.html

上一篇: Why isn't my for loop printing like I would expect from my pseudocode?

下一篇: Junit of equals method