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

如何用C语言水平并排绘制4种不同的星号三角形?

水平并排绘制4种三角形的C代码修改方案

原代码仅能逐行绘制单个左对齐正三角形,要实现水平并排4种不同三角形(左对齐正三角、右对齐正三角、左对齐倒三角、右对齐倒三角),核心思路是按行同步生成四个三角形的当前行内容,而非依次绘制完整的单个三角形。以下是修改后的代码及说明:

修改后的完整代码

#include <stdio.h>

int main(void) 
{       
    while (1) 
    { 
        printf("Enter a number (0 to exit): "); 
        
        int n; 
        // 修正原代码格式符不匹配问题:n为int类型,使用%d而非%u
        if ((scanf("%d", &n) != 1) || (n <= 0)) break; 
        
        putchar('\n');
        // 按行循环,每行同步生成四个三角形的内容
        for (int i = 0; i < n; i++) 
        {
            // 1. 左对齐正三角形:第i行输出i+1个*
            for (int j = 0; j < i + 1; j++) printf("*");
            // 补空格+分隔符,保证与下一个三角形对齐
            for (int j = 0; j < n - i - 1 + 2; j++) printf(" ");

            // 2. 右对齐正三角形:先补n-i-1个空格,再输出i+1个*
            for (int j = 0; j < n - i - 1; j++) printf(" ");
            for (int j = 0; j < i + 1; j++) printf("*");
            printf("  ");

            // 3. 左对齐倒三角形:第i行输出n-i个*
            for (int j = 0; j < n - i; j++) printf("*");
            printf("  ");

            // 4. 右对齐倒三角形:先补i个空格,再输出n-i个*
            for (int j = 0; j < i; j++) printf(" ");
            for (int j = 0; j < n - i; j++) printf("*");

            putchar('\n');
        }
        putchar('\n');
    }
    return 0;
}

关键修改说明

  1. 同步行绘制逻辑:外层循环控制三角形的行数,每行内依次生成四个三角形的当前行内容,确保四个图形在水平方向对齐。
  2. 修复原代码输入问题:原代码中scanf("%u", &n)存在格式符与变量类型不匹配的问题,改为%d,同时增加n<=0的判断避免非法输入。
  3. 四种三角形实现逻辑:
    • 左对齐正三角:每行从左到右输出i+1个*
    • 右对齐正三角:先填充n-i-1个空格,再输出i+1个*
    • 左对齐倒三角:每行输出n-i个*
    • 右对齐倒三角:先填充i个空格,再输出n-i个*
  4. 分隔与对齐处理:每个三角形之间用2个空格分隔,同时通过补空格保证每个三角形的宽度统一为输入的n,确保整体布局整齐。

示例输出(输入n=4时)

*      *    ****    ****
**     **   ***     ***
***    ***  **      **
****   **** *       *

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:25:25