#include<stdio.h>
int main()
{
int a[4][4]={{2,3,9,5},{6,7,8,3},{0,5,7,5},{2,1,8,3}}
int i,j,k,i0,j0,find=0
printf("数组a:\n")
for(i=0i<4i++)
{
for(j=0j<4j++)
printf("%3d",a[i][j])
printf("\n")
}
for(i=0i<4i++) //穷举所有的行
{
j0=0
for(j=1j<4j++)
if(a[i][j]>a[i][j0])j0=j //找到第i行上最大的数a[i][j0]
k=1
for(i0=0i0<4i0++) //对找到的该数穷举所有行
if(a[i0][j0]<a[i][j0])k=0 //如它不是本列上最小的数就“一票否决”
if(k) //若确认是,就输出,并记录已找到
{
printf("鞍点是:a[%d][%d]=%d\n",i,j0,a[i][j0])
find=1
}
}
if(!find) //若未找到,则输出提示信息
printf("此数组无鞍点!\n")
return 0
}
C语言查找二维数组的鞍点详细代码如图:
具体思路:
一、先把每行的最大值求出来×到数组;
二、依次遍历每行,如果其值等于最大值,再判断在列中是否最小即可。
三、输出结果。
#include&ltstdio.h&gt
#define N 3
#define M 4
int main()
{
int i,j,k,max,min
int array[N][M]
printf("请输入数组元素:\n")
for(i=0i&ltNi++)
{
for(j=0j&ltMj++)
scanf("%d",&array&lti&gt[j])
}
printf("数组有:\n")
for(i=0i&ltNi++)
{
for(j=0j&ltMj++)
printf("%-5d\t",array&lti&gt[j])
printf("\n")
}
for(i=0i&ltNi++)
{
max=array&lti&gt[0]//用列来进行当前行来比较
for(j=0j&ltMj++)
{
if(max&ltarray&lti&gt[j])
max=array&lti&gt[j]
k=j//记录下当前一行中最大的小标
}
min=array[0][k]
for(j=0j&ltNj++)//用行来进行列比较
{
if(min&gtarray&lti&gt[k])//若在该列中有更小的,则赋值与min
min=array&lti&gt[k]
}
if(min==max)
{
printf("小标为%d,%d,鞍点为:%d",i+1,k,max)
}
}
printf("搜索结束\n")
return
}
扩展资料:define作用
被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
宏定义的作用范围仅限于当前文件,即file1.c中定义#define PI 3.14,在file2.c中该宏定义不起作用;
通过将#define PI 3.14定义在common.h中,file1.c和file2.c分别#include"common.h"的方式,该宏定义在file1.c和file2.c中都起作用。
在C或C++语言中,“宏”分为有参数和无参数两种。
参考资料:
百度百科——define(计算机专业用语)