当前位置: 首页 > news >正文

四、C语言中的数组:如何输入与输出二维数组(数组,完)

本章的学习内容如下 

四、C语言中的数组:数组的创建与初始化
四、C语言中的数组:数组的输入与元素个数
C语言—第6次作业—十道代码题掌握一维数组
四、C语言中的数组:二维数组

 1.二维数组的输入与输出

当我们输入一维数组时需要一个循环来遍历下标,二维数组有两个下标 ,所以我们需要两个循环嵌套使用来遍历下标。

# include <stdio.h>
int main()
{int arr[3][4] = { 1,2,3,4,5,6,7,8,9,1,2,3 };//完全初始化int i = 0;int j = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 4; j++) {scanf("%d", &arr[i][j]);//输入
}}for (i = 0; i < 3; i++) {for (j = 0; j < 4; j++) {printf("% d", arr[i][j]);}printf("\n");//按数组的行换行}return 0;
}

2.二维数组的存储

打印每一个元素的地址,我们可以发现,每个元素是按00,01,02,03,10.....的下标顺序存储的,每个整型元素占四个字节的空间。

# include <stdio.h>
int main()
{int arr[3][4] = { 1,2,3,4,5,6,7,8,9,1,2,3 };//完全初始化int i = 0;int j = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 4; j++) {printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);//打印每一个元素的地址}}return 0;
}

3.变长数组

数组的长度用变量指定,无需初始化

int n = a+b;
int arr[n];

比如如下代码指示了如何用一个变量指定一维数组的长度并打印它。

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);//根据输⼊数值确定数组的⼤⼩int arr[n];int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}for (i = 0; i < n; i++){printf("%d ", arr[i]);}return 0;
}

4.数组练习题:二分法查找数组中的某个元素

效率会比遍历整个数组高一半。二分查找(折半查找) 的规则:在一个升序数组中找到这个元素的下标即能定位到这个元素,不断折半查找与想要找到的这个元素进行对比,即可得到这个元素所在的区间,不断缩小区间,就可以得到这个元素的所在位置。

4.1冒泡排序

所以第一步应该是对现有的数组进行升序排列。我们可以使用冒泡排序的方法,将数组的元素按顺序两两对比,符合升序的位置不变,不符合升序的位置交换。

比如当我们初始化一个数组int arr[9] = {5,78,43,2,3,5,7,9,156};第一个循环是i从0开始依次对比arr[i]和arr[i+1]的大小,当条件if (arr[i] >= arr[i + 1])成立时,交换位置,在交换的过程中,使用中间变量来暂存;经过一轮对比,我们得到156这个最大值的正确位置。最大值156确定后,排除这个数,将剩下的值依次找到最大值,所以这是一个嵌套循环,在代码撰写的过程中,记住检查各个变量的值,注意不要溢出。

如下图所示我们可以看到,现在的数组arr[]已经被升序排列,接下来让我们继续实现二分查找。

# include <stdio.h>
int main() 
{int arr[9] = {5,78,43,2,3,5,7,9,156};int length = sizeof(arr) / sizeof(arr[0]);int i = 0;int j = 0;int r = 0;for (j = length-1;j > 0;j--) {for (i = 0; i < j; i++) {int temp = 0;if (arr[i] >= arr[i + 1]) {int temp = arr[i + 1];arr[i + 1] = arr[i];arr[i] = temp;}}}for (r = 0; r < length; r++) {printf("%d\n", arr[r]);}return 0;
}

 

4.2 二分查找的步骤

  1. 初始化:设定两个指针,分别指向数组的首部和尾部(left = 0right = length of array - 1)。

  2. 循环:当 left <= right 时,执行循环:

    • 找到中间元素的索引 mid = (left + right ) / 2)
    • 比较中间元素与目标值:
      • 如果中间元素等于目标值,说明找到了目标,返回 mid
      • 如果中间元素小于目标值,则说明目标值位于中间元素的右侧,调整 left 指针到 mid + 1
      • 如果中间元素大于目标值,则说明目标值位于中间元素的左侧,调整 right 指针到 mid - 1
  3. 返回结果:如果循环结束仍未找到目标值,说明目标值不存在于数组中,返回 -1 或其他标记值表示未找到。

我们的任务是利用二分查找的方法找到数组中的元素43。如下图所示,我们成功地找出了元素43的数组下标是6。我们把排序和查找的代码联合起来如下所示,这样我们就可以实现一个数组的排序与元素查找啦!

# include <stdio.h>
int main() 
{int arr[9] = {5,78,43,2,3,5,7,9,156};int length = sizeof(arr) / sizeof(arr[0]);int i = 0;int j = 0;int r = 0;for (j = length-1;j > 0;j--) {for (i = 0; i < j; i++) {int temp = 0;if (arr[i] >= arr[i + 1]) {int temp = arr[i + 1];arr[i + 1] = arr[i];arr[i] = temp;}}}/*for (r = 0; r < length; r++) {printf("%d\n", arr[r]);}*/int left = 0;//区间最小值的数组下标int right = length-1;//区间最大值的数组下标int mid = 0;//区间中点值的数组下标int target = 43;//要找的目标元素while (left <= right) {mid = (left + right) / 2; if (target == arr[mid]){printf("%d", mid);break;}else if (target<arr[mid]) {right = mid-1;}else {left = mid + 1;}}return 0;
}

 

相关文章:

四、C语言中的数组:如何输入与输出二维数组(数组,完)

本章的学习内容如下 四、C语言中的数组&#xff1a;数组的创建与初始化四、C语言中的数组&#xff1a;数组的输入与元素个数C语言—第6次作业—十道代码题掌握一维数组四、C语言中的数组&#xff1a;二维数组 1.二维数组的输入与输出 当我们输入一维数组时需要一个循环来遍历…...

基于python+vue智慧农业小程序flask-django-php-nodejs

传统智慧农业采取了人工的管理方法&#xff0c;但这种管理方法存在着许多弊端&#xff0c;比如效率低下、安全性低以及信息传输的不准确等&#xff0c;同时由于智慧农业中会形成众多的个人文档和信息系统数据&#xff0c;通过人工方法对知识科普、土壤信息、水质信息、购物商城…...

好用的GPTs:指定主题搜索、爬虫、数据清洗、数据分析自动化

好用的GPTs&#xff1a;指定主题搜索、爬虫、数据清洗、数据分析自动化 Scholar&#xff1a;搜索 YOLO小目标医学方面最新论文Scraper&#xff1a;爬虫自动化数据清洗数据分析 点击 Explore GPTs&#xff1a; Scholar&#xff1a;搜索 YOLO小目标医学方面最新论文 搜索 Scho…...

使用Qt自带windeployqt打包QML的exe

1.在开始菜单输入CMD找到对应的Qt开发版本&#xff0c;我的是Qt5.15.2(MinGW 8.1.0 64-bit)。 2.在控制台输入如下字符串&#xff0c;格式为 windeployqt exe绝对路径 --qmldir 工程的绝对路径 如下是我的打包代码。 我需要打包的exe的绝对路径 D:\Prj\Code\Demo\QML\Ana…...

C代码快速傅里叶变换-分类和推理-常微分和偏微分方程

要点 C代码例程函数计算实现&#xff1a; 线性代数方程解&#xff1a;全旋转高斯-乔丹消元&#xff0c;LU分解前向替换和后向替换&#xff0c;对角矩阵处理&#xff0c;任意矩阵奇异值分解&#xff0c;稀疏线性系统循环三对角系统解&#xff0c;将矩阵从完整存储模式转换为行索…...

计算机组成原理 双端口存储器原理实验

一、实验目的 1、了解双端口静态随机存储器IDT7132的工作特性及使用方法 2、了解半导体存储器怎样存储和读出数据 3、了解双端口存储器怎样并行读写&#xff0c;产生冲突的情况如何 二、实验任务 (1)按图7所示&#xff0c;将有关控制信号和和二进制开关对应接好&#xff0c;…...

[音视频学习笔记]六、自制音视频播放器Part1 -新版本ffmpeg,Qt +VS2022,都什么年代了还在写传统播放器?

前言 参考了雷神的自制播放器项目&#xff0c;100行代码实现最简单的基于FFMPEGSDL的视频播放器&#xff08;SDL1.x&#xff09; 不过老版本的代码参考意义不大了&#xff0c;我现在准备使用Qt VS2022 FFmpeg59重写这部分代码&#xff0c;具体的代码仓库如下&#xff1a; …...

GPT-5可能会在今年夏天作为对ChatGPT的“实质性改进”而到来

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会

摘要&#xff1a;本文整理自阿里云开源大数据平台徐榜江 (雪尽)&#xff0c;关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会&#xff0c;内容主要分为以下四部分&#xff1a; 1、Flink CDC 新仓库&#xff0c;新流程 2、Flink CDC 新定位&#xff0c;新玩法 3、Flin…...

部署单节点k8s并允许master节点调度pod

安装k8s 需要注意的是k8s1.24 已经弃用dockershim&#xff0c;现在使用docker需要cri-docker插件作为垫片&#xff0c;对接k8s的CRI。 硬件环境&#xff1a; 2c2g 主机环境&#xff1a; CentOS Linux release 7.9.2009 (Core) IP地址&#xff1a; 192.168.44.161 一、 主机配…...

Django日志(三)

内置TimedRotatingFileHandler 按时间自动切分的log文件,文件后缀 %Y-%m-%d_%H-%M-%S , 初始化参数: 注意 发送邮件的邮箱,开启SMTP服务 filename when=h 时间间隔类型,不区分大小写 S:秒 M:分钟 H:小时 D:天 W0-W6:星期几(0 = 星期一) midnight:如果atTime未指定,…...

【吾爱破解】Android初级题(二)的解题思路 _

拿到apk&#xff0c;我们模拟器打开看一下 好好&#xff0c;抽卡模拟器是吧&#x1f600; jadx反编译看一下源码 找到生成flag的地方&#xff0c;大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…...

富格林:谨记可信计策安全做单

富格林悉知&#xff0c;现货黄金由于活跃的行情给投资者带来不少的盈利的机会&#xff0c;吸引着众多的投资者进场做单。但在黄金投资市场中一定要掌握可信的投资方法&#xff0c;提前布局好策略&#xff0c;这样才能增加安全获利的机会。不建议直接进入市场做单&#xff0c;因…...

【工具使用】mingw64编译完成运行可执行文件时出现乱码

一&#xff0c;问题现象&#xff1a; notepad设置的时UTF-8编码&#xff1a; mingw64命令行设置的编码格式为&#xff1a; 二&#xff0c;问题原因&#xff1a; 在执行的时候&#xff0c;windows下的编码格式是GBK 三&#xff0c;解决方法&#xff1a; 编译时&#xff0…...

WebSocket 使用示例,后台为nodejs

效果图 页面代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>WebSocket Client</title&g…...

【算法】力扣【树形DP】687. 最长同值路径

【算法】力扣【树形DP】687. 最长同值路径 687. 最长同值路径 文章目录 【算法】力扣【树形DP】687. 最长同值路径题目描述输入输出示例 题解思路代码描述 复杂度分析总结 题目描述 本题要求在给定的二叉树中寻找最长的同值路径&#xff0c;这个路径中的每个节点的值都相同。…...

S32DS用PE调试报错

1、问题&#xff1a; 在S32DS上用PE进行调试报错&#xff1a; Error while launching command: --version 2、解决方法 按下图操作 填入内容&#xff1a; ${cross_prefix}gdb${cross_suffix}...

Day02-DDLDMLDQL(定义,操作,查询)(联合查询,子查询,字符集和校对集,MySQL5.7乱码问题)

文章目录 Day02-DDL&DML和DQL学习目标1. SQL语言的组成2. DDL2.1 数据库结构2.2 表结构2.3 约束2.3.1 主键约束(重要)(1)特点(2) 添加主键(3)删除主键(了解) 2.3.2 自增约束(1)特点(2) 添加自增约束(3)删除自增约束(了解) 2.3.3 非空约束(1)添加非空约束(2) 删除非空约束 2…...

3D高斯泼溅的崛起

沉浸式媒体领域正在以前所未有的速度发展&#xff0c;其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景&#xff0c;并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。 在本文中&#xff0c;我们将通过与摄影测量和 NeRF 等前辈进…...

基于python+vue家政服务系统flask-django-php-nodejs

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低家政公司的运营人员成本&#xff0c;实现了家政服务的标准化、制度化、程序化的管理&#xff0c;有效地防止了家政服务的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、准确地…...

Sign in with Apple 隐私保护深度解析:从用户隐藏邮箱到服务器端验证的完整数据流

Sign in with Apple 隐私保护深度解析&#xff1a;从用户隐藏邮箱到服务器端验证的完整数据流 当用户点击"通过Apple登录"按钮时&#xff0c;背后发生的是一套精密的隐私保护机制。苹果设计的这套系统不仅简化了登录流程&#xff0c;更重要的是重构了传统OAuth流程中…...

【网络安全实战】利用MS17-010漏洞实现内网渗透与防御策略

1. 永恒之蓝漏洞的前世今生 2017年那个春天&#xff0c;网络安全圈被一枚名为"永恒之蓝"的漏洞炸弹彻底惊醒。这个藏在Windows SMB协议中的漏洞&#xff0c;就像给黑客们发了一张万能门禁卡&#xff0c;让他们可以大摇大摆地进出数百万台电脑。我当时正在给某企业做安…...

嵌入式硬件电路基础

2.2 嵌入式硬件电路基础 嵌入式硬件接口开发离不开扎实的电路基础。理解常用电子元件的特性和选型方法,是设计稳定可靠接口电路的前提。本节将系统介绍电阻、电容、二极管、三极管、集成电路等常用元件,并结合接口开发中的实际应用场景,给出具体的选型公式和参数示例。 2.…...

如何在Windows上直接安装APK文件:APK-Installer终极指南

如何在Windows上直接安装APK文件&#xff1a;APK-Installer终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重的安卓模拟器&#xff1f;想要在W…...

ATAC-seq 实战指南:从BAM到TSS富集热图的完整流程解析

1. ATAC-seq分析入门&#xff1a;从BAM文件到TSS富集热图全流程 ATAC-seq&#xff08;Assay for Transposase-Accessible Chromatin using sequencing&#xff09;作为研究染色质开放性的重要技术&#xff0c;已经成为表观遗传学领域的标配工具。对于刚拿到测序数据的生物信息学…...

“快速模式”和“专家模式”

你提到的“快速模式”和“专家模式”通常出现在各类工具、软件或AI产品中。由于没有指明具体场景&#xff0c;我列举几个最常见的情况供你参考&#xff1a;在DeepSeek&#xff08;以及多数AI对话产品&#xff09;中&#xff1a;快速模式&#xff1a;追求响应速度。模型会用最精…...

IDEC PF3S-HSC1输入模块

IDEC PF3S-HSC1 输入模块该设备属于 IDEC FA-3S系列中的高速功能模块&#xff0c;常见于PLC控制系统架构中&#xff0c;主要用于高速信号采集与输入处理&#xff0c;在运动控制与自动化生产线中应用较多。属于FA-3S系列PLC扩展模块&#xff0c;用于高速输入信号处理。可接收高速…...

LCL型三相并网变流器输出阻抗建模与稳定性分析(1)

1. LCL滤波器在并网变流器中的关键作用 我第一次接触LCL型三相并网变流器时&#xff0c;最头疼的就是这个看似简单的滤波器。LCL滤波器由两个电感和一个电容组成&#xff0c;结构上比传统的L型或LC型滤波器复杂不少。但正是这种结构&#xff0c;让它能在降低电感用量的同时&…...

2026亲测:同时降重复率与AI率的实用工具推荐

现在国内高校和期刊普遍实行重复率AIGC率双重检测&#xff0c;单独只降重或者只消AI痕迹的工具已经很难满足需求。我们针对知网、维普、Turnitin等主流平台做了多轮复测&#xff0c;筛选出几款适配不同场景的高效工具&#xff0c;覆盖中英文论文、学生初稿到硕博定稿全需求。 一…...

10 分钟出稿!PaperXie AI 答辩 PPT 生成,本科生的毕业开挂神器

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 毕业论文答辩的终极考验&#xff0c;从来不是论文写得多好&#xff0c;而是你的 PPT 能不能让导师眼前一亮。多少人熬过了选题…...