二维数组中的查找(C语言实现)

2023-05-16

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


思考:在这个二维数组的每一行中,最左边的数字是最小的,在每一列中,最上面的数字是最小的;那么,我们可以找到一个中间值(即第一行的最右边元素,也是最后一列的第一个元素);让这个中间值和整数比较,若中间值小于该整数,则说明这一行的值都小于该整数(即可以排除该行),若中间值大于该整数,则说明该列的所有元素都大于该整数(即可以排除该列)。

排除一行或一列后,重新找到这个中间值(剩余数组的右上角的值),继续上述比较规则,知道最后剩1个元素,如果该元素于这个整数不相等,则终止循环,返回false;否则,终止循环,返回true。


代码实现(C语言)

1、首先定义自己的 myUtil.h 文件。

#ifndef _MY_UTIL_H_
#define _MY_UTIL_H_
/*
自定义myUtil.h文件
文件中  定义了Boolean类型
		定义了TRUE和FALSE
 */
typedef unsigned char boolean;
#define FALSE '0'
#define TRUE '1'

#endif
2、编写测试  test.c  文件。
#include <stdio.h>

#include "myUtil.h"

boolean FindNum(char **array, int rows, int columns, int num);

boolean FindNum(char **array, int rows, int columns, int num) {
	boolean result = FALSE;
	int row;
	int col;
	int i = 0;
	int j = 0;
	int tag = 0;//tag标记,在方法中输出二维数组时所需要的标记
	if(array == NULL || rows < 0 || columns < 0) {
		printf("数组输入有误……\n");
		return result;
	}
	row = 0;
	col = columns - 1;
	
	// printf("使用传递过来的二维数组参数输出二维数组\n");
	// for(i = 0; i < rows*columns; i++) {
		
	// 	printf("%d,", array[i]);
	// 	if(tag == columns-1) {
	// 		tag = 0;
	// 		printf("\n");
	// 	} else {
	// 		tag++;
	// 	}
	// }
	printf("要查找的数字:%d\n", num);
	while(row < rows && col >= 0) {
		//printf("%d\n", col);
		if(array[row*col + col] == num) {
			result = TRUE;
			break;
		}
		if(array[row*col + col] > num) {
			col--;
		} else {
			row++;
		}
	}
	return result;
}

int main(int argc, char const *argv[])
{
	/* code */
	int i;
	int j;
	boolean result;
	int array[5][5] = {	{1,2,8,9,11},
			        {2,4,9,12,13},
				{4,7,10,13,15},
				{6,8,11,15,18},
				{10,12,14,18,22},};
	int num = 0; 
	
	printf("请输入一个整数num:\n");
	scanf("%d", &num);
	result = FindNum(array, 5, 5, num);
	printf("结果为【%s】\n", result == '0' ? "数组中不存在此元素" : "数组中存在此元素");
	return 0;
}

3、测试结果




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二维数组中的查找(C语言实现) 的相关文章

  • 【C、C++系列-1】C语言实现:寻找[1,100]之间的素数

    C C 43 43 系列 1 C语言实现 xff1a 寻找 1 100 之间的素数 1 问题 C语言实现 xff1a 寻找 1 100 之间的素数 2 实现代码 span class token comment 寻找 1 100 之间的素数
  • C语言实现strcmp()函数

    span class token macro property span class token directive keyword define span CRT SECURE NO WARNINGS span span class to
  • 用c语言实现 将src指向的字符串追加到dest指向字符串的后面

    实现char my strcat char dest char src 函数 返回 xff1a dest字符串的地址 功能 xff1a 将src指向的字符串追加到dest指向字符串的后面 例如 xff1a char dest 10 61 3
  • 中序计算式的计算器模型C语言实现

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 用C语言实现websocket服务器

    Websocket Echo Server Demo 背景 嵌入式设备的应用开发大都依靠C语言来完成 xff0c 我去研究如何用C语言实现websocket服务器也是为了在嵌入式设备中实现一个ip camera的功能 xff0c 用户通过网
  • 一篇文章带你搞懂扫雷小游戏(c语言实现)

    目录 前言 1 游戏设计逻辑 2 游戏思考及实现过程 2 1符号与棋盘的建立 2 2棋盘的初始化与打印 2 3布置雷 2 4 排查雷并设置结束标志 3 代码展示 test c game c game h 前言 扫雷是一款经典的小游戏 xff
  • C++:C语言实现HTTP的GET和POST请求

    似乎写代码发HTTP请求需要自己把完整的协议帧写出来 xff1f 而不是单纯填个URL就行了 xff0c 那既然完整协议帧都写出来了 xff0c 那我直接TCP发不就可以了 xff1f 还是说不能这样 基本你百度搜 c 43 43 发送ht
  • 汉诺塔问题(C语言实现)

    前言 一 汉诺塔圆盘的移动步数 二 汉诺塔圆盘移动步骤 总结 前言 汉诺塔 xff08 Tower of Hanoi xff09 xff0c 又称河内塔 xff0c 是一个源于印度古老传说的益智玩具 大梵天创造世界的时候做了三根金刚石柱子
  • TCP通信模型(C语言实现)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 今天我们来分享TCP通信模型 xff0c 并且用C语言实现它 目录 一 我们将实现三个示例功能 xff1a 二 TCP服务器搭建流程 xff08 1 xff
  • C语言实现UDP通信

    UDP通信 UDP是一种无连接的尽最大努力交付的不可靠连接 xff0c 通信之前无需先建立连接 xff0c 自然而然 xff0c 通信之后也就无需再释放连接 通信的套接字 UDP所采用的通信接口与前面讲过的TCP通信接口相同 xff0c 只
  • C++/C语言实现HTTP的GET和POST请求

    阅读目录 HTTP请求和IP TCP 实现GET请求 实现POST请求 xff1a 参考 xff1a 回到顶部 HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建sock
  • C语言实现http post请求和get请求,post请求可以上传图片和文件

    文章目录 1 http协议简介2 http协议分析2 1 http请求2 1 1 请求行2 1 1 1 请求方法2 1 1 2 URL2 1 1 3 协议版本2 1 1 4 请求行总结 2 1 2 请求头部2 1 3 请求数据 2 2 ht
  • C语言实现“井字棋”游戏(三子棋)人机对弈

    井字棋游戏 xff1a 即三子棋 xff0c 英文名叫Tic Tac Tic xff0c 是一种在3 3格子上进行的连珠游戏 xff0c 和五子棋比较类似 xff0c 由于棋盘一般不画边线框 xff0c 格线排成井字故得名 题目分析 xff
  • windows下C语言实现TCP通信

    编译器 xff1a vs2017 语言 xff1a c语言 具体的原理可以在其他博客看到 在我学习winsock编程时 xff0c 发现那些博客代码居然在我机器上没一个能运行 xff0c 可能是我水平有限 于是我根据winsock相关知识
  • C语言实现1/1-1/2+1/3-...-1/100求和

    观察题目要求可以看出 xff0c 底数为奇数是前面符号为正 xff0c 偶数是则为负 那么我们可以考虑使用一下方式完成求解 解法一 xff1a span class token macro property span class token
  • 数据结构哈希查找的C语言实现

    大家好 xff0c 我是练习编程时长两年半的昆工第一ikun xff0c 今天我们来分享查找算法中的一个 哈希查找 xff0c 哈希查找适用于有庞大的数据量时的查找 xff0c 是一种很好用的查找算法 xff0c 话不多说 xff0c 开团
  • 比较冒泡排序、选择排序和快速排序的时间(C语言实现)

    文章目录 前言代码设计代码实现运行结果结果分析稳定性测试 总结 前言 本文主要比较冒泡排序 快速排序 选择排序的时间 冒泡排序和快速排序的思想可以参考我转载的以下博文 xff1a https blog csdn net gogo0707 a
  • 二叉树递归遍历(C语言实现)

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 使用c语言实现的http get post请求

    这里写目录标题 背景参考案例 具体实现请求代码模板flask接收示例 背景 我目前需要解决一个需求 xff0c 将一个c工程中的特定数据转发到VUE前端框架上做界面展示 xff0c 且该框架已经有后端为flask框架 所以得考虑如何将c工程
  • C语言实现TCP编程

    C语言实现TCP编程 1 主机字节序和网络字节序2 套接字的地址结构IP地址转化的方法 3 TCP的网络接口4 TCP服务器端的编程流程5 TCP客户端的编程流程6 运行结果 1 主机字节序和网络字节序 主机字节序 xff1a 不同的芯片

随机推荐

  • Qt小项目(三):定时器和日历

    UI QTime和Qtimer类 类区别QTimer定时器类 xff0c 当时间溢出 xff08 记时超过定时区间 xff09 的时候 xff0c 就会发出timeout信号 xff0c 触发槽函数QTime时间类 xff0c 提供时分秒
  • stm32延时函数解读

    时钟树 寄存器 SysTick gt LOAD xff1a 计时器装载值 SysTick gt VAL 当前值 SysTick gt CTRL 控制寄存器 延时初始化函数 计算AHB时钟 span class token keyword v
  • 基于 ART-PI FMC驱动SDRAM

    引脚接线图 SDRAMGPIO解释FMC A0 5PF0 5地址线FMC A6 9PF12 15地址线FMC A10 12PG0 2地址线FMC D0 1PD14 15数据线FMC D2 3PD0 1数据线FMC D4 12PE7 15数据
  • 基于ART-PI SPI驱动W25Q128

    吐槽和避坑 弄spi弄了一天 xff0c 使用的开发板是art pi家的h750 xff0c 本来准备直接用rt thread studio生成的 xff0c 但是不知道怎么回事配置出的工程文件都有问题 xff0c 不是线程运行不了就是缺少
  • TT数鸭子-暴力(csp-t1模拟)

    题目 输入输出样例 xff1a 题解 xff1a 我们整个题就是使用暴力的方法进行运算 将每一只鸭子看作是十进制的数 xff0c 不断对每一位读取 xff08 采用对十整除和取余数的方法 xff09 我们对每一个鸭子都进行判断 如果满足这个
  • C++ 输入10个数字,找出最大值、最小值及其角标 的程序

    using namespace std int main int a 10 int max min int max n min n int i for i 61 0 i lt 10 i 43 43 cin gt gt a i max 61
  • CheckedListBox 当中项的状态改变

    首先 xff0c 说下我需要实现的功能 xff0c 就是把获得数据Id显示在CheckedListBox上 xff08 单击空白处不响应 xff09 xff0c 如果在CheckedListBox上勾选的项就加入到list集合中 xff0c
  • Windows 下使用 WSL 安装 Kali Linux 子系统

    Windows 下使用 WSL 安装 Kali Linux 子系统 前言操作流程开启 适用于 Linux 的 Windows 子系统 功能通过 Microsoft Store 安装修改安装路径设置用户名和密码安装工具 WSL1 和 WSL2
  • ArchLinux踩过的那些坑

    1 usb模塊有問題 usb3 0的U盤 43 usb2 0的電腦 裝不上 usb2 0的U盤 43 usb3 0的電腦 裝得上 2 沒有聲音 创建 etc asound conf或 HOME asoundrc xff0c 在里面添加 xf
  • Anaconda中,onnx和pil冲突,无法安装pil解决办法

    onnx和pil冲突 xff0c 无法安装pil解决办法 conda span class token function install span pil 失败 提示onnx和pil有conflict 执行如下命令即可 conda span
  • 笔记本电脑连接wifi显示无网络无法上网

    笔记本电脑连接wifi显示无网络无法上网 一 发现问题二 解决问题三 问题解决 一 发现问题 手机可以用wifi上网 xff0c 但笔记本电脑连接相同wifi却显示无internet不能上网 二 解决问题 1 打开设置点击 网络和inter
  • SystemVerilog基础笔记

    一 Training 1 数据类型 a 两态变量 xff1a bit byte 8bit shortint 16bit int 32bit longint 64bit shortreal相当于c的float 占32bit的内存空间 real
  • opencascade + QT5 开发环境设置(Windows系统下)

    先下载opencascade7 6 0 QT5 12 12 VS2017 或2019 xff0c 两者都行 的安装包 都需要在相应官网注册 xff0c 然后进行安装 根据安装提示 xff0c 依次点击下一步即可 安装完opencascade
  • C语言:通讯录的简单实现

    目录 前言 一 题目要求和设计思路 xff1a 1 主函数内 xff1a 1 gt 基础框架 xff1a 2 gt 需要定义的变量 2 头文件列表 1 gt 结构体contacts和结构体maillist 2 gt 定义常量 3 功能函数
  • YApi启动命令

    1 进入Yapi安装目录 yapi my yapi vendors 2 启动命令 pm2 start server app js watch
  • 算法设计题3.18-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版

    习题集完整源码部分 第3章 栈和队列 数据结构习题集 严蔚敏 吴伟民版 源码使用说明 链接 数据结构 xff08 严蔚敏 吴伟民版 xff09 课本源码 43 习题集解析使用说明 课本源码合辑 链接 数据结构 课本源码合辑 习题集全解析 链
  • Ansible的基本搭建安装与配置及各参数选项的作用

    Ansible简介 xff1a ansible是什么 xff1f ansible是自动化运维工具 自动化运维工具那么多 xff0c 比如 xff08 statstack xff0c puppet xff0c cfengine chef fu
  • Python在字符串中引用变量

    在字符串中加入变量有三种方法 xff1a 1 43 连字符 name 61 39 zhangsan 39 print 39 my name is 39 43 name 结果为 my name is zhangsan 2 字符 name 61
  • 废旧笔记本改造安装黑群晖打造私人NAS超级详细图文教程

    事情是这样的 在我们楼下居住了10年的租客搬走了 xff0c 我感到十分的悲伤 xff01 怀着沉重的心情到楼下去收拾空荡荡的房子 然后 在一个不起眼的柜子里发现了一台被丢弃的废旧联想笔记本 xff01 作为一个合格的垃圾佬 xff0c 怎
  • 二维数组中的查找(C语言实现)

    题目描述 在一个二维数组中 xff0c 每一行都按照从左到右递增的顺序排序 xff0c 每一列都按照从上到下递增的顺序排序 请完成一个函数 xff0c 输入这样的一个二维数组和一个整数 xff0c 判断数组中是否含有该整数 思考 xff1a