用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 <stdio.h>
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. 总结

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值