用c语言编写一函数,用来求某矩阵的最小值和最大值以及它所在行和列的位置。(矩阵可用二维数组表示)

用c语言编写
求..:用c语言编写一函数,用来求某矩阵的最小值和最大值以及它所在行和列的位置。(矩阵可用二维数组表示)

第1个回答  2009-12-27
int a[m][n];
int max=a[0][0],min=a[0][0],i,j;
for(i=0;i<=n;i++)
{
for(j=0;j<=m;j++)
{
max=max>a[j][i]?x:a[j][i];
min=min<a[j][i]?x:a[j][i];
}
}
第2个回答  2009-12-27
代码一:
#include<stdio.h>
int MAX,MIN;
int maxi,maxj,mini,minj;
void main()
{
void result(int x[][5],int m,int n);
int a[5][5],max,min,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
MAX=MIN=a[0][0];
maxi=maxj=mini=minj=0;
result(a,5,5);
printf("MAX=%d,maxi=%d,maxj=%d\n",MAX,maxi,maxj);
printf("MIN=%d,mini=%d,minj=%d\n",MIN,mini,minj);
}
void result(int x[][5],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(x[i][j]>MAX)
{
MAX=x[i][j];
maxi=i;
maxj=j;
}
if(x[i][j]<MIN)
{
MIN=x[i][j];
mini=i;
minj=j;
}
}
}
但代码一有个缺点,那就是如果有多个最值,只能输出最后一个。下面的代码是经过改进的。
代码二:
#include<stdio.h>
int MAX,MIN;
int maxi,maxj,mini,minj;
void main()
{
void result(int x[][5],int m,int n);
int a[5][5],max,min,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
MAX=MIN=a[0][0];
maxi=maxj=mini=minj=0;
result(a,5,5);
}
void result(int x[][5],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(x[i][j]>MAX)
MAX=x[i][j];
if(x[i][j]<MIN)
MIN=x[i][j];
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(x[i][j]==MAX)
{
MAX=x[i][j];
maxi=i;
maxj=j;
printf("MAX=%d,maxi=%d,maxj=%d\n",MAX,maxi,maxj);
}
if(x[i][j]==MIN)
{
MIN=x[i][j];
mini=i;
minj=j;
printf("MIN=%d,mini=%d,minj=%d\n",MIN,mini,minj);
}
}
}本回答被提问者采纳