C语言之查询二维数组中的鞍点

鞍点:即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。

分析:

    1.找出一行中值最大的元素,
    2.检查它是否为该列中最小值,如果是,则是鞍点,输出该鞍点;
    3.如果不是,则再找下一行的最大数......
    4.如果每一行的最大数都不是鞍点,则此数组无鞍点

#include<stdio.h>//头文件 
#define N 3 //宏定义 
#define M 4 //宏定义 
/*C语言实现找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。
也可能没有鞍点。*/
*分析
    1.找出一行中值最大的元素,
    2.检查它是否为该列中最小值,如果是,则是鞍点,输出该鞍点;
	3.如果不是,则再找下一行的最大数......
	4.如果每一行的最大数都不是鞍点,则此数组无鞍点。*/ 
int main()//主函数 
{
  int i,j,k,a[N][M],max,maxj,flag;//定义整型变量和二维数组 
  printf("请输入数组:\n");//提示语句 
  for(i=0;i<N;i++)
  { 
    for(j=0;j<M;j++)
    {
      scanf("%d",&a[i][j]);//往数组里存数 
	  getchar();

    }
  }
  for(i=0;i<N;i++)
  {
    max=a[i][0]; //刚刚开始循环时假设a[i][0]最大 
    maxj=0; //将列号0赋给maxj保存 
    for(j=0;j<M;j++) //找出第i行中的最大数 
    {
      if(a[i][j]>max)
      {
        max=a[i][j]; //将本行最大的数放在max中 
        maxj=j; //将最大数所在的列号存放在maxj中 
      }
    } 
    flag=1; //先假设是鞍点,以flag为1代表 
    for(k=0;k<N;k++)
    {
      if(max>a[k][maxj])
      { //将最大的数和其同列元素相比 
        flag=0; //如果max不是同列最小,表示不是鞍点 
        continue;
      }
    }
    if(flag)
    {
      printf("a[%d][%d]=%d\n",i,maxj,max); //输出鞍点的值和所在行列号 
      break;
    }
  }
  if(!flag)
  { 
    printf("鞍点不存在!\n");//提示语句 
  }
  getchar();
  getchar();
  return 0;//主函数返回值为0 
}

根据上面的函数,我们可以得到对应的结果了!

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值