请用c语言完成以下程序:编写函数求一维整型数组(需键盘输入数组元素的值)中最大的奇数及偶数(分别用全局变量max_odd与max_even表示),并在主函数中输出。
时间: 2024-05-14 18:17:16 浏览: 105
好的,以下是程序的代码:
```c
#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 && arr[i] > max_even) { // 如果是偶数且比当前的最大偶数还大
max_even = arr[i];
} else if(arr[i] % 2 == 1 && arr[i] > max_odd) { // 如果是奇数且比当前的最大奇数还大
max_odd = arr[i];
}
}
}
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int arr[n];
printf("请输入数组元素:");
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. 首先要求输入数组的长度n。
2. 然后再要求输入数组的元素。
3. 调用函数`find_max`,在函数中遍历数组,找出最大的奇数和偶数。
4. 最后在主函数中根据`max_odd`和`max_even`的值输出结果。
注意事项:
1. 全局变量`max_odd`和`max_even`初始值都设为-1,是因为数组中所有元素都有可能是负数,所以不能设为0。
2. 如果数组中没有奇数或者没有偶数,就输出"无"。
阅读全文