#include <stdio.h>
#include <stdlib.h>
//定义寻找每行最大数的函数
int max_number(int k,int a[3][3])
{
int i;
int max_num=0; //设最大值初值为0
max_num=a[k][0]; //假设每k行的第一个数为最大值
for(i=1;i<3;i++) //i=1 从第二列开始
{
if(max_num<a[k][i]) //如果第k行第i列a[k][i]大于最大值max_num
{
max_num=a[k][i]; //则把第k行第i列的值赋值给最大值max_num
}
}
return max_num; //返回最大值
}
//定义寻找每列最小数的函数
int min_number(int k,int a[3][3])
{
int i;
int min_num=0;//设最小值最初值为0
min_num=a[0][k];//假设每k列的第一个数为最小值
for(i=1;i<3;i++) //i=1 从第二行开始
{
if(min_num>a[i][k]) //如果第i行第k列a[i][k]小于最小值min_num
{
min_num=a[i][k]; //则把第i行第k列a[i][k]的值赋值给最小值min_num
}
}
return min_num; //返回最小值
}
int main()
{
int n[3][3]={{1,2,3},{4,5,6},{7,8,9}};//定义数组
int i,j;
for(i=0;i<3;i++) //行遍历,每行
{
int temp=0; //作临时变量,每下一行,都要把temp赋值为0,
temp=max_number(i,n); //这样每次行循环时,temp都是新的值,比如第一次循环为3,第二次为6,第三次为9
for(j=0;j<3;j++) //列遍历,每列
{
if(temp==min_number(j,n)){ //调用函数,每列的最小值都与当前行的最大值temp相比,如题目所说,相等则为所求值
printf("鞍点(该行上最大,且该列最小)为:%d",temp);
}
else
{
continue;//如果没有鞍点,就结束一次循环,换下一次循环直到所有循环都没有找到鞍点,打印没有鞍点
printf("没有鞍点");
// break;
}
}
}
return 0;
}
C语言找出一个二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,可能没有鞍点。
最新推荐文章于 2024-07-09 18:00:00 发布