CS50马里奥,代码将编译,但不会做任何事情

CS50马里奥,代码将编译,但不会做任何事情,c,cs50,C,Cs50,我对编程非常陌生,我正在努力完成cs50课程,而不只是复制别人的代码,也不试图理解为什么我的代码不起作用。目前正在进行第一个C赋值,以创建一个由#组成的金字塔,但是,当我运行此代码时,我遇到了一些问题。它编译得很好,但当我运行它时,似乎什么也没发生 有人能指出为什么这不起作用和/或如何解决这个问题吗 #include <stdio.h> #include <cs50.h> int main(void) { int spaces; int bricks; int n

我对编程非常陌生,我正在努力完成cs50课程,而不只是复制别人的代码,也不试图理解为什么我的代码不起作用。目前正在进行第一个C赋值,以创建一个由
#
组成的金字塔,但是,当我运行此代码时,我遇到了一些问题。它编译得很好,但当我运行它时,似乎什么也没发生

有人能指出为什么这不起作用和/或如何解决这个问题吗

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

int main(void)
{
int spaces;
int bricks;
   int n;
    do
    {
        n = get_int("Height: ");
    }
    while (n < 1);
    {

    for ( int i = 0; i < n; i++)
{
      for (spaces = (i - 1); spaces >= 0; spaces++)
      {
            printf(" ");
      }
      for (bricks = 1; bricks <= (i + 1); bricks++)
      {
            printf("#"); 
      }
        printf("\n");  
}
return 0;
    }
}
#包括
#包括
内部主(空)
{
int空间;
整块砖;
int n;
做
{
n=获取整数(“高度:”);
}
n<1;
{
对于(int i=0;i=0;空格++)
{
printf(“”);
}

for(bricks=1;bricksfor
的第一个“内部”
循环将“永远”运行(直到发生整数溢出),如果它全部运行1。这是因为,如果
空格的初始值
i-1
)大于或等于零,它将保持不变(因为在循环结束时增加它).相反,您需要减少
空格


此外,对于
循环,您的第二个“内部”
将只打印棱锥体的一侧。从
bricks更改终止条件以修复缩进。感谢您似乎已经解决了这个问题。因此-,就是减量函数(-1)。如果我只想接受特定的高度范围,如0@WilliamColeA高度(n)设置为0几乎没有意义。但是可以将
while
条件更改为
while(n<1 | | n>10)
以将高度范围限制为
1