我昨天给做了下,结果还是有点问题,就没有给发上来,等下我回去后再做下试试。本菜鸟技术有限啊。
思路是,1.先求出没行的最大数,并用两个以为数组记录下行号和列号。在求出每列的最小值,并用另外两个一维数组记录下行号和列号。
2.再比较记录的行号和列号,满足条件的就输出。
思路是,1.先求出没行的最大数,并用两个以为数组记录下行号和列号。在求出每列的最小值,并用另外两个一维数组记录下行号和列号。
2.再比较记录的行号和列号,满足条件的就输出。
多看少说,重在学习!
#include <stdio.h> #include <limits.h> #define M 5 int max(int iarray[][M], int irow, int ilen); int min(int iarray[][M], int icol, int ilen); /*main function*/ int main(void) { int i, j, irow=0, icol=0, iarray[M][M]; printf("Please a %d*%d array:\n", M, M); for (i=0; i<M; i++) { for(j=0; j<M; j++) { scanf("%d", &iarray[i][j]); } } for (i=0; i<M; i++) { icol=max(iarray, i, M); irow=min(iarray, icol, M); if (irow==i) { printf("i=%d; j=%d; value=%d\n", irow, icol, iarray[irow][icol]); } } return 0; } /*Find the max number in a row*/ int max(int iarray[][M], int irow, int ilen) { int imax=INT_MIN, ipos, i; for (i=0; i<ilen; i++) { if (iarray[irow][i]>=imax) { imax=iarray[irow][i]; } } for (i=0; i<ilen; i++) { if (iarray[irow][i]==imax) { ipos=i; break; } } return ipos; } /*Find the min number in a col*/ int min(int iarray[][M], int icol, int ilen) { int imin=INT_MAX, ipos, i; for (i=0; i<ilen; i++) { if (iarray[i][icol]<=imin) { imin=iarray[i][icol]; } } for (i=0; i<ilen; i++) { if (iarray[i][icol]==imin) { ipos=i; break; } } return ipos; }