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

C语言实现同时打印左半与右半金字塔星号图案

问题分析

你现在写的代码运行后会先输出完整的左对齐直角三角,再输出完整的右对齐直角三角,两个图案上下排布,达不到你要的同一次输出里左右并排的效果。另外代码里还存在两个小问题:一是引入了全程没用到的非标准头文件<conio.h>,二是右半三角的循环外层套了一层无意义的独立花括号,属于冗余写法。

实现思路

要让两个三角左右并排,不需要拆成两个独立的大循环逐块打印,只要把逻辑改成逐行打印即可:每一行里按顺序输出左半三角内容、两个三角的间隔、右半三角内容,整行内容输出完成后再换行,就能得到并排的效果。

修正后的代码
#include <stdio.h>
int main()  
{  
    int i, j, rows;
    // 两个三角之间的间隔宽度,可自行调整
    const int gap = 3;
    printf("Enter a number to define the rows: \n ");
    scanf("%d", &rows);
    printf("\n");

    for (i = 1; i <= rows; ++i)
    {
        // 打印当前行的左半三角星号
        for (j = 1; j <= i; ++j)
        {
            printf("*");
        }
        // 打印两个三角之间的间隔
        for (j = 1; j <= gap; ++j)
        {
            printf(" ");
        }
        // 打印当前行右半三角的前置空格
        for (j = i; j < rows; ++j)
        {
            printf(" ");
        }
        // 打印当前行右半三角的星号
        for (j = 1; j <= i; ++j)
        {
            printf("*");
        }
        // 整行内容打印完成后换行
        printf("\n");
    }
    return 0;
}
运行效果参考

输入行数为5时,输出结果如下:

*    *
**   **
***  ***
**** ****
*********
补充说明
  • 删掉了未使用的<conio.h>头文件,这个头是Windows平台旧编译器专属的非标准库,留着会导致代码在其他编译环境下无法正常编译
  • 去掉了无意义的冗余花括号,代码结构更清晰
  • 如果你不需要两个三角之间留间隔,把gap的值改成0即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:15:32