# 鞍点
#include<stdio.h>
int main( )
{
int m,n;
scanf("%d %d",&m,&n);
int a[m][n];
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
int c=0,b=0,k;
int max=0,min=0;
for(i=0;i<m;i++)
{
max=a[i][0];
for(j=0;j<n;j++)
{
if(max<a[i][j])
{
max=a[i][j];
b=j;
}
}
min=a[0][b];
for(k=0;k<m;k++)
{
if(min>a[k][b])
{
min=a[k][b];
c=k;
}
}
if(min==max)
{
printf("Array[%d][%d]=%d",c,b,a[c][b]);
break;
}
}
if(min!=max)
printf("None");
return 0;
}
第二种 函数
#include <stdio.h>
#define MAX_SIZE 105
int arr[MAX_SIZE][MAX_SIZE];
int m, n;
int isTrue(int value, int row, int col) {//定义函数,row行,col列
int maxRow = -111, minCol = 999;//让最大值最小,最小值最大,然后后面比较就可以赋值了
for(int i = 0; i < n; ++i) {
if(maxRow < arr[row][i]) {
maxRow = arr[row][i];
}
}
for (int i = 0; i < m; ++i) {
if (minCol > arr[i][col]) {
minCol = arr[i][col];
}
}
return(value == maxRow && value == minCol);
}
int main() {
scanf("%d %d", &m, &n);
for(int i = 0; i < m; ++i) {
for(int j = 0; j < n; ++j) {
scanf("%d", &arr[i][j]);
}
}
int flag = 0;
for(int i = 0; i < m; ++i) {
for(int j = 0; j < n; ++j) {
if(isTrue(arr[i][j], i, j)) {
flag = 1;
printf("Array[%d][%d]=%d", i, j, arr[i][j]);
} }
}
if(flag == 0) {
printf("None\n");
}
return 0;
}