用C程序编写一个程序,打印空心金字塔+实心底边_c语言,打印的文字转成虚线的logo形式
一、问题分析
需要打印一个10行的星号图案,具有以下特征:
- 第1-9行:
- 每行开头递减的空格数量(实现右对齐)
- 只在每行的首尾位置打印星号(形成空心效果)
- 中间部分用双空格填充
- 第10行:
- 打印10个连续的\"* \"(实心底边)
二、关键规律
- 行号(i):1~10
- 前置空格 = 10 - i
- 第1行:9空格
- 第2行:8空格
- …
- 第10行:0空格
- 星号打印规则:
- 前9行:当
j==1
(首位置)或j==i
(尾位置)时打印\"* \" - 第10行:所有位置都打印\"* \"
- 前9行:当
三、代码实现解析
#include int main(){ int i, j; // 外层循环控制行数(1~10) for (i = 1; i <= 10; i++) { // 打印前置空格(实现右对齐) for (j = 0; j < 10 - i; j++) { printf(\" \"); } // 打印星号或空格 for (j = 1; j <= i; j++) { if (i == 10) // 第10行全星号 { printf(\"* \"); } else if (j == 1 || j == i) // 首尾位置 { printf(\"* \"); } else // 中间位置 { printf(\" \"); // 双空格 } } printf(\"\\n\"); // 换行 } return 0;}
四、执行过程示例(以i=3为例)
- 前置空格:10-3=7
- 打印:\" \"(7空格)
- 内容打印:
- j=1 → 打印\"* \"
- j=2 → 打印\" \"(双空格)
- j=3 → 打印\"* \"
- 完整行输出:
* *
(7空格 + * + 双空格 + *)
五、完整输出结果
* * * * * * * * * * * * * * * * * * * * * * * * * * *
六、图案特征说明
- 空心部分(1-9行):
- 左右两侧星号形成金字塔轮廓
- 中间用双空格保持对齐
- 实心底边(第10行):
- 连续的\"* \"形成实线
- 对齐效果:
- 所有星号完美右对齐
- 双空格确保星号间距一致
七、复杂度分析
八、变形建议
- 单空格版本:
printf(\" \"); // 改为单空格
- 字母边框:
printf(\"%c \", \'A\'+j-1); // 用字母替代星号
- 双空心线:
else if(j==2 || j==i-1) printf(\"* \");
这个图案案例展示了:
- 如何组合空心和实心效果
- 使用双空格保持格式对齐
- 处理最后一行特殊情况的技巧
- 复杂条件判断与循环的配合使用