找出一批正整数中的最大的偶数,要求定义一个函数实现此功能,用数组作为函数形参,主函数内调用此函数完成程序功能。
一个简单的实现:
#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;
}