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

【c语言】一维数组与二维数组

数组

数组名代表的是数组在内存中的起始位置,即首元素的地址,而下表表示的则是该元素相对数组起始位置的偏移量

一维数组

1.定义

类型名 数组名[数组长度]

int a[100]; //整型数组长度为101,数组名为a 
char b[100];//字符型数组长度为101,数组名为b 
double c[100];//实型数组长度为101,数组名为c 

类型名在简单的c程序设计已经提到

2.数组名

数组名整个数组的标识符,数组名可以看作一种特殊的变量名,需要遵循变量名的命名规则

3.数组长度

数组长度指出数组中可以包含元素的个数,数组长度通常是一个整型或者常量表达式

4.数组名[下标]

下标可以使用整型常量、变量、表达式

下标的取值范围为[0,数组长度-1]

一维数组的初始化

1.数组声明的两种类型

若数组声明为静态储存类型,则数组所有元素被初始化为0

static int a[100];

若数组声明为自动储存类型,则数组所有元素为垃圾值

int a[100];

2.初始化格式

类型名 数组名[数组长度]={初值表}

int a[100]={0};//全部元素都为0

如果初值表中的数据个数比数组长度少,那么数组中剩余元素赋值为0

int b[100]={1,2,3};//b[0]为1,b[1]为2,b[2]为,其余元素为0

若对全部元素赋值,则省略数组长度

int c[2]={0,1,2};
//可以改为
int c[2]={0,1,2}; 

当数组作为函数参数时

因为数组名即代表数组首元素的地址,因此使用数组名作形参即可传递

若定义函数时声明了数组的长度,则表示只能把固定长度的数组传入

若定义函数时未声明数组的长度,则表示可以把任意长度的数组传入

int a[100];
void convert(int a[]);//函数的定义(未表明数组长度)
convert(a);//调用数组a 
int a[100];
void convert(int a[100]);//函数的定义(表明数组长度)
convert(a);//调用数组a 

二分法查找元素

若在较大的数组中快速的查找元素使用for循环语句逐个查找是非常耗时的

那么使用二分法查找则可以大大节约查找时间,避免时间超限

二分法原理

比如数组a[n]中查找元素x,并返回其下角标

则可以将数组分为两大部分

定义low为最小下角标,high为最大下角标

mid=(low+high)/2;

判断x是否等于a[n/2]

如果x==a[n/2],则结束查找,返回mid值

如果x>a[n/2],

low=mid+1;

mid=(low+high)/2;

继续查找

如果x<a[n/2],

high=mid-1;

mid=(high+low)/2;

继续查找

可以编一个递归函数来实现二分查找

int search(int a[],int x,int low,int high)
{if(low>high){return -1;//数据错误 } else//若数据正确 {int mid=(low+high)/2;{if(a[mid]==x)//查找到x {return mid;} else if(a[mid]>x)//在mid左边查找 {return search(a,x,low,mid-1);}else if(a[mid]<x)//在mid右边查找 {return search(a,x,mid+1,high);}}} 
} 

二维数组

1.定义

类型名 数组名[行数][列数]

int a[10][10];
//创建一个10*10的矩阵
从a[0][0]-------------a[0][9]|                   ||                   ||                   ||                   ||                   ||                   ||                   ||                   |a[9][0]--------------a[9][9]

在二维数组中

行数下标的取值范围为[0,行数-1]

列数下标的取值范围为[0,列数-1]

2.二位数组的初始化

分行初始化

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

输出数组

1 2 3
4 5 6
7 8 9

也可以部分元素赋值,不赋值的元素为0

int a[3][3]={{1,2},{4},{7,8,9}};

输出结果

1 2 0
4 0 0
7 8 9

顺序初始化

int a[3][3]={1,2,3,4,5,6,7,8,9};

输出结果

1 2 3
4 5 6
7 8 9

也可以省略行数进行初始化,编译器会根据元素的个数自动分配元素

int a[][3]={1,2,3,4,5,6,7,8,9};

输出结果同上

数组做函数参数

1.一维数组做函数参数,数组长度可以省略

2.二维数组做函数参数,只有第一维数组长度可省略,第二位不可省略 

字符数组

 1.定义

char 数组名[数组长度]

char a[100];定义一个长度为101的字符型数组

 2.初始化

逐个

char a[5]={'H','e','l','l','o'};

整体

char a[]={"Hello"};

 在进行初始化时,系统会自动加上'\0'

因此在输入字符串char a[]={"Hello"};后,其实际长度为6

3.输入与输出

可以利用for循环进行逐个输入,利用%c

char a[100];
for(int i=0;a[i]!='\0';i++)
{scanf("%c",&a[i]);
}

也可以用%s进行整个字符串的输入

char a[100];
scanf("%s",a);//注意此时后面所跟为数组名,不必再加& 

在使用%s进行输入时,遇到'\0' 会自动截断,只能用于输入连续的字符串

那么输入不连续的字符串该怎么办呢?使用gets

char a[100];
gets(a);

输出呢?对应的有

for循环逐个输出

for(int i=0;a[i]!='\0';i++)
{printf("%c",a[i]);
}

 %s直接输出字符串

printf("%s",a);

 直接输出字符串

puts(a);

相关文章:

【c语言】一维数组与二维数组

数组 数组名代表的是数组在内存中的起始位置&#xff0c;即首元素的地址&#xff0c;而下表表示的则是该元素相对数组起始位置的偏移量 一维数组 1.定义 类型名 数组名[数组长度] int a[100]; //整型数组长度为101&#xff0c;数组名为a char b[100];//字符型数组长度为101&…...

Milvus×EasyAi:如何用java从零搭建人脸识别应用

如何从零搭建一个人脸识别应用&#xff1f;不妨试试原生Java人工智能算法&#xff1a;EasyAi Milvus 的组合拳。 本文将使用到的软件和工具包括&#xff1a; EasyAi&#xff1a;人脸特征向量提取Milvus&#xff1a;向量数据库用于高效存储和检索数据。 01. EasyAi&#xff1a;…...

Dockerfile 实战指南:解锁高效容器化开发

一、Dockerfile 简介 Dockerfile 是构建镜像的文本文件&#xff0c;通过一系列指令描述镜像构建过程&#xff0c;构建操作由 Docker daemon 进行&#xff0c;它会先验证语法&#xff0c;然后逐一运行指令&#xff0c;每次生成一个新的镜像层&#xff0c;直到构建出最终的镜像。…...

【每日学点鸿蒙知识】混淆配置、主线程处理大量数据、客户端拖拽效果、三方网站加载样式、List警告问题

1、HarmonyOS API升级之后缺少混淆配置文件&#xff1f; 可参考以下文档&#xff1a; 混淆配置&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-obfuscation-V5 混淆规则&#xff1a;https://gitee.com/openharmony/arkcompiler_ets…...

ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例

目录 1.扩写&#xff08;expansion/paraphrasing&#xff09; 2.优化&#xff08;optimization&#xff09; 3.缩写&#xff08;optimization&#xff09; 4.提取关键词&#xff08;keyword extraction&#xff09; 5.短语转换&#xff08;phrase transformation&#xff…...

Android TextView 添加图标并实现换行

图文混排。 binding.apply {val spannable = SpannableString(" " + "Kotlin 是 Android 官方推荐的编程语言。")val drawable: Drawable = ContextCompat.getDrawable(this@DemoMainXmlActivity,R.mipmap.ic_title_d)!!drawable.setBounds(0, 0, drawabl…...

matplotlib pyton 如何画柱状图,利用kimi,直接把图拉倒上面,让他生成

要绘制类似于您提供的图像的柱状图&#xff0c;您可以使用Python中的Matplotlib库&#xff0c;这是一个非常流行的绘图库。以下是一个简单的示例代码&#xff0c;展示如何使用Matplotlib来创建一个类似的柱状图&#xff1a; python import matplotlib.pyplot as plt import nu…...

如何保证mysql数据库到ES的数据一致性

1.同步双写方案 在代码中对数据库和ES进行双写操作&#xff0c;确保先更新数据后更新ES。 优点&#xff1a; 数据一致性&#xff1a;双写策略可以保证在MySql和Elasticsearch之间数据的强一致性&#xff0c;因为每次数据库的变更都会在Elasticsearch同步反映。实时性&#xf…...

安装MongoDB,环境配置

官网下载地址&#xff1a;MongoDB Shell Download | MongoDB 选择版本 安装 下载完成双击打开 点击mongodb-windows-x86_64-8.0.0-signed 选择安装地址 检查安装地址 安装成功 二.配置MongoDB数据库环境 1.找到安装好MongoDB的bin路径 复制bin路径 打开此电脑 -> 打开高级…...

家用无线路由器的 2.4GHz 和 5GHz

家中的无线路由器 WiFi 名称有两个&#xff0c;一个后面带有 “5G” 的标记&#xff0c;这让人产生疑问&#xff1a;“连接带‘5G’的 WiFi 是不是速度更快&#xff1f;” 实际上&#xff0c;这里的 “5G” 并不是移动通信中的 5G 网络&#xff0c;而是指路由器的工作频率为 5G…...

我的tensorboard

1.Tensorboard 2.Tensorboard的使用 导入tensorboard并创建SummaryWriter 添加标量数据 添加图片数据 直方图 模型可视化 3.代码使用 模型可视化 # 记录模型结构 dummy_input torch.randn(1, 3, 224, 224).to(device) # 根据你的模型输入尺寸调整 writer.add_graph(model…...

Quartz 相关线程

​ 我们在前面文章中说到过Quartz涉及到的线程&#xff0c;但是散落在几篇文章中&#xff0c;不好找。而Quartz涉及到的线程对于理解Quartz也比较重要&#xff0c;所以今天专门提取出来单独说一下。 Quartz中的主要线程&#xff1a; 任务调度线程QuartzSchedulerThread 任务执…...

【QED】爱丽丝与混沌的无尽海

文章目录 题目题目描述输入输出格式数据范围测试样例 思路代码复杂度分析时间复杂度空间复杂度 题目 题目链接&#x1f517; 题目描述 如图所示&#xff0c;爱丽丝在一个3x3的迷宫之中&#xff0c;每个方格中标有 1 − 9 1-9 1−9各不相同的数字&#xff0c;爱丽丝可以从一格…...

IO模型学习

背景知识 Socket 套接字。 客户端和服务端通信时&#xff0c;客户端需要数据出口&#xff0c;服务端需要数据入口&#xff0c;这两个出入口就是Socket。数据接收方新建socket后需要绑定ip和端口号&#xff0c;这样客户端才能链接上socket。连接的过程就是 三次握手 FD file …...

Doxygen 使用指南

Doxygen 是一个文档生成工具&#xff0c;可以从源代码中的注释生成高质量的文档&#xff0c;支持多种编程语言&#xff08;如 C/C、Python、Java 等&#xff09;。以下是 Doxygen 的基本使用方法。 1. 安装 Doxygen 1.1 下载 Doxygen 访问 Doxygen 官网。根据操作系统选择合适…...

设计模式与游戏完美开发(2)

更多内容可以浏览本人博客&#xff1a;https://azureblog.cn/ &#x1f60a; 该文章主主题内容均来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第四章 游戏主要类——外观模式&#xff08;Facade&#xff09; 一、游戏子功能的整合 一个游戏程序常常由内部数个不…...

Coroutine 基础三 —— 结构化并发(二)

1、协程的结构化异常管理 如果一个协程抛异常&#xff0c;它所在的整个协程树上的其他协程&#xff08;向上是父协程到根协程&#xff0c;向下是所有后代协程&#xff09;都会被取消。因此协程发生异常的后果是十分严重的。 先讲原理&#xff0c;再说解决方案。 协程异常的处…...

GXUOJ-算法-第一次作业

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…...

Springboot项目Druid运行时动态连接多数据源的功能

项目支持多数据库连接是个很常见的需求&#xff0c;这不仅是要在编译前连已经知道的多个数据库&#xff0c;有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...

字符串匹配——KMP算法

前言 刷到字符串匹配的力扣题了【28. 实现 strStr() 】&#xff0c;这题简单吧用库函数做就可以&#xff0c;说难吧&#xff0c;就得引出大名鼎鼎的线性匹配算法——KMP。 目录 KMP 算法背景与原理算法优势 前缀表1. 构建Next数组2. 搜索匹配 KMP 算法背景与原理 KMP&#x…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...