#include<stdio.h>
#define M 3
#define N 4
int main(void)
{
int a[M][N],i,j,k;
printf("请输入二位数组的数据:\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<M;i++)
{
k=0;
for(j=1;j<N;j++)
if(a[i][j]>a[i][k])
k=j;
for(j=0;j<M;j++)
if(a[j][k]<a[i][k])
break;
if(j==M)
printf("%d %d行%d列\n",a[i][j],i,k);
}
return 0;
}
你不是写反了吧?
for(i=0;i<M;i++)是对每一行进行循环
for(j=1;j<N;j++)循环应该是找出这一行的最小值,但if(a[i][j] > a[i][k]是找最大值啊
同样
最后一个for(j=0;j<M;j++)应该是对行最小值所在的列比较它是否为最大值,但if(a[j][k] < a[i][k])判断是找到一个更小的就退出