编写一下下面的c程序

找出一批正整数中的最大的偶数,要求定义一个函数实现此功能,用数组作为函数形参,主函数内调用此函数完成程序功能。

一个简单的实现:


#include <stdio.h>
int maxEven(int arr[],int len);

int main(void){
    int arr[5] ={55,44,34,64,78}; 
    printf("最大的偶数是%d.\n",maxEven(arr,5));
    return 0;
}

int maxEven(int arr[],int len){
    
    int i ;
    int max=arr[0];
    for(i=1;i<len;i++){
        //如果数组当前的值比最大的偶数大,则最大的偶数赋值为当前数组的值 
        if(max<arr[i]&&arr[i]%2==0){
            max=arr[i]; 
        }
    }
    
    return max;
}

#include<stdio.h>
int my_max(int arr[],int n)
{
    for(int i=0;i< n -1;i++)
        for (int j = 0; j < n - i - 1; j++)
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j]= arr[j+1];
                arr[j + 1] = temp;
            }
    for(int i=0;i<n;i++)
        if (arr[n-1-i] % 2 == 0)
        {
            printf("%d", arr[n - 1 - i]);
            break;
        }
}
int main() {
    int a[] = {1,2,56,4,5,6,7,8,9};
    int len = sizeof(a) / sizeof(int);
    my_max(a,len);
    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int max_even( int a[], int n );
int main(int argc, char *argv[]) {
    int n,i;
    scanf("%d",&n);
    
    int a[n];
    for ( i = 0; i < n; i++ ){
        scanf("%d",&a[i]);        //遍历输入数组 
    }
    printf("%d",max_even(a,n));    //传数组需要传 数组本身 和 他的大小 
    
    return 0;
}

int max_even( int a[], int n ){
    int i,temp1 = 0,temp2 = 0,even;     
    
    for ( i = 0; i < n; i++ ){
        if ( a[i] % 2 == 0 ){
            temp1 = a[i];        //temp1用来存放这一轮的偶数的值 
            if ( temp1 >= temp2 )
                even = temp1;
            else
                even = temp2;
            if ( temp1 > temp2 )//当上一轮的值(temp2)比这一轮的(temp1)大时,就不用赋给temp2了 
                temp2 = temp1;    //temp2用来存放上一轮的偶数的值 
        }
    }
    
    return even;
}