C语言--一维数组
数组概念
数组:是一种构造数据类型,用以处理批量的同种类型的数据。
主要特点:数据量大 ,类型相同
一维数组的定义
语法:
类型说明符 数组名[整型常量表达式];
注意:
方括号里面的内容用于指明数组长度,即数组的元素个数,必须是整型常量表达式
定义数组的实质是在内存中预留一段连续的储存空间以存放数组的全部元素。数组名表示这段连续的存储空间的起始地址(也称为首地址),空间大小由数组类型和元素个数确定。
一维数组的使用
- 一维数组的初始化
同普通变量一样,数组元素也要初始化赋值以后才能使用。 数组属构造数据类型,数组元索是组成数组的基本单位,每个元素是一个下标变量,因此有两种初始化数组元素的方法。
(1)在定义数组的同时初始化数组元索一般形式如下:
类型说明符 数组名[整型常量表达式]={数据值 1,数据值 2,…数据值N};
其中在{}中的各数据值即为对应的各元素初值,各值之间用逗号间隔。
例如,执行语句“int score[10]={90,78,80,85,61,70,95,81,58,76};”后,数组元素score[0]~score[10]的值依次为90,78,80,85,61,70,95,81,58,76
C语言对数组的初始化赋值还有以下几点规定。
① 可以只给部分元素赋初值。
当{}中值的个数少于元素个数时,这时只给前面部分元素赋值,其余未获得初值的元素系统默认赋值为 0。但{}中值的个数不能多于元素个数,也不能一个也没有。例如:
int score[10]={90,78,80,85,61};
表示只给 score[0]~score[4]赋值,而元素 score[5]-score[9]将自动赋0值。
② 只能给元素逐个赋值,不能给数组整体赋值。例如:给 10个元素全部赋1值,只能写为: int score[10]={1,1,1,1,1,1,1,1,1,1};
而不能写为: int a[10]=1;
③ 若给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。系统会自动把(}中的数据个数定义为数组的长度。
(2)先定义数组,再初始化数组元素,这时通常采用循环结构。
#include <stdio.h>
int main()
{int i, score[10];for (i = 0; i < 10; i++){scanf("%d", &score[i]);}printf("%d", score[1]);return 0;
}
- 一维数组元素的引用
在C语言中只能逐个地引用数组元素,而不能对数组进行整体引用。例如:
要输出 score 数组中的 50 个数组元素,必须使用循环语句逐个输出各数组元素 (即下标变量):
#include <stdio.h>
int main()
{int i, score[10];for (i = 0; i < 10;){score[i++] = 2 * i;}for (i = 0; i <= 9; i++){printf("%4d", score[i]);}return 0;
}
一维数组的应用举例
- 删除数组元素
已知数组a已经存放有N个其值互不相同的整数。现从键盘输入一个数 x,要求从数组中删除与 x 相等的元素,并将其后的元素逐个向前递补,且将最后一个元素置 0 值。输出删除后的数组。如原数组中无此数,则输出相应提示信息,提示不存在该值的元素。
#include <stdio.h>
#define N 10
int main()
{int i, x, flag = 0, k;int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};printf("原数组值:\n");for (i = 0; i < N; i++){printf("%d", a[i]);}printf("请输入要删除的元素值:\n");scanf("%d", &x);for (i = 0; i < N; i++){if (a[i] == x){flag = 1;k = i;break;}}if (flag == 0){printf("该数组中不存在该值!\n");}else{if (k == N - 1){a[N - 1] = 0;}else{for (i = k; i < N - 1; i++){a[i] = a[i + 1];}a[i] = 0;}printf("\n删除元素%d后的数组值:", x);for (i = 0; i < N; i++){printf("%4d", a[i]);}}return 0;
}
终端:

- 一维数组的排序
从键盘输入 N 个整数,将其升序排列
A.冒泡排序法
#include <stdio.h>
#define N 10
int main()
{int a[N], i, j, t; // 定义中间变量 tprintf("请输入%d个数据\n", N);for (i = 0; i < N; i++){scanf("%d", &a[i]);}for (j = 0; j < N - 1; j++) // 一共 N 个数 要进行 N - 1 趟比较{for (i = 0; i <= N - 1 - j; i++) // 每一趟中需要两两比较的次数{if (a[i] > a[i + 1]){t = a[i];a[i] = a[i + 1];a[i + 1] = t;}}}printf("升序排列如下:\n");for (j = 0; j < N; j++){printf("%3d", a[j]);}return 0;
}
终端:

B.选则排序法
具体实现思路:
逐次选择数组 a中的元素a[i] (i = 0,1,2,3,4,…,N - 2) 与它后边的每一个元素 a[j] (j = i+1,…,N - 1) 进行逐个比较,将a[i]至a[N-1]中的最小值与a[i]交换 (要保证a[i]比任何a[j]都要小)。重复这个过程 N - 1 次,最后 a 数组中元素便被升序排列。
#include <stdio.h>
#define N 10
// 定义数组a[N],下标变量i,j,交换使用中间变量 t,记录 a[i] 至 a[N] 中最小元素的下标变量
int main()
{int a[N], i, j, k, t;for (i = 0; i < N; i++){scanf("%d", &a[i]);}for (i = 0; i < N - 1; i++){k = i;for (j = i + 1; j < N; j++){if (a[j] < a[k]){k = j;}if (k != i){t = a[k];a[k] = a[i];a[i] = t;}}}printf("升序排列后的结果为:\n");for (i = 0; i < N; i++){printf("%3d", a[i]);}return 0;
}
终端:

- 数组中递推的应用
利用一维数组,输出斐波那契数列:
1,1,2,3,5,8,13,21,34,55,89…
分析:显然这是一个典型的递推问题,其递推公式如下:
{
当 i = 1; a [i] = 1;
当 i = 2; a [i] = 2;
当 3 <= i <= N; a[i] = a[i-1] + a[i+1];
}
利用循环结构实现设计:
#include <stdio.h>
#define N 10
int main()
{long i, a[N] = {1, 1};for (i = 2; i < N; i++){a[i] = a[i - 1] + a[i - 2]; // 用递推公式依次计算出a[2].......}for (i = 0; i < N; i++){printf("%ld\t", a[i]);if ((i + 1) % 5 == 0){printf("\n"); // 每输入 5 个数就换行}}return 0;
}

相关文章:
C语言--一维数组
数组概念 数组:是一种构造数据类型,用以处理批量的同种类型的数据。 主要特点:数据量大 ,类型相同 一维数组的定义 语法: 类型说明符 数组名[整型常量表达式]; 注意: 方括号里面的内容用于指…...
DataGear 4.5.1 发布,数据可视化分析平台
DataGear 4.5.1 发布,严重 BUG 修复,具体更新内容如下: 修复:修复SQL数据集对于DB2、SQLite等数据源预览时会报错的BUG;修复:修复系统对于MySQL、MariaDB等数据源中无符号数值类型有时报错的BUG࿱…...
Springboot——@valid 做字段校验和自定义注解
文章目录前言注意实现测试环境验证自带的注解自定义valid注解自定义注解和处理类创建参数接收类,并增加字段注解接口中使用自测环节正常测试异常测试自定义全局异常监听扩展递归参数下valid不识别的坑前言 再项目开发中,针对前端传递的参数信息…...
c语言基础练习题详解
💞💞 1.C语言程序的基本单位是(C)。 A.程序行 B. 语句 C. 函数 D.字符 💞💞 2.已知各变量的类型说明如下: int m6,n,a,b; unsigned long w8;…...
C语言设计模式:实现简单工厂模式和工程创建
目录 一,设计模式概念引入 ① 什么是设计模式 ② 什么是类和对象 ③ 什么是工厂模式 二,C语言工厂模式的实现 ① 普通类和对象的代码实现 ② 工厂模式代码实现 ● cat.c ● dog.c ● person.c ● animal.h ● mainpro.c ● 完善mainpro.c …...
3.6日报
今天进行3.0信号整理工作 做官网后台技术文档 了解grpc gRPC是rpc框架中的一种,是rpc中的大哥 是一个高性能,开源和通用的RPC框架,基于Protobuf序列化协议开发,且支持众多开发语言。 面向服务端和协议端,基于http…...
中文代码88
PK 嘚釦 docProps/PK 嘚釦|,g z docProps/app.xml漅AN??駠(髂v诖m岼侸 魣,g踃$秂D廋Qvf漶x莗笳w?:瘜^?俍欶辇2}?睧汎 t#:?效7治XtA鏊?羄鈋嫿饄攗Tv契"D桷撵vJ鉂?闌 Jg??浱?樱沲gic鋹峡?sū窛葻?]迾?9卑{艏 rk\?洺萹啰N?W??2&quo…...
ElasticSearch 基础(五)之 映射
目录前言一、映射(Mapping)简介二、动态映射(Dynamic mapping)1、动态字段映射1.1、日期检测1.1.1、禁用日期检测1.1.2、自定义检测到的日期格式1.2、数值检测2、动态模板三、显示映射(Explicit mapping)1、…...
【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出
文章目录一、前言二、数据类型1.基本数据类型①.整形②.浮点型③.字符型2.高级数据类型3.数据分类①.常量②.变量三、标准输入输出1.scanf2.printf四、进制转换1.进制转换简介2.十进制转其他进制3.其他进制转换五、OJ网站的使用一、前言 王道2024考研408C语言督学营第二天&…...
重资产模式和物流网络将推动京东第四季度利润率增长
来源:猛兽财经 作者:猛兽财经 强劲的2022年第三季度财务业绩 2022年11月18日,京东(JD)公布了2022年第三季度财务业绩,净收入为2435亿元人民币,增长了11.4%。净服务收入为465亿元人民币…...
【新】EOS至MES的假捻报工数据导入-V2.0版本
假捻自动线的数据和MES没有进行对接,直接入库至EOS。 因此可信平台上缺少这部分的报工数据,需要把EOS的入库数据导出,整理成报工数据,导入到MES,然后通过定时任务集成到可信平台。 MES这边的报工数据整理,主要是添加订单明细ID,和完工单号。 订单明细ID(根据批次号和…...
python甜橙歌曲音乐网站平台源码
wx供重浩:创享日记 对话框发送:python音乐 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目,启动成功后,访问“http://127.0.0.1:5000”进入甜橙音乐网首页,如图1所…...
docker imageID计算
Image ID是在本地由Docker根据镜像的描述文件计算的,并用于imagedb的目录名称 docker镜像id都保存在/var/lib/docker/image/overlay2/imagedb/content/sha256下面,都是一些以sha256sum计算文件内容得出的哈希值的文件。 #ls /var/lib/docker/image/ove…...
借助媛如意让ROS机器人turtlesim画出美丽的曲线-云课版本
首先安装并打开猿如意其次打开蓝桥云课ROS并加入课程在猿如意输入问题得到答案在蓝桥云课ROS验证如何通过turtlesim入门ROS机器人您可以通过以下步骤入门ROS机器人:安装ROS:您需要安装ROS,可以在ROS官网上找到安装指南。安装turtlesim&#x…...
小区业主入户安检小程序开发
小区业主入户安检小程序开发 可针对不同行业自定义安检项目,线下安检,线上留存(安检拍照/录像),提高安检人员安检效率 功能特性,为你介绍小区入户安检系统的功能特性。 小区管理;后台可添加需要安检的小区…...
【C++知识点】异常处理
✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…...
【FATE联邦学习debug】 No module named ‘federatedml‘
直接pip install federatedml是无法找得到这个库的。 这个的原因是环境变量的事情,因为在部署文档中,本身提示我们要更新一些环境变量,如果不export那些变量,下面的fate_test其实也是无法测试成功的。 打开bin/init_env.sh&#x…...
【Git】P1 Git 基础
Git 基础Git 基本概念集中式版本控制工具 与 分布式版本控制工具Git 下载与安装Bash 初始设置创建本地仓库Git 三区概念一个简单的提交流程更改文件后再次提交git 实现版本切换查看提交日志设置 git 快捷键版本切换(一)版本切换(二࿰…...
智能交通数据集Rope3D(仅限科研使用)
Rope3D Dataset 官网:https://thudair.baai.ac.cn/index !!!如想要使用Rope3D数据集进行2D检测,最后有我们处理完的数据集链接。 !!! 介绍: DAIR-V2X数据集是首个用于…...
Java虚拟机JVM-面试题
1、Java 虚拟机是如何捕获异常的? 答: 在编译生成的字节码中,每个方法都附带一个异常表。异常表中的每一个条目代表一个异常处理器,并且由 from 指针、to 指针、target 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
