C++ 打印星号直角三角形图案的实现与解析
好的,这是一个经典的编程入门题目。下面我会为你提供C++的解决方案,并做一些详细的解释。 ## 🎯 题目理解 我们需要打印一个由星号 `*` 组成的直角三角形图案。对于输入 `n`,图案有 `n` 行,第 `i` 行(从1开始计数)包含 `i` 个星号。 例如,输入 `n = 4`,输出应该为: ``` * ** *** **** ``` ## 💻 C++ 代码实现 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 读取行数 // 外层循环控制行数,从 1 到 n for (int i = 1; i <= n; i++) { // 内层循环控制每一行打印的星号数量,第 i 行打印 i 个 for (int j = 1; j <= i; j++) { cout << "*"; } // 每打印完一行后换行 cout << endl; } return 0; } ``` ## 🔍 代码详解 - **`cin >> n;`** :从标准输入读取一个整数 `n`,代表三角形的行数。 - **外层循环 `for (int i = 1; i <= n; i++)`** :循环变量 `i` 从1递增到 `n`,代表当前正在打印第几行。 - **内层循环 `for (int j = 1; j <= i; j++)`** :循环变量 `j` 从1递增到 `i`,用来控制当前行打印多少个星号。因为第 `i` 行正好需要 `i` 个星号。 - **`cout << "*";`** :打印一个星号,注意这里没有换行,所以同一行的星号会连续输出。 - **`cout << endl;`** :在一行的星号打印完后换行,进入下一行。 ## 📥 输入输出示例 **输入:** ``` 5 ``` **输出:** ``` * ** *** **** ***** ``` ## 🧠 开发建议 1. **注意循环边界**:外层循环从 `1` 开始,而不是从 `0` 开始,这样更直观地对应行号。 2. **使用 `endl` 还是 `'\n'`**:在大量输出时,`'\n'` 性能更好(因为它不会刷新缓冲区),但对于本题目这种小规模输出,`endl` 完全没问题。如果你追求极致性能,可以用 `cout << '\n';`。 3. **代码风格**:虽然可以用 `using namespace std;`,但在大型项目中,建议使用 `std::cout` 和 `std::cin` 以避免命名冲突。 4. **扩展思考**:如果题目要求打印**左对齐**的直角三角形(即右侧有空格),则需要在打印星号之前先打印一定数量的空格。这里题目没有要求,所以直接打印即可。 ## ⚠️ 常见错误 - **忘记换行**:如果遗漏了 `cout << endl;`,所有星号会打印在同一行。 - **内层循环条件写错**:例如写成 `j <= n` 会打印成矩形而不是三角形。 - **输入输出格式不符**:注意输出时每一行星号后面不要有多余的空格(虽然这里没有严格要求,但整洁的格式更好)。 ## 🚀 扩展练习 - 尝试打印**倒直角三角形**(即第一行 `n` 个星号,最后一行1个)。 - 尝试打印**等腰三角形**(即星号居中,左右对称)。 - 尝试用 `while` 循环实现同样的功能。 ######[AI写代码神器 | 825点数解答 | 2026-08-16 17:45:16]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)561
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 232点数解答 | 2025-12-07 12:30:06)160
- Python代码:轻松打印 0 到输入整数之间的所有整数(字节豆包 | 126点数解答 | 2025-12-12 18:21:54)119
- C++实现:输入整数打印 0 到该整数间所有整数及代码详解(字节豆包 | 228点数解答 | 2025-12-12 18:22:24)131
- Python实现:打印0到输入整数间所有整数的代码解析(字节豆包 | 264点数解答 | 2025-12-12 19:37:01)128
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 214点数解答 | 2025-12-12 19:40:30)118
- Python实现:打印 0 到 n 之间所有整数的高效方法(讯飞星火 | 569点数解答 | 2025-12-17 12:23:47)138
- Python实现:打印从 -n 到 n 范围内所有整数的代码详解(讯飞星火 | 660点数解答 | 2025-12-17 17:30:53)108
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)399
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)423
- C语言:输入三边求三角形面积,区分普通、直角、等边及非三角形情况 (字节豆包 | 314点数解答 | 2024-10-26 09:13:03)300
- C 语言:输入三数判断能否构成等腰、等边、直角三角形(字节豆包 | 361点数解答 | 2025-05-28 11:14:47)221