酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]