前言
这题比较简单,感觉唯一难点在于如何从函数中返回最大值的下标。
要求
找出2维数组的最大值及其下标
代码实现
/*找出2维数组的最大值,及其下标*/
#include <stdio.h>
/*宏定义*/
#define M 2
#define N 3
/*函数声明*/
int doub_max(int arr[M][N],int* x,int* y);
void my_printf(int arr[M][N]);
int main()
{
int max; //最大值
int x = 0,y = 0; //下标
int arr[M][N] = {{1,2,3},{4,5,6}};
my_printf(arr);
max = doub_max(arr,&x,&y);
printf("最大值为:%d\n",max);
printf("下标为:%d %d\n",x,y);
return 0;
}
/*函数定义*/
int doub_max(int arr[M][N],int* x,int* y)
{
int i,j;
int max = arr[0][0]; // 假设最大值是第1个元素
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(max<arr[i][j]) //假设被推翻
{
max = arr[i][j];
*x = i;
*y = j;
}
}
}
return max;
}
void my_printf(int arr[M][N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
}