编写函数求一维整型数组(需键盘输入数组元素的值)中最大的奇数及偶数(分别用全局变量max_odd与max_even表示),并在主函数中输出。
用2整除数组的每个元素的余数是否等于0来判断是奇数和偶数,然后再求最大的奇数和偶数。
代码如下:
参考链接:
#include <stdio.h>
// http://c.biancheng.net/view/1858.html
int max_odd; // 定义全局变量max_odd,存储数组最大的奇数
int max_even; // 定义全局变量max_odd,存储数组最大的偶数
// arr为要求的一维整形数组,n为数组的长度
int findMaxOddEven(int arr[],int n){
int i; // 数组下标变量
int oddFind=0; // 奇数标志,用于标记在数组中是否找到了 奇数,默认0为未找到 奇数
int evenFind=0;// 偶数标志,用于标记在数组中是否找到了 偶数,默认0为未找到 偶数
for(i=0;i<n;i++){ // 遍历数组的每一个元素下标
if(arr[i]%2==0){ //如果2整除当前的数组元素 的余数为0,则当前的数为 偶数
if(evenFind==0){ // 如果是第一次找到偶数,则将最偶数大值赋值为当前的元素值
max_even=arr[i];
evenFind=1; // 偶数标志置1,表示数组中找到偶数
}else{ // 如果不是第一次找到偶数
if(max_even<arr[i]){ // 则将当前最大偶数与当前元素比较,当前元素大,则将其赋值给最大偶数变量
max_even=arr[i];
}
}
}else{ //如果2整除当前的数组元素 的余数不为0,则当前的数为 奇数
if(oddFind==0){ // 如果是第一次找到奇数,则将奇数最大值赋值为当前的元素值
max_odd=arr[i];
oddFind=1; // 奇数标志置1,表示数组中找到奇数
}else{ // 如果不是第一次找到奇数
if(max_odd<arr[i]){ // 则将当前最大奇数与当前元素比较,当前元素大,则将其赋值给最大奇数变量
max_odd=arr[i];
}
}
}
}
int result=evenFind*10+oddFind; // 将偶数标志*10 加上 奇数标志的值
return result; // 返回偶数标志*10+奇数标志的和 ,用于告知调用函数,数组中是否有偶数和奇数
}
int main(void){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
// int arr[10]={1,3,5,7,9,11,13,15,17,19};
// int arr[10]={2,4,6,8,10,12,14,16,18,20};
int result = findMaxOddEven(arr,10);
if(result/10==1){ // 如果数组中有偶数,则打印其最大偶数
printf("数组最大的偶数为:%d.\n",max_even);
}else{ // 无偶数,则打印无偶数
printf("数组没有偶数。\n");
}
if(result%10==1){ // 如果数组中有奇数,则打印其最大的奇数
printf("数组最大的奇数为:%d.\n",max_odd);
}else{ // 否则,打印无奇数
printf("数组没有偶奇数。\n");
}
return 0;
}