C++实现#号直角三角形打印程序详解
我来帮你编写一个 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; } ``` ## 🔍 代码解释 ### 1. **程序结构** - `#include <iostream>`:包含输入输出流库 - `using namespace std;`:使用标准命名空间,简化代码 - `main()` 函数:程序入口点 ### 2. **核心逻辑** - **外层循环** (`for (int i = 1; i <= n; i++)`):控制行数 - `i` 从 1 到 n,表示当前是第几行 - **内层循环** (`for (int j = 1; j <= i; j++)`):控制每行的 # 号数量 - `j` 从 1 到 i,表示打印 i 个 # 号 - 第 1 行打印 1 个 #,第 2 行打印 2 个 #,依此类推 ## 📊 示例运行 **输入:** ``` 5 ``` **输出:** ``` # ## ### #### ##### ``` ## ⚡ 进阶优化 ### 1. **添加输入验证** ```cpp #include <iostream> using namespace std; int main() { int n; cout << "请输入行数: "; cin >> n; // 输入验证 if (n <= 0) { cout << "行数必须为正整数!" << endl; return 1; // 返回非零表示错误 } // 打印直角三角形 for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { cout << "#"; } cout << endl; } return 0; } ``` ### 2. **使用字符串拼接优化** ```cpp #include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; string line = ""; for (int i = 1; i <= n; i++) { line += "#"; // 每次添加一个 # cout << line << endl; } return 0; } ``` ### 3. **支持不同字符的三角形** ```cpp #include <iostream> using namespace std; void printTriangle(int n, char symbol = '#') { for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { cout << symbol; } cout << endl; } } int main() { int n; char symbol; cout << "请输入行数: "; cin >> n; cout << "请输入字符: "; cin >> symbol; printTriangle(n, symbol); return 0; } ``` ## 🛡️ 开发建议 ### 1. **性能考虑** - 对于小规模 n(<1000),两种方法性能差异不大 - 对于大规模 n,字符串拼接方法可能更高效,因为减少了内层循环 ### 2. **可读性** - 使用有意义的变量名(如 `row`, `col` 代替 `i`, `j`) - 添加适当的注释,特别是复杂逻辑处 ### 3. **错误处理** - 始终验证用户输入 - 考虑边界情况(n=0, n=负数, n过大等) ### 4. **扩展功能** - 可以添加打印倒三角形、等腰三角形等功能 - 支持从文件读取输入或输出到文件 ### 5. **测试用例** ```cpp // 测试不同输入 测试1: n = 1 输出: # 测试2: n = 3 输出: # ## ### 测试3: n = 0 或负数 输出: 错误提示 ``` ## 📚 学习资源 1. **C++ 基础教程** - [C++ Primer](https://www.informit.com/store/c-plus-plus-primer-9780321714114) - [cplusplus.com](http://www.cplusplus.com/) 2. **循环结构深入学习** - for 循环、while 循环、do-while 循环的区别 - 循环控制语句(break, continue) 3. **算法练习平台** - LeetCode - HackerRank - Codeforces ## ❓ 常见问题 **Q: 如果我想打印倒三角形怎么办?** A: 修改外层循环为 `for (int i = n; i >= 1; i--)` **Q: 如何打印空心三角形?** A: 需要判断当前位置是否在边界上,只打印边界的 # **Q: 如何提高打印大量行的性能?** A: 使用 `cout << string(i, '#') << endl;` 或预分配字符串 ######[AI写代码神器 | 1187点数解答 | 2026-03-08 14:05:40]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)338
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)220
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 232点数解答 | 2025-12-07 12:30:06)70
- Python代码:轻松打印 0 到输入整数之间的所有整数(字节豆包 | 126点数解答 | 2025-12-12 18:21:54)33
- C++实现:输入整数打印 0 到该整数间所有整数及代码详解(字节豆包 | 228点数解答 | 2025-12-12 18:22:24)48
- Python实现:打印0到输入整数间所有整数的代码解析(字节豆包 | 264点数解答 | 2025-12-12 19:37:01)36
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 214点数解答 | 2025-12-12 19:40:30)43
- Python实现:打印 0 到 n 之间所有整数的高效方法(讯飞星火 | 569点数解答 | 2025-12-17 12:23:47)52
- Python实现:打印从 -n 到 n 范围内所有整数的代码详解(讯飞星火 | 660点数解答 | 2025-12-17 17:30:53)29
- C语言:输入三边求三角形面积,区分普通、直角、等边及非三角形情况 (字节豆包 | 314点数解答 | 2024-10-26 09:13:03)237
- C 语言:输入三数判断能否构成等腰、等边、直角三角形(字节豆包 | 361点数解答 | 2025-05-28 11:14:47)166
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)306