C++打印星号直角三角形详解及代码演示
好的,这是一个非常基础的C++编程题目,用来练习循环和输出控制。我来为你提供完整的解决方案和详细的解释。 ## 📝 题目分析 我们需要根据输入的行数 `n`,打印一个直角三角形图案。这个图案的规则是: - **第1行**:1个星号 `*` - **第2行**:2个星号 `**` - **第3行**:3个星号 `***` - 以此类推... 最终形成一个“左对齐”的直角三角形。 ## 💻 解决方案 下面是完整的C++代码实现: ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 读取行数 // 外层循环控制行数 for (int i = 1; i <= n; i++) { // 内层循环控制每行打印的星号数量 for (int j = 1; j <= i; j++) { cout << "*"; } // 每行结束后换行 cout << endl; } return 0; } ``` ## 🔧 代码解析 **核心思路**:使用两个嵌套的 `for` 循环。 1. **外层循环** (`for (int i = 1; i <= n; i++)`): - 变量 `i` 代表当前行数,范围从1到 `n`。 - 每次迭代代表打印一行。 2. **内层循环** (`for (int j = 1; j <= i; j++)`): - 变量 `j` 控制当前行打印的星号数量。 - **关键在于**:循环次数等于当前行数 `i`,因此每行星号数量递增。 3. **换行**:每打印完一行的星号后,使用 `cout << endl;` 换行。 **时间复杂度**:O(n²),因为总共打印了 `1+2+...+n = n(n+1)/2` 个字符。 ## 🧪 输入输出示例 ### 示例1 **输入**: ``` 3 ``` **输出**: ``` * ** *** ``` ### 示例2 **输入**: ``` 5 ``` **输出**: ``` * ** *** **** ***** ``` ## ⚠️ 注意事项与优化 1. **边界处理**:题目保证 `1 ≤ n ≤ 30`,因此不需要特殊处理 `n=0` 或负数的情况。 2. **性能考虑**:对本题而言,直接使用 `cout` 输出即可,因为数据规模非常小。但如果需要大规模输出,可以考虑: - 使用 `printf` 或 `puts` 加速(但对于本题没有必要) - 预先构造一行字符串,然后循环输出(避免频繁的I/O操作) 3. **代码风格**: - 使用 `using namespace std;` 简化代码,但注意在大型项目中可能会导致命名冲突。 - 变量命名清晰,`i` 和 `j` 是循环变量的常见约定。 ## 🚀 扩展练习 如果你掌握了基础版本,可以尝试以下变体: ```cpp // 变体1:右对齐的直角三角形(前面加空格) #include <iostream> using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { // 打印空格,使星号右对齐 for (int k = 1; k <= n - i; k++) { cout << " "; } for (int j = 1; j <= i; j++) { cout << "*"; } cout << endl; } return 0; } ``` **这个变体输入5的输出为**: ``` * ** *** **** ***** ``` ## 📚 学习建议 - 这类“打印图案”的题目是练习嵌套循环的经典题型,建议亲手在IDE或在线编译器中运行代码,观察每一步的执行过程。 - 尝试其他变体:倒直角三角形、等腰三角形、菱形等,以便加深对循环控制的理解。 如果你有任何疑问,欢迎继续追问! ######[AI写代码神器 | 917点数解答 | 2026-08-29 20:07:40]
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 232点数解答 | 2025-12-07 12:30:06)167
- Python代码:轻松打印 0 到输入整数之间的所有整数(字节豆包 | 126点数解答 | 2025-12-12 18:21:54)123
- C++实现:输入整数打印 0 到该整数间所有整数及代码详解(字节豆包 | 228点数解答 | 2025-12-12 18:22:24)136
- Python实现:打印0到输入整数间所有整数的代码解析(字节豆包 | 264点数解答 | 2025-12-12 19:37:01)135
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 214点数解答 | 2025-12-12 19:40:30)123
- Python实现:打印 0 到 n 之间所有整数的高效方法(讯飞星火 | 569点数解答 | 2025-12-17 12:23:47)145
- Python实现:打印从 -n 到 n 范围内所有整数的代码详解(讯飞星火 | 660点数解答 | 2025-12-17 17:30:53)116
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)360
- 探索连续小波变换(CWT):剖析信号局部时频特性的数学利器! (DeepSeek | 59点数解答 | 2025-05-10 01:44:29)252
- C语言:输入三边求三角形面积,区分普通、直角、等边及非三角形情况 (字节豆包 | 314点数解答 | 2024-10-26 09:13:03)307
- C 语言:输入三数判断能否构成等腰、等边、直角三角形(字节豆包 | 361点数解答 | 2025-05-28 11:14:47)226
- C++ 实现根据三边判断三角形类型(字节豆包 | 568点数解答 | 2026-03-14 20:56:16)104