#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 5//定义数组的行列数
#define M 3
int main()
{
int a[N][M];
time_t t;
srand((unsigned) time(&t));
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
a[i][j]=1+(int)(10.0*rand()/(RAND_MAX+1.0));//利用随机函数生成1-10范围内的任意整数,RAND_MAX是随机函数的上限
printf("%d ",a[i][j]);
}
printf("\n");//隔行换行
}
int none=0;//none代表无鞍点的数目
for(int i=0;i<N;i++)
{
int column,line;//column,line代表最大值的列号 、行号。
int max=a[i][0];//定义每行的第一个元素为初始最大值
column=0;line=i;//colum,line从i行的第一个元素记起
for(int j=0;j<M;j++)
{
if(max<a[i][j])
{
max=a[i][j];//新的最大值
line=i;//最大值的行号
column=j;//最大值的列号
}
}
printf("\n\n第%d行中最大的数是:%d,数组中的位置是a[%d][%d]\n",i+1,max,line,column);
int line_count=0;//累计数组元素在其列中比max小的数目
for(int k=0;k<N;k++)
{
if(a[line][column]<a[k][column])
line_count++;
}
if(line_count==(N-1))//如果line_count=N-1表示max比所有此列的元素都小
printf("\n\n此二维数组中存在鞍点,鞍点是:%d,数组中的位置是a[%d][%d]\n",max,line,column);
else
none++;//如果line_count不是比其列内所有的元素都小,那么none加1
}
if(none==N)
printf("此二维数组中不存在鞍点!");
system("PAUSE");//显示窗口停留
return 0;
}
评论