【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语言】一维数组与二维数组
数组 数组名代表的是数组在内存中的起始位置,即首元素的地址,而下表表示的则是该元素相对数组起始位置的偏移量 一维数组 1.定义 类型名 数组名[数组长度] int a[100]; //整型数组长度为101,数组名为a char b[100];//字符型数组长度为101&…...
Milvus×EasyAi:如何用java从零搭建人脸识别应用
如何从零搭建一个人脸识别应用?不妨试试原生Java人工智能算法:EasyAi Milvus 的组合拳。 本文将使用到的软件和工具包括: EasyAi:人脸特征向量提取Milvus:向量数据库用于高效存储和检索数据。 01. EasyAi:…...
Dockerfile 实战指南:解锁高效容器化开发
一、Dockerfile 简介 Dockerfile 是构建镜像的文本文件,通过一系列指令描述镜像构建过程,构建操作由 Docker daemon 进行,它会先验证语法,然后逐一运行指令,每次生成一个新的镜像层,直到构建出最终的镜像。…...
【每日学点鸿蒙知识】混淆配置、主线程处理大量数据、客户端拖拽效果、三方网站加载样式、List警告问题
1、HarmonyOS API升级之后缺少混淆配置文件? 可参考以下文档: 混淆配置:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-obfuscation-V5 混淆规则:https://gitee.com/openharmony/arkcompiler_ets…...
ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例
目录 1.扩写(expansion/paraphrasing) 2.优化(optimization) 3.缩写(optimization) 4.提取关键词(keyword extraction) 5.短语转换(phrase transformationÿ…...
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,直接把图拉倒上面,让他生成
要绘制类似于您提供的图像的柱状图,您可以使用Python中的Matplotlib库,这是一个非常流行的绘图库。以下是一个简单的示例代码,展示如何使用Matplotlib来创建一个类似的柱状图: python import matplotlib.pyplot as plt import nu…...
如何保证mysql数据库到ES的数据一致性
1.同步双写方案 在代码中对数据库和ES进行双写操作,确保先更新数据后更新ES。 优点: 数据一致性:双写策略可以保证在MySql和Elasticsearch之间数据的强一致性,因为每次数据库的变更都会在Elasticsearch同步反映。实时性…...
安装MongoDB,环境配置
官网下载地址:MongoDB Shell Download | MongoDB 选择版本 安装 下载完成双击打开 点击mongodb-windows-x86_64-8.0.0-signed 选择安装地址 检查安装地址 安装成功 二.配置MongoDB数据库环境 1.找到安装好MongoDB的bin路径 复制bin路径 打开此电脑 -> 打开高级…...
家用无线路由器的 2.4GHz 和 5GHz
家中的无线路由器 WiFi 名称有两个,一个后面带有 “5G” 的标记,这让人产生疑问:“连接带‘5G’的 WiFi 是不是速度更快?” 实际上,这里的 “5G” 并不是移动通信中的 5G 网络,而是指路由器的工作频率为 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涉及到的线程,但是散落在几篇文章中,不好找。而Quartz涉及到的线程对于理解Quartz也比较重要,所以今天专门提取出来单独说一下。 Quartz中的主要线程: 任务调度线程QuartzSchedulerThread 任务执…...
【QED】爱丽丝与混沌的无尽海
文章目录 题目题目描述输入输出格式数据范围测试样例 思路代码复杂度分析时间复杂度空间复杂度 题目 题目链接🔗 题目描述 如图所示,爱丽丝在一个3x3的迷宫之中,每个方格中标有 1 − 9 1-9 1−9各不相同的数字,爱丽丝可以从一格…...
IO模型学习
背景知识 Socket 套接字。 客户端和服务端通信时,客户端需要数据出口,服务端需要数据入口,这两个出入口就是Socket。数据接收方新建socket后需要绑定ip和端口号,这样客户端才能链接上socket。连接的过程就是 三次握手 FD file …...
Doxygen 使用指南
Doxygen 是一个文档生成工具,可以从源代码中的注释生成高质量的文档,支持多种编程语言(如 C/C、Python、Java 等)。以下是 Doxygen 的基本使用方法。 1. 安装 Doxygen 1.1 下载 Doxygen 访问 Doxygen 官网。根据操作系统选择合适…...
设计模式与游戏完美开发(2)
更多内容可以浏览本人博客:https://azureblog.cn/ 😊 该文章主主题内容均来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第四章 游戏主要类——外观模式(Facade) 一、游戏子功能的整合 一个游戏程序常常由内部数个不…...
Coroutine 基础三 —— 结构化并发(二)
1、协程的结构化异常管理 如果一个协程抛异常,它所在的整个协程树上的其他协程(向上是父协程到根协程,向下是所有后代协程)都会被取消。因此协程发生异常的后果是十分严重的。 先讲原理,再说解决方案。 协程异常的处…...
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运行时动态连接多数据源的功能
项目支持多数据库连接是个很常见的需求,这不仅是要在编译前连已经知道的多个数据库,有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...
字符串匹配——KMP算法
前言 刷到字符串匹配的力扣题了【28. 实现 strStr() 】,这题简单吧用库函数做就可以,说难吧,就得引出大名鼎鼎的线性匹配算法——KMP。 目录 KMP 算法背景与原理算法优势 前缀表1. 构建Next数组2. 搜索匹配 KMP 算法背景与原理 KMP&#x…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
.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] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: 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 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
ip子接口配置及删除
配置永久生效的子接口,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 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
