C+基础题目,一个由user决定高度的由#组成的<马里奥的金字塔>

clipboard.png

目的是写出这样的一段儿,输入n,形成n高度的向右对齐的金字塔。
在输入一个有效数字后,我的代码如下:

//create the pyramid
for (row = 1; row <= height; row++)
{
    for (space = (height - row); space > 0; space--)
    {
        printf(" ");
    }
    
    for (hash = (height + 1); hash > 1; hash++)
    {
        printf("#");
    }
    
    printf("\n");
}

其中关于hash数量的语法错了。虽然有正确答案在手,可惜刚学两天根本看不懂我错在哪……
答案在这:

for (all_rows = 1; all_rows <= height; all_rows++) 
{
    for (space = (height - all_rows); space > 0; space--)
    {
        printf(" "); 
    }

    for (hash = 1; hash <= (all_rows + 1); hash++)
    {   
        printf("#"); 
    }

    printf("\n");
}
return 0;

希望大大们能为我解惑…!

阅读 1.8k
1 个回答

height是正整数吧。
hash = (height + 1),所以hash恒大于1。
for (hash = (height + 1); hash > 1; hash++)是个死循环(执行很多次直到hash溢出)。
建议在演算纸上单步执行计算,对比自己的程序和答案,这会大有帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进