用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(\"* \");
这个图案案例展示了:
- 如何组合空心和实心效果
 - 使用双空格保持格式对齐
 - 处理最后一行特殊情况的技巧
 - 复杂条件判断与循环的配合使用
 


