找出一个二维数组的最大值和最小值,输出该值并输出它的下标

用C语言啊

第1个回答  2009-11-29
#include<stdio.h>
#define M 4
#define N 4
void fmax(int a[][4]);
void fmin(int (*p)[N]);
void main()
{
int a[M][N];
int (*p)[N];
int i,j;
p=a;
FILE *fpin;
fpin=fopen("210_in4.dat","r");

for(i=0;i<M;i++)
for(j=0;j<N;j++)
fscanf(fpin,"%d",&a[i][j]);
fmax(p);
fmin(p);

}
void fmax(int (*p)[N])
{
int j,i;
int t;
FILE *fpout;
fpout=fopen("210_out4.dat","a");
for(i=0;i<M;i++)
{
int col=0;
t=*(*(p+i));
for(j=0;j<N;j++)
if(*(*(p+i)+j)>t)
{
t=*(*(p+i)+j);
col=j;
}

fprintf(fpout,"第%d行的最大值为: %d\n",i+1,t);
fprintf(fpout,"位置在第%d行第%d列\n",i+1,col+1);
}
}
void fmin(int (*p)[N])
{
int i,j;
int t;
FILE *fpout;
fpout=fopen("210_out4.dat","a");
for(j=0;j<N;j++)
{
int row=0;
t=*(*(p)+j);
for(i=0;i<M;i++)
if(*(*(p+i)+j)<t)
{
t=*(*(p+i)+j);
row=i;
}
fprintf(fpout,"第%d列的最小值为: %d\n",j+1,t);
fprintf(fpout,"位置为第%d行第%d列\n",row+1,j+1);
}
}