如何使用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
相关产品推荐
相关产品推荐

