# include <stdio.h>
# include <conio.h>
typedef struct Pos
{
int x;
int y;
}POS;
int main(void)
{
int a[3][3];
int i, j, k;
int max = 0, min = 0;
POS posMax, posMin;
printf("请输入9个整数:\n");
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
scanf("%d", &a[i][j]);
}
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
printf("%d\t", a[i][j]);
if (2 == j)
printf("\n");
}
for (i = 0; i < 3; i++)
{
max = a[i][0];
posMax.x = i;
posMax.y = 0;
for (j = 0; j < 3; j++)
{
if ( a[i][j] > max)
{
max = a[i][j];
posMax.x = i;
posMax.y = j;
}
}
min = a[posMax.x][posMax.y];
posMin.x = posMax.x;
posMin.y = posMax.y;
for (k = 0 ; k < 3; k++)
{
if ( a[k][posMax.y] < min )
{
min = a[k][posMax.y];
posMin.x = k;
posMin.y = posMax.y;
}
}
if ( (posMax.x == posMin.x) && (posMax.y == posMin.y))
{
printf("a[%d][%d]: %d是鞍点\n", posMax.x, posMax.y, a[posMax.x][posMax.y]);
}
}
return 0;
}
关键算法: 1. 寻找某一行最大值,并存贮这个最大值的位置
2. 寻找刚才那个最大值 同列的最小值 , 存储位置
3. 比较 最大值位置 和 最小值位置 相同则输出鞍点