CS 50-第1套马里奥计划

时间:2014-05-30 09:17:15

标签: c loops debugging cs50

问题集要求我们使用哈希创建一个半金字塔。这是一个关于它应该如何显示的图像的链接 -

enter image description here

我理解并编写了程序,直到打印空格(我已经用" _&#34替换;只是为了我可以测试它的前半部分。

然而,当我尝试运行我的程序时,它并没有超出do-while循环。换句话说,它一直在问我金字塔的高度,似乎根本没有运行for循环。我尝试了多种方法,但这个问题似乎仍然存在。

任何帮助将不胜感激!

以下是我的代码 -

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

int main(void)

{
    int height; 

    do 
    {
        printf("Enter the height of the pyramid: ");
        height = GetInt(); 
    }
    while (height > 0 || height < 24); 

    for (int rows = 1; rows <= height, rows++) 
    {
        for (int spaces = height - rows; spaces > 0; spaces--)
        { 
            printf("_");
        }
    }
    return 0;
}

运行此程序会产生以下输出 -

Enter the height of the pyramid: 11
Enter the height of the pyramid: 1231
Enter the height of the pyramid: aawfaf
Retry: 12
Enter the height of the pyramid: 

2 个答案:

答案 0 :(得分:3)

你的do / while循环条件不正确 - 更改:

do {
    ...
} while (height > 0 || height < 24); 

要么:

do {
    ...
} while (height <= 0 || height >= 24); 

或:

do {
    ...
} while (!(height > 0 && height < 24)); 

(无论你认为哪个更具可读性/直观性)。

答案 1 :(得分:-2)

这是更简单的

         for(int i=0;i<8;i++) {

             for(int j=0;j < (8-i); j++) 
             {

                 System.out.print(" ");
             }
            for(int k=0;k<=(i+1);k++)
            {

                System.out.print("#");
            }
            System.out.println();  
        }