编写函数求一维整型数组(需键盘输入数组元素的值)中最大的奇数及偶数(分别用全局变量max_odd与max_even表示),并在主函数中输出。
时间: 2024-05-07 14:18:13 浏览: 232
好的,以下是一个可能的实现方式:
```
#include <stdio.h>
int max_odd = -1; // 全局变量,存储最大的奇数
int max_even = -1; // 全局变量,存储最大的偶数
void find_max(int arr[], int n) {
for (int i = 0; i < n; i++) {
if (arr[i] % 2 == 0) { // 如果是偶数
if (arr[i] > max_even) {
max_even = arr[i];
}
} else { // 如果是奇数
if (arr[i] > max_odd) {
max_odd = arr[i];
}
}
}
}
int main() {
int n;
printf("请输入数组的长度:");
scanf("%d", &n);
int arr[n]; // 定义长度为n的数组
printf("请输入数组的%d个元素值:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
find_max(arr, n); // 调用函数,查找最大的奇数和偶数
// 输出结果
if (max_odd == -1) {
printf("没有奇数\n");
} else {
printf("最大的奇数是:%d\n", max_odd);
}
if (max_even == -1) {
printf("没有偶数\n");
} else {
printf("最大的偶数是:%d\n", max_even);
}
return 0;
}
```
解释一下代码:
1. 首先定义两个全局变量 `max_odd` 和 `max_even`,分别用于存储最大的奇数和偶数,默认值为 -1。
2. 定义函数 `find_max`,用于查找最大的奇数和偶数。参数为整型数组 `arr` 和数组长度 `n`。
3. 在 `find_max` 函数中,使用 for 循环遍历数组。对于每个元素,如果是偶数,则比较它是否大于当前存储的最大偶数,如果是,则更新 `max_even` 的值;如果是奇数,则比较它是否大于当前存储的最大奇数,如果是,则更新 `max_odd` 的值。
4. 在主函数中,首先读入数组长度 `n` 和数组元素值。
5. 调用函数 `find_max`,查找最大的奇数和偶数。
6. 最后根据 `max_odd` 和 `max_even` 的值,输出结果。如果 `max_odd` 或 `max_even` 的值仍然为 -1,则表示数组中没有奇数或偶数。
阅读全文