c语言题之二维数组的查找
题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,3]
[4,5,6]
[7,8,9]
]
给定 n = 7,返回 true。
给定 n = 3,返回 false
解题过程加代码
首先看题目给出的是一个有顺序的数组,利用这个有序的二维数组可以很容易遍历出想要查找的那个数。先上代码一边看一边清晰思路。
#include <stdio.h>
int add(int arr[][3], int x, int y, int n)//函数的形参为:数组,行数,列数,还有n。
{int i = 0;//把i赋值为0数组的第一行int j = y - 1;//把列数赋值给j这里要-1,不-1会越界访问。while (i<=x && j>=0){if (arr[i][j] < n)//先从第一行的最后一个值来进行比较。如果小于目标值,行数加1.{i++;}else if (arr[i][j] > n)//如果大于要找的目标值,列数-1。{j--;}else//相等返回0.{return 1;}}return 0;//遍历了整个数组都没有找到目标值返回0.
}
int main()
{int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };//创建一个有序的二维数组int n = 0;//创建一个变量nscanf("%d", &n);//输入n,代表你想要找的那个数。if (add(arr, 3, 3, n))//利用if判断这个函数返回值是1的话代表数组中有n这个数字。{printf("存在\n");}else{printf("不存在\n");}return 0;
}
记住题目给出的数组条件,我们来看图来理解一下代码执行的过程。
1.创建一个二维数组
2.创建输入要查找的变量n
3.进入函数赋值i与j,第一次循环从第一行的最后一位开始
4.循环内比较arr[i][j]的值<n,i++,i++后指向下一个行最后一个的位置。
5.然后再次判断进入第二次循环比较,比较结果还是小于,i再++,找到下一个位置。
6.此时再次判断是结果不是小于了是大于,大于就证明要找的数在这一行,j–,为什么呢,因为上一次判断n大于上一行最大的那个数字,这一判断又小于这一行最大的数字所以n一定在这行中j–,来查找这一行剩下的数。
7.此时判断还是大于所以再j–。
最后成功找到,函数返回了1主函数内if判断条件成立找到了。
c语言题之二维数组的查找相关推荐
- 数据结构与算法--数组:二维数组中查找
数组 数组最简单的是数据结构,占据一整块连续的内存并按照顺序存储数据,创建数组时候,我们需要首先指定数组的容量大小,然后根据大小分配内存.即使我们只在数组中存储一个元素,亚需要为所有数据预先分配内存, ...
- C语言4种二维数组三角题
C语言4种二维数组三角题 此处都以将此三角形的元素乘以n为例 int i,j; for(i=0;i<N;i++) //行编译总是不变 for(j=0;*j<=i*;j++)a[i][j]= ...
- c语言动态生成二维数组,C语言 动态创建二维数组
/*C语言 如何动态创建二维数组 转化为一维数组申请数组,创建和释放都比较简单 */ #include #include #include #define RANK 10 #define COLUMN ...
- C语言指针和二维数组
二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有"缝隙".以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, ...
- c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc
C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...
- (c语言)编程输出二维数组中元素的最大值,要求用指针实现。
(c语言)编程输出二维数组中元素的最大值,要求用指针实现. #include<stdio.h> #include<stdlib.h> #define N 6 //行数 #def ...
- 二维数组在c语言中的作用,C语言中的二维数组
1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...
- c语言二维数组对角线输出字符,用C编程一个4*4的矩阵,用二维数组,求对角线元素的和。,c语言如何使二维数组 输出为矩阵的形式...
导航:网站首页 > 用C编程一个4*4的矩阵,用二维数组,求对角线元素的和.,c语言如何使二维数组 输出为矩阵的形式 用C编程一个4*4的矩阵,用二维数组,求对角线元素的和.,c语言如何使二维数 ...
- c语言字符二维数组传参,C语言函数传递二维数组
C语言如果给函数传递二维数组作为参数 问题的产生 先看一个传递二维数组的例子: #include void foo(int a[][], int m, int n) { int i = 1; int ...
最新文章
- AI一分钟 | 传许家印已投资贾跃亭FF;腾讯将发布可接收微信的智能音箱;阿里确认研发自动驾驶技术
- tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率 损失率,便于判断模型的训练效果:是过拟合还是欠拟合(过拟合)
- 全国计算机等级考试三级网络技术考试大纲
- python查题_python 数据库连表查询习题
- Atitit. 订单管理 收银单持久化 功能设计 基于ecshop订单结构
- 2022-03-17
- c语言无效参数视为严重错误,C语言编译错误:错误:‘-’参数类型无效(有‘int’)...
- Waymo 2020 | 2D/3D目标检测、跟踪和域自适应性冠军解决方案解析
- vue中通过js控制页面样式方法
- 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 1
- linux Pci字符驱动基本加载流程
- [Web Chart系列之五] 图形布局-Circle Layout 之实现
- python和c 的区别-Python和c语言的主要区别在哪
- 服务器芯片组 硒武,不到两个月的服务器,武器炼化出这属性是什么水平?
- OSX 安装配置Maven
- 模块度Q——复杂网络社区划分评价标准
- python web面试题部分汇总
- 微信小程序开发之实现一个弹幕评论
- 计算机开机硬盘扫描,电脑开机出现磁盘扫描故障的原因及解决妙招
- VMWare连接外网的配置操作