C++代码深度剖析:整数奇偶数分类输出及优化方案
代码功能分析 这段C++代码的主要功能是将用户输入的一系列整数进行分类,分为奇数和偶数,然后分别输出奇数序列和偶数序列。 代码详细解释 1. 头文件和命名空间: ```cpp #include <iostream> using namespace std; ``` - `#include <iostream>` 引入标准输入输出流库,用于进行输入输出操作。 - `using namespace std;` 声明使用标准命名空间,这样在使用标准库中的函数和对象时可以省略 `std::`。 2. 主函数 `main`: ```cpp int main() { int n; cin >> n; ``` - 定义一个整数变量 `n`,用于存储用户输入的整数个数。 - 使用 `cin >> n;` 从标准输入读取一个整数赋值给 `n`。 3. 数组和索引变量: ```cpp int odd[10000], even[10000]; int oddIndex = 0, evenIndex = 0; ``` - 定义两个数组 `odd` 和 `even`,分别用于存储奇数和偶数,数组大小为 10000。 - 定义两个索引变量 `oddIndex` 和 `evenIndex`,分别用于记录奇数数组和偶数数组的当前索引,初始值都为 0。 4. 输入和分类: ```cpp for (int i = 0; i < n; i++) { int num; cin >> num; if (num % 2 == 1) { odd[oddIndex++] = num; } else { even[evenIndex++] = num; } } ``` - 使用 `for` 循环读取 `n` 个整数。 - 对于每个读取的整数 `num`,使用 `if (num % 2 == 1)` 判断是否为奇数。如果是奇数,则将其存入 `odd` 数组,并将 `oddIndex` 加 1;否则,将其存入 `even` 数组,并将 `evenIndex` 加 1。 5. 输出奇数序列: ```cpp for (int i = 0; i < oddIndex; i++) { if (i != 0) cout << " "; cout << odd[i]; } cout << endl; ``` - 使用 `for` 循环遍历 `odd` 数组,输出其中的奇数。 - 在输出每个奇数之前,判断是否为第一个奇数,如果不是,则先输出一个空格。 - 输出完所有奇数后,换行。 6. 输出偶数序列: ```cpp for (int i = 0; i < evenIndex; i++) { if (i != 0) cout << " "; cout << even[i]; } cout << endl; ``` - 使用 `for` 循环遍历 `even` 数组,输出其中的偶数。 - 在输出每个偶数之前,判断是否为第一个偶数,如果不是,则先输出一个空格。 - 输出完所有偶数后,换行。 7. 返回值: ```cpp return 0; } ``` - 主函数返回 0,表示程序正常结束。 代码改进建议 - 数组大小问题:使用固定大小的数组可能会导致空间浪费或溢出。可以考虑使用 `std::vector` 来动态管理数组大小。 - 负数处理:当前代码使用 `num % 2 == 1` 来判断奇数,对于负数可能会出现问题。可以使用 `num % 2 != 0` 来判断奇数。 以下是改进后的代码: ```cpp #include <iostream> #include <vector> int main() { int n; std::cin >> n; std::vector<int> odd, even; for (int i = 0; i < n; i++) { int num; std::cin >> num; if (num % 2 != 0) { odd.push_back(num); } else { even.push_back(num); } } for (size_t i = 0; i < odd.size(); i++) { if (i != 0) std::cout << " "; std::cout << odd[i]; } std::cout << std::endl; for (size_t i = 0; i < even.size(); i++) { if (i != 0) std::cout << " "; std::cout << even[i]; } std::cout << std::endl; return 0; } ``` 在改进后的代码中,使用 `std::vector` 来动态管理数组大小,避免了固定大小数组的问题。使用 `num % 2 != 0` 来判断奇数,处理负数时更加准确。 ######[AI问答 | 1141点数解答 | 2025-11-26 19:48:54]
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)20
- 求解特定条件下整数序列的最小值:算法分析与代码实现(字节豆包 | 746点数解答 | 2026-01-24 13:14:40)54
- 培训机构学员成绩与年龄更新:C++ 代码实现(DeepSeek | 186点数解答 | 2025-12-16 18:04:31)59
- Python 处理培训机构学员培训后年龄与 NOIP 成绩提升情况(DeepSeek | 73点数解答 | 2025-12-16 18:05:20)62
- 培训机构学员成绩提升:C++代码实现年龄与NOIP成绩更新(DeepSeek | 178点数解答 | 2025-12-31 12:20:24)59
- 工程师必备:十大APP性能优化方案大揭秘(百度文心 | 300点数解答 | 2023-11-09 18:31:04)330
- 含不规则缺陷原材料的最优切割方案建模与损失率、利用率计算(DeepSeek | 2367点数解答 | 2025-05-10 23:47:30)261
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)310
- C语言:按序读入浮点数、整数、字符并按新顺序输出,附代码实现 (字节豆包 | 108点数解答 | 2024-09-30 22:54:08)327
- C语言:按特定顺序读入并输出浮点数、整数和字符,精确控制小数位(字节豆包 | 155点数解答 | 2024-10-08 22:06:18)321
- C++与Python:按特定顺序输入输出数据并保留浮点数两位小数的实现(字节豆包 | 168点数解答 | 2024-10-08 22:07:03)324
- C语言:按特定顺序读入再输出,含浮点数精确格式处理(字节豆包 | 105点数解答 | 2024-10-08 22:07:29)334