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 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
