当我运行此代码时,我确实得到了右对齐金字塔的所需结果,该结果因用户输入高度而异。但是,当我运行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");
}
}
答案 0 :(得分:1)
你确定你得到了合适的空间输出吗?我记得Mario.c应该输出一个右对齐的金字塔,但左下方与终端侧对齐。由于它是空的空间,可能很难分辨。我建议通过在其位置打印一个角色来测试它
例如
for (space = 0; space < (height - row); space++)
{
printf("b");
}
这应该让你知道你需要改变什么。