> 技术文档 > 用C程序编写一个程序,打印空心金字塔+实心底边_c语言,打印的文字转成虚线的logo形式

用C程序编写一个程序,打印空心金字塔+实心底边_c语言,打印的文字转成虚线的logo形式

在这里插入图片描述

一、问题分析

需要打印一个10行的星号图案,具有以下特征:

  1. 第1-9行
    • 每行开头递减的空格数量(实现右对齐)
    • 只在每行的首尾位置打印星号(形成空心效果)
    • 中间部分用双空格填充
  2. 第10行
    • 打印10个连续的\"* \"(实心底边)
二、关键规律
  1. 行号(i):1~10
  2. 前置空格 = 10 - i
    • 第1行:9空格
    • 第2行:8空格
    • 第10行:0空格
  3. 星号打印规则
    • 前9行:当 j==1(首位置)或 j==i(尾位置)时打印\"* \"
    • 第10行:所有位置都打印\"* \"
三、代码实现解析
#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为例)
  1. 前置空格:10-3=7
    • 打印:\" \"(7空格)
  2. 内容打印
    • j=1 → 打印\"* \"
    • j=2 → 打印\" \"(双空格)
    • j=3 → 打印\"* \"
  3. 完整行输出
    • * *(7空格 + * + 双空格 + *)
五、完整输出结果
 * * * * * * * * * * * *  * * * *  * * * * * * * * * * * 
六、图案特征说明
  1. 空心部分(1-9行):
    • 左右两侧星号形成金字塔轮廓
    • 中间用双空格保持对齐
  2. 实心底边(第10行):
    • 连续的\"* \"形成实线
  3. 对齐效果
    • 所有星号完美右对齐
    • 双空格确保星号间距一致
七、复杂度分析
项目 说明 时间复杂度 O(n²)(精确操作次数:155次) 空间复杂度 O(1)(仅用2个整型变量)
八、变形建议
  1. 单空格版本
 printf(\" \"); // 改为单空格
  1. 字母边框
 printf(\"%c \", \'A\'+j-1); // 用字母替代星号
  1. 双空心线
 else if(j==2 || j==i-1) printf(\"* \");

这个图案案例展示了:

  1. 如何组合空心和实心效果
  2. 使用双空格保持格式对齐
  3. 处理最后一行特殊情况的技巧
  4. 复杂条件判断与循环的配合使用