解决这个题花费了一个多小时的时间,最终还是解决了,我的基本是思路是先找出某一行最大的,然后再找某一列最小的,一个for循环贯穿整个程序,一行一行的来比较,然后在每一行进行列的比较就可以了。可能看起来比较简单,还是建议自己动手敲一敲,你会发现很多意想不到的错误!!!!
#include <stdio.h>
#define N 4
#define M 5
int main(void)
{
int a[N][M];
int i,j,k,max,num,flag;
printf("请输入数字:\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];//先把第i行第一列当做最大的
num=0;//把列号给num
for(j=0;j<M;j++)//某一列一次循环
{
if(a[i][j]>max)
{
max=a[i][j];
num=j;
}
}
flag=1;
for(k=0;k<N;k++)//在每一行的num列找最小的
{
if(max>a[k][num])
{
flag=0;
continue;//跳出循环,说明不是鞍点
}
}
if(flag)
{
printf("a[%d][%d]=%d是鞍点",i,num,max);
break;
}
}
if(!flag)
{
printf("鞍点不存在!!!\n");
}
return 0;
}