题目:有一个3X4矩阵,要求输出其鞍点(行列均最大的值),以及它的行号和列号。
int a[3][4] = {{123,94,-10,218},
{3,9,10,-83},
{145,16,44,-99}
};
程序分析:首先要搞明白鞍点不止一个,这题肯定涉及到对二维数据的遍历,然后比较大小,先找出当前行最大值,然后判定其在当前列是否为最大值,如果是,则输出
代码如下:
#include <stdio.h> int main() { int a[3][4] ={ {123,94,-10,218}, {3,9,10,-83}, {145,16,44,-99} }; int i,j,k; char flag,flag1; for(i = 0; i < 3; i++ ) { for(j = 0; j < 4; j++) { flag = 0; flag1 = 0; for(k = 0 ;k < 4;k++) { if(a[i][j] < a[i][k])//当前行是否最大 flag = 1; } for(k = 0 ;k < 3;k++) { if(a[i][j] < a[k][j])//当前列是否最大 flag1 = 1; } if(!flag && !flag1)//当前行当前列是否都是最大 printf("hang:%d lie:%d = %d\n",i,j,a[i][j]); } } return 0; }
运行结果:
fs@ubuntu:~/qiang/andian$ ./andian hang:0 lie:3 = 218 hang:2 lie:0 = 145 fs@ubuntu:~/qiang/andian$