酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

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]

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