求编程其中最大的奇偶数是怎么弄啊

编写函数求一维整型数组(需键盘输入数组元素的值)中最大的奇数及偶数(分别用全局变量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;
}



img