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

C语言打印金字塔异常:首行空白、输出行数不符

解决金字塔打印首行空白、行数不足的问题

问题原因

你的代码核心问题出在循环的起始值和条件设置上:

  • 外层循环i从0开始,当i=0时,内层循环j < 0的条件不成立,首行不会打印任何#,直接输出空行。
  • 外层循环执行n次(i从0到n-1),但每次打印的#数量等于i的值,最后一行只有n-1个#,比预期少1个,整体看起来少了一行有效内容。

修改方案

有两种简单的修正方式,任选其一即可:

方式一:调整外层循环范围

把外层循环的起始值改为1,结束条件改为i <= n,让i从1遍历到n,正好对应每行需要打印的#数量:

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

int main(void)
{
    int n, i, j;
    do
    {
        n = get_int("height: ");
    }
    while (n < 1 || n > 8);
    
    for (i = 1; i <= n; i++) 
    {
        for (j = 0; j < i; j++) 
        {
            printf("#");
        }
        printf("\n");
    }
}

方式二:调整内层循环条件

保持外层循环不变,把内层循环的条件改为j < i + 1,这样即使i=0时,也会执行1次循环,打印1个#:

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

int main(void)
{
    int n, i, j;
    do
    {
        n = get_int("height: ");
    }
    while (n < 1 || n > 8);
    
    for (i = 0; i < n; i++) 
    {
        for (j = 0; j < i + 1; j++) 
        {
            printf("#");
        }
        printf("\n");
    }
}

验证结果

输入高度5时,两种修改后的代码都会输出:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:25:20