所谓鞍点,就是在一行之中最大,一列之中最小 如: 4 5 65 48 -4 7 50 5 100 3 -56 81 19 32 -11 9 10 -1 69 -28 1 37 那么输出: 2 1 32

#include <stdio.h>
#define M 50
#define N 50
int main() { int m, n, i, j, s, t, flag; int a[M][N] = { 0 }; int max[M], min[N];//二维数组与一维数组结合 scanf("%d %d", &m, &n);/输入行数m与列数n/ for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]);/输入第i行第j列的元素/ } } for (i = 0; i < m; i++) { s = 0; for (j = 1; j < n; j++) { if (a[i][s] < a[i][j]) s = j; } max[i] = s;/找出第i行的最大数,将其下标存入max[i]/ } for (j = 0; j < n; j++) { t = 0; for (i = 1; i < m; i++) { if (a[t][j] > a[i][j]) t = i; } min[j] = t;/找出第j列的最大数,将其下标存入min[i]/ } for (i = 0; i < m; i++) { j = max[i]; if (min[j] == i) { flag = 1; s = i; t = j; break; } else flag = 0; } if (flag == 1) printf("%d %d\n%d", s, t, a[s][t]); else printf("no"); return 0; }