C++图案打印代码分析与修正
### 🔍 代码分析与问题诊断 你的代码目的是打印由 `#` 和 `*` 交替组成的图案,每行固定打印 5 个相同字符,总共输出 12 行。代码存在以下问题: - **`counts` 数组长度与循环逻辑不匹配**:`i % 2` 只能产生 0 或 1 两种索引,但 `counts` 有 12 个元素,导致打印顺序混乱。 - **未打印换行符**:每一行打印后应输出 `endl` 或 `"\n"` 来换行。 - **`count` 变量未定义**:内部循环应使用 `counts[i]` 而非未定义的 `count`。 ### ✅ 修正后的代码 ```cpp #include <iostream> using namespace std; void printPattern() { char charArray[] = {'#', '*'}; int counts[] = {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}; int n = sizeof(counts) / sizeof(counts[0]); for (int i = 0; i < n; i++) { char currentChar = charArray[i % 2]; // 交替选择字符 for (int j = 0; j < counts[i]; j++) { // 打印 counts[i] 个字符 cout << currentChar; } cout << endl; // 换行 } } int main() { printPattern(); return 0; } ``` ### 📤 输出结果 ``` ##### ***** ##### ***** ##### ***** ##### ***** ##### ***** ##### ***** ``` ### 💡 优化建议 如果只是想简单地交替打印两种字符,每行固定5个,共12行,可以简化代码: ```cpp #include <iostream> using namespace std; void printPattern() { for (int i = 0; i < 12; i++) { char ch = (i % 2 == 0) ? '#' : '*'; for (int j = 0; j < 5; j++) { cout << ch; } cout << endl; } } ``` 这样不需要数组,逻辑更清晰。 ######[AI问答 | 519点数解答 | 2026-05-15 19:45:25]
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 232点数解答 | 2025-12-07 12:30:06)97
- Python代码:轻松打印 0 到输入整数之间的所有整数(字节豆包 | 126点数解答 | 2025-12-12 18:21:54)67
- C++实现:输入整数打印 0 到该整数间所有整数及代码详解(字节豆包 | 228点数解答 | 2025-12-12 18:22:24)76
- Python实现:打印0到输入整数间所有整数的代码解析(字节豆包 | 264点数解答 | 2025-12-12 19:37:01)66
- Python 实现:打印 -n 到 n 范围内所有整数的代码及详解(字节豆包 | 214点数解答 | 2025-12-12 19:40:30)69
- Python实现:打印 0 到 n 之间所有整数的高效方法(讯飞星火 | 569点数解答 | 2025-12-17 12:23:47)82
- Python实现:打印从 -n 到 n 范围内所有整数的代码详解(讯飞星火 | 660点数解答 | 2025-12-17 17:30:53)53
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)353
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)277
- 深度剖析 Vue 2 插槽:从基础使用到高级玩法(字节豆包 | 165点数解答 | 2024-11-29 11:25:06)235
- C++实现支持四则运算的简单计算器,处理除数为0和无效操作(字节豆包 | 241点数解答 | 2025-10-29 20:21:29)82
- C语言破解甲乙丙真假话谜题:开发中需留意的三大要点(字节豆包 | 444点数解答 | 2025-11-24 00:10:58)74