You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50作业问题:左对齐金字塔重复打印的修复方案咨询

修复左对齐金字塔重复打印的问题

问题根源在于main函数里的嵌套循环:你在外层循环(j从0到n-1)里又套了一层i循环,这导致print_row被调用了n×n次。输入高度3时,就是3×3=9次调用,相当于完整打印了3遍金字塔。

修复后的main函数代码

int main(void)
{
    int n = get_height();

    // 只需要一层循环,每次循环对应金字塔的一行
    for (int j = 0; j < n; j++)
    {
        // 第j行(从0开始)的空格数是n - j - 1,砖块数是j + 1
        print_row(n - j - 1, j + 1);
    }
}

修复逻辑说明

  • 去掉内层的i循环,因为我们只需要为金字塔的每一行调用一次print_row
  • 对于第j行(从0开始计数):
    • 空格数 = 总高度n - 当前行的砖块数 - 1 → n - j - 1
    • 砖块数 = 当前行的行数(从1开始)→ j + 1
  • 这样循环n次,刚好打印出n行,对应高度为n的左对齐金字塔

你的get_height和print_row函数是没问题的,只需要修改main函数里的循环结构就行。

内容的提问来源于stack exchange,提问作者r0uthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:10:12