无法解决Mario问题的右对齐金字塔问题

时间:2019-07-31 05:38:02

标签: c cs50

我目前正在CS50的第1周处理Mario问题(较不舒服)。到目前为止,我可以打印金字塔的哈希值,但是在用空格正确调整它方面遇到了麻烦。有人能够指出我要去哪里哪里吗?提前非常感谢您。

#include <cs50.h>
#include <stdio.h>

int main(void)
{
int hashes;
int space;
int height;

do 
{
    height = get_int("height: ");
}
while (height < 0 || height > 5);
{
    for (int i = 0; i <= height; i++)
    {
        for (space = (height - 1); space <= 0; space++)
        {
            printf(" ");
        }

        for (hashes = 1; hashes <= i; hashes++)
        {
            printf("#");
        }
        printf("\n");

    }


  }

}

1 个答案:

答案 0 :(得分:0)

正如Antti所说,在您的“空间”循环中,在i的第一次迭代(因此i = 0)上的height - 1永远不会<或=到0(除非将高度设置为1)。

如果将高度设置为5,应该在第一行的#之前打印多少空格?是4吗?

因此,如果在第一行上int Space = 0,height = 5,那么哪个循环代码将获得4的结果?但是考虑在下一次Space迭代中,如果int Space = 1,Height = 5,那么哪个循环代码可以达到3的结果?

 for (space = 0; "this needs to to = 4" ; space++)
        {
            printf(" ");
        }
 for (space = 1; "this needs to to = 3" ; space++)
        {
            printf(" ");
        }

“ spaces”的值在每次迭代中都会更改,您可以使用吗?