> 技术文档 > 用C程序编写一个程序,打印星号直角三角形_c语言用星形左对齐等腰三角形

用C程序编写一个程序,打印星号直角三角形_c语言用星形左对齐等腰三角形

在这里插入图片描述

/*打印如下:********************************************************/

解题思路详解

1. 问题分析

题目要求打印一个10行的星号(*)图案,其特点是:

  • 第1行:1个星号
  • 第2行:2个星号
  • 第10行:10个星号

最终形成一个右对齐的直角三角形星号图案。

2. 关键发现

通过观察输出样例,可以发现两个重要规律:

  1. 总行数固定为10行
  2. 每行的星号数量 = 当前行号
3. 解决方案设计

需要使用嵌套循环结构:

  • 外层循环:控制行数(从1到10)
  • 内层循环:控制每行星号的打印数量
4. 变量定义

c

int i; // 外层循环变量,控制行号(1-10)int j; // 内层循环变量,控制每行星号数量
5. 核心算法
  1. 外层循环(行控制):
    • 从i=1开始,到i=10结束
    • 每次循环代表处理一行
  2. 内层循环(星号打印):
    • 循环次数由当前行号i决定
    • 即j从1循环到i(第i行就打印i次)
  3. 换行处理:
    • 每完成一行的星号打印后输出换行符
6. 代码执行流程

以第3行为例演示执行过程:

  1. i=3(第三行)
  2. 进入内层循环:
    • j=1:打印*
    • j=2:打印*
    • j=3:打印*
  3. 退出内层循环
  4. 打印换行符
  5. 输出结果:***
7. 复杂度分析
  • 时间复杂度:O(n²)
    • 总打印次数 = 1+2+…+10 = 55次
    • 通用公式:n(n+1)/2
  • 空间复杂度:O(1)
    • 仅使用固定数量的变量
8. 代码实现
#include int main(){int i;int j;for (i = 1; i <= 10; i++){for (j = 1; j <= i; j++){printf(\"*\");}printf(\"\\n\");}return 0;}
9. 扩展思考
  1. 如果要打印倒三角形:
 for(i=10; i>=1; i--)
  1. 如果要添加空格形成金字塔:
 for(k=1; k<=10-i; k++) printf(\" \");
10. 总结

这个解决方案的关键在于:

  • 使用外层循环控制行数
  • 让内层循环次数与行号建立直接关联
  • 通过简单的嵌套循环结构实现图案打印
  • 清晰的变量命名和缩进增强代码可读性

该模式可以推广到各种类似的行列图案打印问题中,只需调整循环条件和打印内容即可。