如何用C语言实现多个金字塔图案横向并排输出?
解决横向并排打印多个金字塔的问题
你的代码现在是逐个完整输出金字塔,所以会垂直堆叠。要让它们横向并排,得换个逻辑:按行处理,每一行同时打印所有金字塔的对应行内容,最后再换行。
修改后的代码如下:
#include <stdio.h> #include <stdlib.h> int main() { int i, row, space, star, n; scanf("%d", &i); if(i>0 && i<100){ // 外层循环遍历金字塔的每一行,从第1行到第i行 for(row = 1; row<=i; row++){ // 每一行里循环i次,打印i个金字塔的当前行 for(n=1; n<=i; n++){ int mathforspace = i-row; int mathforstar = (2*row)-1; // 打印当前金字塔行的前置空格 for(space=1; space<=mathforspace; space++){ printf(" "); } // 打印当前金字塔行的星号 for(star=1; star<=mathforstar; star++){ printf("*"); } // 每个金字塔之间加一个空格分隔(可选,不加的话会挨在一起) printf(" "); } // 所有金字塔的当前行都打印完后,换行 printf("\n"); } } return 0; }
关键修改说明:
- 把原代码的外层循环(遍历金字塔数量)和中层循环(遍历行)交换顺序,先遍历行,再在每行里遍历所有金字塔
- 每个金字塔的当前行打印完成后,不着急换行,等该行所有金字塔都打印完再统一换行
- 可选:在每个金字塔后加一个空格
printf(" ");,避免多个金字塔挤在一起,视觉效果更清晰
内容的提问来源于stack exchange,提问作者Kuuhaku
相关产品推荐
相关产品推荐

