1、封装自定义函数,计算数组的最大和,最大差
//第一数组
#include <stdio.h>
#include <string.h>
int MaxSum(int len,int arr[]);
int MaxDel(int len,int arr[]);
int main(int argc, const char *argv[])
{
int arr[]={5,6,8,51,31,51,88};
int len=sizeof(arr)/sizeof(int);
printf("最大差为:%d\n",MaxDel(len,arr));
printf("最大和为:%d\n",MaxSum(len,arr));
return 0;
}
int MaxSum(int len,int arr[])
{
int max1,max2;
for(int i=0;i<len;i++)
{
if(i==0)
max1=arr[i];
if(max1<arr[i])
max1=arr[i];
}
for(int i=0;i<len;i++)
{
if(i==0)
max2=arr[i];
if(max2<arr[i]&&arr[i]!=max1)
max2=arr[i];
}
return max1+max2;
}
int MaxDel(int len,int arr[])
{
int max,min;
for(int i=0;i<len;i++)
{
if(i==0)
{
max=arr[i];
min=arr[i];
}
if(max<arr[i])
max=arr[i];
if(min>arr[i])
min=arr[i];
}
return max-min;
}
【输出样例】
最大差为:83
最大和为:139
//二维数组
#include <stdio.h>
#include <string.h>
int MaxDel(int line,int row,int arr[line][row]);
int MaxSum(int line,int row,int arr[line][row]);
int main(int argc, const char *argv[])
{
int arr[][3]={2,3,4,56,7,1,5,3,51,65,21,31};
int line=sizeof(arr)/sizeof(arr[0]);
int row =sizeof(arr[0])/sizeof(int);
printf("最大差为:%d\n",MaxDel(line,row,arr));
printf("最大和为:%d\n",MaxSum(line,row,arr));
return 0;
}
int MaxDel(int line,int row,int arr[line][row])
{
int max,min;
for(int i=0;i<line;i++)
{
for(int j=0;j<row;j++)
{
if(i==0&j==0)
{ max=arr[i][j];min=arr[i][j]; }
if(max<arr[i][j])
max=arr[i][j];
if(min>arr[i][j])
min=arr[i][j];
}
}
return max-min;
}
int MaxSum(int line,int row,int arr[line][row])
{
int max1,max2;
for(int i=0;i<line;i++)
{
for(int j=0;j<row;j++)
{
if(i==0&&j==0)
max1=arr[i][j];
if(max1<arr[i][j])
max1=arr[i][j];
}
}
for(int i=0;i<line;i++)
{
for(int j=0;j<row;j++)
{
if(i==0&&j==0)
max2=arr[i][j];
if(max2<arr[i][j]&&arr[i][j]!=max1)
max2=arr[i][j];
}
}
return max1+max2;
}
【输出样例】
最大差为:64
最大和为:121