酷代码 AI
菜单
服务商

#include <iostream> using namespace std; int main() { int n; cin >> n; int odd[10000], even[10000]; int oddIndex = 0, evenIndex = 0; for (int i = 0; i < n; i++) { int num; cin >> num; if (num % 2 == 1) { odd[oddIndex++] = num; } else { even[evenIndex++] = num; } } for (int i = 0; i < oddIndex; i++) { if (i != 0) cout << " "; cout << odd[i]; } cout << endl; for (int i = 0; i

代码功能分析 这段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` 来判断奇数,处理负数时更加准确。 [2025-11-26 19:48:54 | AI问答 | 1141点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多