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

如何使用C语言for循环绘制等腰三角形?代码实现问题求助

实现思路

你提到的每行调整坐标边界的思路完全可行,具体逻辑如下:

  • 等腰三角形每行的左右边界分别为 roof - rows 和 roof + rows,其中rows是当前屋顶的行号,从0开始计数
  • 每行只要在上述两个坐标位置输出X即可实现空心等腰三角形,若需要实心三角形,只需判断坐标落在两个边界之间就输出X
  • 删掉原有屋顶逻辑中重复定义col的冗余代码、空循环和错误的斜杠输出逻辑即可

修正后完整代码

#include <stdio.h>
#define HEIGHT 5
#define WIDTH 7

int main () {
    int roof = WIDTH / 2;
    // 绘制屋顶(空心等腰三角形)
    for (int rows = 0; rows <= roof; rows++) {
        for(int col = 0; col < WIDTH; col++) {
            // 每行左右两个端点输出X
            if(col == roof - rows || col == roof + rows) {
                putchar('X');
            } else {
                putchar(' ');
            }
        }
        putchar('\n');
    }
    // 绘制下方空心矩形(原有逻辑保留,无需修改)
    for (int rows = 0; rows < HEIGHT; rows++) {
        for(int col = 0; col < WIDTH; col++) {
            if(rows == 0 || rows == HEIGHT - 1 ) {
                putchar('X');
            } else {
                if(col == 0 || col == WIDTH - 1) {
                    putchar('X');
                } else {
                    putchar(' ');
                }
            }
        }
        putchar('\n');
    }
    return 0;
}

运行效果(WIDTH=7、HEIGHT=5时)

X   
  X X  
 X   X 
X     X
XXXXXXX
X     X
X     X
X     X
XXXXXXX

如果需要实心屋顶,只需把屋顶的判断条件改成if(col >= roof - rows && col <= roof + rows)即可,实心效果如下:

X   
  XXX  
 XXXXX 
XXXXXXX
XXXXXXX
X     X
X     X
X     X
XXXXXXX

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:24:03