找出一个二维数组的“鞍点”,输出该点的值和所在的行和列。“鞍点”即该位置上的元素在该行上最大,在该列上最小。也有可能没有鞍点。(要求:至少准备两组测试数据,
(1)有鞍点:
9 80 205 40
90 -60 96 1
210 -3 101 89
(2)没有鞍点:
9 80 205 40
90 -60 196 1
210 -3 101 89
45 54 156 7
#include<stdio.h>
#define N 4
#define M 4
int main()
{
int i,j,k,a[N][M],max,maxl,flag;
printf("please input matrix:\n");
for (i=0;i<N;i++) //输入数组
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{
max=a[i][0];//开始时假设a[i][0]最大
maxl=0;
for(j=0;j<M;j++) //找出第每行中的最大数
if(a[i][j]>max)
{
max=a[i][j]; //将本行的最大数存放在max中
maxl=j;//最大数的列号存放在maxl中
}
flag=1;
for(k=0;k<N;k++)
if (max>a[k][maxl]) //将最大数和同列元素相比
{
flag=0;
continue;
}
if(flag==1) //flagl为1表示是鞍点
{
printf("a[%d][%d]=%d\n",i,maxj,max);//输出鞍点的值和所在行列号
break;
}
}
if(flag==0) //flag为0表示鞍点不存在
printf("It is not exist!\n");
return 0;
}