C++ 实现n×n对角线图案输出详解
好的,这是一个很经典的输出对角线图案的编程题目。我将为你提供一个**C++** 的实现,并详细解释代码逻辑。 ## 🎯 问题分析 我们需要输出一个 n × n 的矩阵图案,规则是: - 当行号 == 列号(即左上角到右下角的对角线)时,输出 `#` - 其他位置输出 `*` 注意:行和列通常从 0 或 1 开始索引,这里**行和列均从 1 开始计数**,因为输入样例显示位置 (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) { // 枚举行号 i(从1开始) for (int j = 1; j <= n; ++j) { // 枚举列号 j(从1开始) if (i == j) { // 对角线条件 cout << "#"; } else { cout << "*"; } } cout << endl; // 一行结束后换行 } return 0; } ``` ## 📝 代码详细解释 | 部分 | 说明 | |------|------| | `cin >> n` | 读取用户输入的边长n | | `for (int i = 1; i <= n; ++i)` | 外层循环,控制行数,i从1到n | | `for (int j = 1; j <= n; ++j)` | 内层循环,控制每行打印的字符数 | | `if (i == j)` | 判断当前位置是否在主对角线上 | | `cout << "#"` / `cout << "*"` | 根据条件输出对应字符 | | `cout << endl` | 每打印完一行所有列后,换行 | ## 🧠 核心思路 **主对角线判断条件**:在一个矩阵中,主对角线上的元素满足 **行号 = 列号**。 因为题目要求左上角到右下角为主对角线,所以我们只需检查 `i == j`。 **时间/空间复杂度**: - 时间复杂度:**O(n²)**(因为需要遍历 n×n 个格子) - 空间复杂度:**O(1)**(只使用了几个基本变量,没有额外的数据结构) ## 🚀 进阶建议 1. **改写成其他循环方式**:也可以用 `while` 循环或 `do-while` 实现,但 `for` 最直观。 2. **扩展到反对角线**:如果想输出右上到左下的对角线,条件改为 `i + j == n + 1`。 3. **字符可定制**:可以将 `#` 和 `*` 替换为其他字符,实现不同样式的对角线图案。 4. **检查输入范围**:题目保证 1 ≤ n ≤ 10,因此不需要额外校验,但真实项目中建议加上边界检查。 ## ✅ 测试用例验证 **样例1** 输入: ``` 3 ``` 输出: ``` #** *#* **# ``` **样例2** 输入: ``` 4 ``` 输出: ``` #*** *#** **#* ***# ``` ## ⚠️ 常见陷阱 - **索引从0还是从1开始**:题目中左上角位置显然对应 (1,1),所以循环从 1 开始。如果从 0 开始,条件应为 `i == j`(因为 i=j=0 也是主对角线),但输出位置视觉上仍匹配。 - **忘记换行**:每输出完一行后必须 `cout << endl`,否则所有字符会挤在同一行。 --- ######[AI写代码神器 | 849点数解答 | 2026-06-06 19:35:28]
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)271
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)411
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)372
- C++实现输入整数 n 输出 n×n 图案:开发中需留意的关键要点(DeepSeek | 149点数解答 | 2025-11-09 19:39:13)70
- C++实现输入整数n生成n×n “123...”图案(DeepSeek | 79点数解答 | 2025-11-09 19:41:08)107
- C++ 实现输入整数 n 输出 n×n 图案,代码详解与复杂度分析(字节豆包 | 315点数解答 | 2025-12-23 20:00:13)56
- C++实现:输入整数 n 输出 n×n 特定图案,附代码及详细解析(字节豆包 | 386点数解答 | 2026-01-16 20:39:54)66
- C++实现输入整数 n 输出 n×n 特定图案:代码详解与复杂度分析(字节豆包 | 425点数解答 | 2026-01-16 20:40:30)62
- C++ 实现输入整数 n 输出 n×n 特定图案:代码详解与复杂度分析 (字节豆包 | 334点数解答 | 2026-01-16 20:40:58)47
- C++实现输入整数 n 输出 n×n 特定图案:代码详解与复杂度分析(字节豆包 | 356点数解答 | 2026-02-01 15:57:48)52
- C++ 实现:输入整数 n 输出 n×n 循环数字图案及代码详解(字节豆包 | 521点数解答 | 2026-02-01 15:59:17)74
- Python 实现:根据输入整数 n 输出 n×n 特定图案 (字节豆包 | 256点数解答 | 2026-02-01 16:01:53)79