以下程序中,select函数的功能是:在N行M列的二维数组中,

来源:百度知道 编辑:UC知道 时间:2024/05/05 00:47:54
以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标,请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=0,colum=0;
for(i=0;i<N;i++)
for(j=0;i<M;i++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=______;
return( ______ );
}
main()
{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}

告诉我原因。

答案为
*n=row;
return a[row][colum];

这几行
int i,j,row=0,colum=0;
for(i=0;i<N;i++)
for(j=0;i<M;i++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
先设当前最大元为a[0][0],然后依次比较每个元素,
算出了最大元素的位置并保存在了row,colum里,其中row为行,colum为列。

然后通过指针形参n返回最大元素的行下标,返回最大元素的值。

第一空:i;
第二空:a[i][j];
main函数定义了一个n,把n的地址传给函数select的参数n(select函数的n为一个指针,只能接收地址;select函数求出了最大值为
a[i][j];rerutn a[i][j]返回最大值;因为主函数n地址没有改变,
它所存放的是i的地址,所以*n=i就可以通过指针求出i(i为最大值的行)