C++ 实现正整数奇偶排序输出及代码错误修正
💡这段代码的主要思路是先读取 `n` 个正整数,然后对这些数进行排序,最后分别输出奇数和偶数。不过代码存在一个潜在问题,就是输入的数可能包含负数,而题目要求是正整数,虽然代码逻辑本身对于正整数是正确的,但如果输入负数可能不符合预期。 ### 代码问题分析 1. **边界情况处理**:没有对输入的数是否为正整数进行检查,如果输入负数,可能不符合题目要求。 2. **代码健壮性**:没有对输入的 `n` 进行范围检查,如果 `n` 超出数组 `a` 的大小(这里是 105),会导致数组越界。 ### 修正后的代码 ```cpp #include <iostream> #include <algorithm> using namespace std; const int MAXN = 105; int n, a[MAXN]; int main() { // 读取 n cin >> n; // 检查 n 是否在合理范围内 if (n <= 0 || n > MAXN) { cerr << "输入的 n 不在合理范围内。" << endl; return 1; } for (int i = 1; i <= n; i++) { cin >> a[i]; // 检查输入的数是否为正整数 if (a[i] <= 0) { cerr << "输入的数必须是正整数。" << endl; return 1; } } // 对数组进行排序 sort(a + 1, a + n + 1); // 输出一行奇数 bool firstOdd = true; for (int i = 1; i <= n; i++) { if (a[i] % 2 != 0) { if (!firstOdd) { cout << " "; } cout << a[i]; firstOdd = false; } } cout << endl; // 输出一行偶数 bool firstEven = true; for (int i = 1; i <= n; i++) { if (a[i] % 2 == 0) { if (!firstEven) { cout << " "; } cout << a[i]; firstEven = false; } } return 0; } ``` ### 代码解释 1. **输入检查**:在读取 `n` 后,检查 `n` 是否在合理范围内(1 到 105)。在读取每个数时,检查是否为正整数。 2. **排序**:使用 `sort` 函数对数组进行排序。 3. **输出奇数和偶数**:分别遍历数组,输出奇数和偶数,注意处理输出格式,避免多余的空格。 ######[AI问答 | 666点数解答 | 2026-05-16 19:40:19]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)390
- Photoshop 错误 8800 大揭秘:原因分析与实用解决方案(DeepSeek | 349点数解答 | 2025-02-28 11:19:16)630
- MaxScript 导出模型长度到 CSV 文件:代码错误排查与修正全解析 (字节豆包 | 525点数解答 | 2025-07-09 15:37:45)216
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)360
- C++ 实现查找指定数字在正整数序列中的位置(字节豆包 | 398点数解答 | 2026-04-11 13:08:06)37
- C++ 实现统计指定数字在数组中出现的次数(字节豆包 | 377点数解答 | 2026-04-11 13:09:11)32
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)507
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)391
- Python 实现:四位数重组求最大最小数差值(字节豆包 | 144点数解答 | 2026-02-01 12:49:54)43
- Python 代码求解:小明当选 Y 国总统至少需多少选民支持?(字节豆包 | 207点数解答 | 2026-02-01 12:51:14)51
- 拍卖干草:如何定价才能收益最大化?(DeepSeek | 1171点数解答 | 2026-02-23 21:10:09)45
- 计算分组乘船最重重量和的代码实现(字节豆包 | 485点数解答 | 2026-03-28 20:14:08)18