CS50 Mario Pyramid - 代码有效,但当我 运行 check50 时我仍然遇到错误

CS50 Mario Pyramid - The code works, but I'm still getting errors when I run check50

当我 运行 这段代码时,我确实得到了右对齐金字塔的期望结果,该金字塔随用户输入的高度而变化。但是,当我 运行 CS50 检查功能时,它告诉我以下内容:

:( 正确处理高度 1 \ 预期输出,但不是 " ##\n"

:( 正确处理高度 2 \ 预期输出,但不是 " ##\n ###\n"

:( 正确处理 23 的高度 \ 预期输出,但不是“ ##\n ...”

:(拒绝24的高度,然后接受2的高度 \ 预期输出,但不是 " ##\n ###\n"

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

int main(void)
{
    int height;
    int row;
    int space;
    int hash;
     // declare variables 
    do 
    {
        printf("Height:\n");
        height = GetInt();
    }
    while (height < 0 || height > 23);

    // build pyaramid if acceptable height entered

    for (row = 0; row < height; row++)
    { 

        for (space = 0; space < (height - row); space++)
        {
            printf(" ");
        }
        for (hash = 0; hash < 2 + row; hash++)
        {    
            printf("#");
        }    
        printf("\n");
    } 

}

您确定 space 的输出正确吗?我记得 Mario.c 应该输出一个右对齐的金字塔,但左下角也与终端侧对齐。可能很难分辨,因为它是空的 space。我建议通过在其位置打印一个字符来测试它

例如

for (space = 0; space < (height - row); space++) { printf("b"); }

这应该让您了解需要更改的内容。