用C程序编写一个程序,打印星形正方形

在学习 C 语言的过程中,for 循环是非常基础且重要的知识点。今天我们用一个简单的例子——打印矩形,来深入理解嵌套循环的执行过程,并结合时间复杂度与空间复杂度,帮你从算法思维角度理解它。
🎯 目标
使用 C 语言循环语句,在控制台输出一个5行5列的矩形星号图案:
*****
*****
*****
*****
*****
📄 详细代码
#include <stdio.h>
int main() {
int row, column; // 定义行和列两个变量
int row_length = 5; // 总行数
int column_length = 5; // 每行的星号数量
for (row = 1; row <= row_length; row++) { // 外层循环控制行
for (column = 1; column <= column_length; column++) { // 内层循环控制每行的列
printf("*"); // 每次打印一个星号
}
printf("\n"); // 每打印完一行,换行
}
return 0;
}
📊 运行结果
*****
*****
*****
*****
*****
⚙️ 代码解析
- 外层循环(行):
- 从
row = 1到row = 5,共执行 5次。
- 从
- 内层循环(列):
- 每当执行一次外层循环,内层循环就完整执行一次,从
column = 1到column = 5,每次都输出一个星号,共 5次。
- 每当执行一次外层循环,内层循环就完整执行一次,从
- 换行:
- 每次内层循环结束后,执行一次
printf("\n");换行。
- 每次内层循环结束后,执行一次
⏳ 时间复杂度分析
- 外层循环执行
row_length次。 - 每次外层循环,内层循环执行
column_length次。 - 因此,总的执行次数为:
java
复制编辑
row_length × column_length = 5 × 5 = 25 次
- 时间复杂度:
O(row_length×column_length)=O(n2) O(\text{row\_length} \times \text{column\_length}) = O(n^2) O(row_length×column_length)=O(n2)
如果我们认为行数与列数相同(即 n),可以简化为 O(n²)。
💾 空间复杂度分析
- 只使用了固定数量的变量(
row、column、row_length、column_length)。 - 无论矩形多大,占用内存不会随着输入规模变化而变化。
- 空间复杂度:
O(1) O(1) O(1)
📌 总结
| 项目 | 分析 |
|---|---|
| 运行结果 | 5行5列矩形 |
| 时间复杂度 | O(n²) |
| 空间复杂度 | O(1) |
| 使用的知识点 | 嵌套 for 循环 |
🚀 思考延伸
- 如果要打印矩形框而非实心矩形,代码应该如何修改?
- 如果要支持动态输入行列呢?
这些问题都可以帮助你进一步深入理解循环与算法优化。

481

被折叠的 条评论
为什么被折叠?



