【咀嚼C语言】二维数组找鞍点
【要求】找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
【咀嚼】我的思路是,某一行上有可能有两个相等的数,且都是最大值,如果只判断第一个数,第二个便不再判断,而第二个数才是其所在的列上最小的,就会把一些鞍点漏掉(在列上也是如此,相同的都要判断)。所以我设定一行上可以有一个以上鞍点,也就是说,如果整个数组的元素都是相同的,那么这个数组里的每一个元素都是鞍点。
据于此,我写下如下代码
1 #include<stdio.h> 2 int main() 3 { 4 int ctu; 5 do 6 { //begin 7 int a[18][18],i,j,b=1,c=0,d,m,n; //b用来标记,c用来计数,d是另外的循环控制 8 printf("请自定义数组大小,如3*4\n"); 9 scanf("%d*%d",&m,&n);10 printf("请输入一个%d×%d的二维数组\n",m,n);11 for(i=0;i<m;i++)12 for(j=0;j<n;j++)13 scanf("%d",&a[i][j]); //输入数组14 for(i=0;i<m;i++) //第一层循环,控制行15 for(j=0;j<n;j++) //第二层循环,控制列16 {17 for(d=0;d<n;d++) //判断是否行上最大18 if(a[i][j]<a[i][d]) b=0;19 if(b==0) continue;20 for(d=0;d<m;d++) //判断是否列上最小21 if(a[i][j]>a[d][j]) b=0;22 if(b==0) continue;23 c++;24 printf("第%d个鞍点:%d,位于第%d行、第%d列\n",c,a[i][j],i+1,j+1);25 }26 if(c==0)printf("该二维数组没有鞍点");27 else printf("该数组有%d个鞍点",c);28 printf("\n是否继续?\n输入1继续,否则任意键退出\n"); //end29 scanf("%d",&ctu);30 }while(ctu==1);31 return 0;32 }
但是在测试时出现了如下错误,即只能判断出所有的元素都相等的情况,一般情况则无法判断。
所有的元素都相同,可以正确地把所有的数字都找出来,但是输入一个普通的数字,则无法正常找出,下图
经过分析,原来是在第16与17行之间少了一个让判断标志b重置为1的语句,导致如果第一个元素不成立,则b变成了0,之后的每一个元素都会直接跳出。
修改如下:
1 #include<stdio.h> 2 int main() 3 { 4 int ctu; 5 do 6 { //begin 7 int a[18][18],i,j,b,c=0,d,m,n; //b用来标记,c用来计数,d是另外的循环控制 8 printf("请自定义数组大小,如3*4\n"); 9 scanf("%d*%d",&m,&n);10 printf("请输入一个%d×%d的二维数组\n",m,n);11 for(i=0;i<m;i++)12 for(j=0;j<n;j++)13 scanf("%d",&a[i][j]); //输入数组14 for(i=0;i<m;i++) //第一层循环,控制行15 for(j=0;j<n;j++) //第二层循环,控制列16 {17 b=1; //先前的错误就在于此,要重置b为118 for(d=0;d<n;d++) //判断是否行上最大19 if(a[i][j]<a[i][d]) b=0;20 if(b==0) continue;21 for(d=0;d<m;d++) //判断是否列上最小22 if(a[i][j]>a[d][j]) b=0;23 if(b==0) continue;24 c++;25 printf("第%d个鞍点:%d,位于第%d行、第%d列\n",c,a[i][j],i+1,j+1);26 }27 if(c==0)printf("该二维数组没有鞍点");28 else printf("该数组有%d个鞍点",c);29 printf("\n是否继续?\n输入1继续,否则任意键退出\n"); //end30 scanf("%d",&ctu);31 }while(ctu==1);32 return 0;33 }
测试成功
转载于:https://www.cnblogs.com/fengzy/archive/2011/11/12/2246739.html
【咀嚼C语言】二维数组找鞍点相关推荐
- c语言二维数组找鞍点,C语言,二维数组 找鞍点
还是以前写过的东西.. 鞍点是什么?百度出来的东西 鞍点(Saddle point)在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点.在泛函中,既不是极大值点也不是极小值点的临界 ...
- 二维数组找鞍点C++
题目描述 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,二维数组的行列n,m以及二维数组均由键盘输入,当存在鞍点时,输出位置以及该点的值,当不存在鞍点时,输出-1 例如输入: ...
- C语言二维数组找出交集,【leetcode C语言实现】剑指 Offer 04. 二维数组中的查找...
题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: ...
- 二维数组找鞍点c语言,怎么求一个二维数组的鞍点
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #define MAX 100 int main() { int a[ MAX ] ...
- C语言练习二 :找出一个二维数组的鞍点
1.鞍点的定义:某个元素在其所在行中最大.所在列中最小. 2.程序代码 //求一个二维数组的鞍点 二维数组可能没有鞍点,如果有,只能有一个 #include<stdio.h> int ma ...
- java利用二维数组查找鞍点_java找二维数组的鞍点
LOGO 制作者: 制作者: 班级: 班级: 学号: 学号: 指导老师: 指导老师: 一.设计要求 求一个二维数组中的鞍点,即 该位置上的元素在该...... 54,98 19,32,34,65,34 ...
- C语言经典100题——求一个二维数组的鞍点
<1>题目描述 找一个二维数组中的鞍点,即该位置上的元素在该行上最大.在该列上最小.也可能没有鞍点 1 2 3 4 5 6 7 8 9 //3为该二维数组中鞍点 <2>思路分析 ...
- c语言定二维义数组,C语言二维数组超细讲解
用一维数组处理二维表格,实际是可行的,但是会很复杂,特别是遇到二维表格的输入.处理和输出. 在你绞尽脑汁的时候,二维数组(一维数组的大哥)像电视剧里救美的英雄一样显现在你的面前,初识数组的朋友们还等什 ...
- c语言程序设计歌手大奖赛,C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委...
导航:网站首页 > C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委 C语言二维数组怎么做:设计青年歌手参加歌曲 ...
- C语言二维数组元素的多种表示方法小结
C语言二维数组元素的多种表示方法小结 昨天,一个小可爱问我,为何函数中,数组可以改变主函数中的值,比如b[i],就可以改原来数组中的值.其实b[i] 等价于 *(b + i)也是通过地址间接更改的,小 ...
最新文章
- Office 365系列(4)------Cutover Migrate 搬迁方式至O365上来方法及步骤总结
- 去掉ILDasm的SuppressIldasmAttribute限制
- 解决webpack打包vue项目后,部署完成后,刷新页面页面404
- ppt 的局部分大功能软件介绍.ZoomIt
- 【mark】linux 终端命令行下的快捷键(自己已验证所有)
- 查找字符串中要查找的字符串最后一次出现的位置
- 南通大学计算机组成原理期末考试题,南通大学计算机组成原理期末考试范围.docx...
- 软件用户体验非常好的前端设计
- VUE3 Router路由
- 设为首页收藏本站js代码(引自ecshop模板堂(ecmoban.com)
- 中国省市SQL表---市级行政单位表
- ARToolkit Part 1: Labelling 详解
- 怎样设定计算机屏幕锁定时间,电脑屏幕锁屏时间怎么设置
- 计算机应用基础第四章电子表格测试,2019年计算机应用基础第四章测试答案
- 毕业四年间,一壶漂泊,歌者默然(转帖)
- PHP可视化告警规则引擎,开源可视化规则引擎 决策引擎与规则引擎有什么区别?...
- Unraid使用记录:使用Docker与虚拟机
- 1099:零起点学算法06——再来一题除法算术题
- 重复代码 Duplicated Code
- unittest使用详解
热门文章
- 基于PCA进行多光谱和全色图像融合
- 使用虚拟机搭建ClouderaManager平台,并自动部署一个hadoop集群(CDH)
- Flutter之Visibility和Opacity使用说明
- php数组是否存在数组,php判断数组中是否存在某值
- python3中input输入浅谈_对Python3中的input函数详解
- 2019年互联网大厂月饼大盘点,最丑的一家竟然是...
- hx711压力传感器工作原理_压电式压力传感器原理,你了解吗?
- C语言substr函数用法,自己实现substr函数——C语言
- junit 生成html报告,gradle – 如何为JUnit 5测试创建HTML报告?
- 甘特图制作_甘特图是用什么软件制作?