#include<stdio.h>

int main()

{

int a[4][5],i,j,i1,j1=0,max,s=1; /*i和j是行和列的循环变量,i1和j1是

一行中横向最大值所在的行标和列标,s是鞍点是否存在的标示量*/

for(i=0;i<=3;i++)

{

for(j=0;j<=4;j++)

scanf("%d",&a[i][j]);

}

printf("输入的数组:\n");

for(i=0;i<=3;i++)

{

for(j=0;j<=4;j++)

printf("%5d",a[i][j]);

printf("\n");

}

printf("\n");

 

for(i=0;i<=3;i++)

{

i1=i;

max=a[i1][j1];

for(j=1;j<=4;j++)

{

if(max<a[i][j])

{

max=a[i][j];

j1=j;

}

}

for(i=0;i<=3;i++)

if(max>a[i][j1])break;

if(i>3)

{

printf("a[%d][%d]=%d\n",i1,j1,max);

s=0;

}//较好,本想求出行最大和列最小,看二者是否相等,看来是多余了

麻烦啦,只需判断行最大是否为列最小集合(行最大逐个比较该列的元素)

}

if(s)

printf("不存在鞍点.\n");

return 0;

}