输入一个4行5列的二维数组,求出既是所在行最大值又是所在列最大值的值及下标

用C语言编程

#include<stdio.h>
#define M 4
#define N 5
int main()
{
int a[M][N],i,j;
int i1,j1,found;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("输入的数组为:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}

for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
found=1;
for(i1=0;i1<M;i1++)
if(a[i][j]<a[i1][j]){
found=0;
break;
}
for(j1=0;j1<N;j1++)
if(a[i][j]<a[i][j1]){
found=0;
break;
}
if(found)
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-27
#include<stdio.h>
#define N 4
#define M 5
void main() { int i,j,a[N][M],b,m,n;
  for ( i=0;i<N;i++ ) for ( j=0;j<M;j++ ) scanf("%d",&a[i][j]);
  for ( i=b=0;i<N;i++ ) {
    m=0; for ( j=1;j<M;j++ ) if ( a[i][j]>a[i][m] ) m=j;
    n=0; for ( j=1;j<N;j++ ) if ( a[j][m]>a[n][m] ) n=j;
    if ( n==i ) { b=1; break; }
  }
  if ( b ) printf("a[%d][%d]=%d\n",n,m,a[n][m]); else printf("没找到。\n");
}

相似回答