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

C语言--一维数组

数组概念

数组:是一种构造数据类型,用以处理批量的同种类型的数据。

主要特点:数据量大 ,类型相同

一维数组的定义

语法:
类型说明符 数组名[整型常量表达式];
注意:
方括号里面的内容用于指明数组长度,即数组的元素个数,必须是整型常量表达式
定义数组的实质是在内存中预留一段连续的储存空间以存放数组的全部元素。数组名表示这段连续的存储空间的起始地址(也称为首地址)空间大小由数组类型和元素个数确定

一维数组的使用

  1. 一维数组的初始化
    同普通变量一样,数组元素也要初始化赋值以后才能使用。 数组属构造数据类型,数组元索是组成数组的基本单位,每个元素是一个下标变量,因此有两种初始化数组元素的方法。

(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;
}
  1. 一维数组元素的引用

在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;
}

一维数组的应用举例

  1. 删除数组元素

已知数组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;
}

终端:
在这里插入图片描述

  1. 一维数组的排序

从键盘输入 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,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语言--一维数组

数组概念 数组&#xff1a;是一种构造数据类型&#xff0c;用以处理批量的同种类型的数据。 主要特点&#xff1a;数据量大 &#xff0c;类型相同 一维数组的定义 语法&#xff1a; 类型说明符 数组名[整型常量表达式]&#xff1b; 注意&#xff1a; 方括号里面的内容用于指…...

DataGear 4.5.1 发布,数据可视化分析平台

DataGear 4.5.1 发布&#xff0c;严重 BUG 修复&#xff0c;具体更新内容如下&#xff1a; 修复&#xff1a;修复SQL数据集对于DB2、SQLite等数据源预览时会报错的BUG&#xff1b;修复&#xff1a;修复系统对于MySQL、MariaDB等数据源中无符号数值类型有时报错的BUG&#xff1…...

Springboot——@valid 做字段校验和自定义注解

文章目录前言注意实现测试环境验证自带的注解自定义valid注解自定义注解和处理类创建参数接收类&#xff0c;并增加字段注解接口中使用自测环节正常测试异常测试自定义全局异常监听扩展递归参数下valid不识别的坑前言 再项目开发中&#xff0c;针对前端传递的参数信息&#xf…...

c语言基础练习题详解

&#x1f49e;&#x1f49e; 1.C语言程序的基本单位是&#xff08;C&#xff09;。 A&#xff0e;程序行 B&#xff0e; 语句 C&#xff0e; 函数 D&#xff0e;字符 &#x1f49e;&#x1f49e; 2.已知各变量的类型说明如下&#xff1a; int m6,n,a,b; unsigned long w8;…...

C语言设计模式:实现简单工厂模式和工程创建

目录 一&#xff0c;设计模式概念引入 ① 什么是设计模式 ② 什么是类和对象 ③ 什么是工厂模式 二&#xff0c;C语言工厂模式的实现 ① 普通类和对象的代码实现 ② 工厂模式代码实现 ● cat.c ● dog.c ● person.c ● animal.h ● mainpro.c ● 完善mainpro.c …...

3.6日报

今天进行3.0信号整理工作 做官网后台技术文档 了解grpc gRPC是rpc框架中的一种&#xff0c;是rpc中的大哥 是一个高性能&#xff0c;开源和通用的RPC框架&#xff0c;基于Protobuf序列化协议开发&#xff0c;且支持众多开发语言。 面向服务端和协议端&#xff0c;基于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 基础(五)之 映射

目录前言一、映射&#xff08;Mapping&#xff09;简介二、动态映射&#xff08;Dynamic mapping&#xff09;1、动态字段映射1.1、日期检测1.1.1、禁用日期检测1.1.2、自定义检测到的日期格式1.2、数值检测2、动态模板三、显示映射&#xff08;Explicit mapping&#xff09;1、…...

【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出

文章目录一、前言二、数据类型1.基本数据类型①.整形②.浮点型③.字符型2.高级数据类型3.数据分类①.常量②.变量三、标准输入输出1.scanf2.printf四、进制转换1.进制转换简介2.十进制转其他进制3.其他进制转换五、OJ网站的使用一、前言 王道2024考研408C语言督学营第二天&…...

重资产模式和物流网络将推动京东第四季度利润率增长

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 强劲的2022年第三季度财务业绩 2022年11月18日&#xff0c;京东&#xff08;JD&#xff09;公布了2022年第三季度财务业绩&#xff0c;净收入为2435亿元人民币&#xff0c;增长了11.4%。净服务收入为465亿元人民币&#xf…...

【新】EOS至MES的假捻报工数据导入-V2.0版本

假捻自动线的数据和MES没有进行对接,直接入库至EOS。 因此可信平台上缺少这部分的报工数据,需要把EOS的入库数据导出,整理成报工数据,导入到MES,然后通过定时任务集成到可信平台。 MES这边的报工数据整理,主要是添加订单明细ID,和完工单号。 订单明细ID(根据批次号和…...

python甜橙歌曲音乐网站平台源码

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python音乐 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目&#xff0c;启动成功后&#xff0c;访问“http://127.0.0.1:5000”进入甜橙音乐网首页&#xff0c;如图1所…...

docker imageID计算

Image ID是在本地由Docker根据镜像的描述文件计算的&#xff0c;并用于imagedb的目录名称 docker镜像id都保存在/var/lib/docker/image/overlay2/imagedb/content/sha256下面&#xff0c;都是一些以sha256sum计算文件内容得出的哈希值的文件。 #ls /var/lib/docker/image/ove…...

借助媛如意让ROS机器人turtlesim画出美丽的曲线-云课版本

首先安装并打开猿如意其次打开蓝桥云课ROS并加入课程在猿如意输入问题得到答案在蓝桥云课ROS验证如何通过turtlesim入门ROS机器人您可以通过以下步骤入门ROS机器人&#xff1a;安装ROS&#xff1a;您需要安装ROS&#xff0c;可以在ROS官网上找到安装指南。安装turtlesim&#x…...

小区业主入户安检小程序开发

小区业主入户安检小程序开发 可针对不同行业自定义安检项目&#xff0c;线下安检&#xff0c;线上留存&#xff08;安检拍照/录像&#xff09;&#xff0c;提高安检人员安检效率 功能特性&#xff0c;为你介绍小区入户安检系统的功能特性。 小区管理;后台可添加需要安检的小区…...

【C++知识点】异常处理

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;C/C知识点 &#x1f4e3;专栏定位&#xff1a;整理一下 C 相关的知识点&#xff0c;供大家学习参考~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;…...

【FATE联邦学习debug】 No module named ‘federatedml‘

直接pip install federatedml是无法找得到这个库的。 这个的原因是环境变量的事情&#xff0c;因为在部署文档中&#xff0c;本身提示我们要更新一些环境变量&#xff0c;如果不export那些变量&#xff0c;下面的fate_test其实也是无法测试成功的。 打开bin/init_env.sh&#x…...

【Git】P1 Git 基础

Git 基础Git 基本概念集中式版本控制工具 与 分布式版本控制工具Git 下载与安装Bash 初始设置创建本地仓库Git 三区概念一个简单的提交流程更改文件后再次提交git 实现版本切换查看提交日志设置 git 快捷键版本切换&#xff08;一&#xff09;版本切换&#xff08;二&#xff0…...

智能交通数据集Rope3D(仅限科研使用)

Rope3D Dataset 官网&#xff1a;https://thudair.baai.ac.cn/index &#xff01;&#xff01;&#xff01;如想要使用Rope3D数据集进行2D检测&#xff0c;最后有我们处理完的数据集链接。 &#xff01;&#xff01;&#xff01; 介绍&#xff1a; DAIR-V2X数据集是首个用于…...

Java虚拟机JVM-面试题

1、Java 虚拟机是如何捕获异常的&#xff1f; 答&#xff1a; 在编译生成的字节码中&#xff0c;每个方法都附带一个异常表。异常表中的每一个条目代表一个异常处理器&#xff0c;并且由 from 指针、to 指针、target 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

Java多线程实现之Runnable接口深度解析

Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...

使用ch340继电器完成随机断电测试

前言 如图所示是市面上常见的OTA压测继电器&#xff0c;通过ch340串口模块完成对继电器的分路控制&#xff0c;这里我编写了一个脚本方便对4路继电器的控制&#xff0c;可以设置开启时间&#xff0c;关闭时间&#xff0c;复位等功能 软件界面 在设备管理器查看串口号后&…...

Neo4j 完全指南:从入门到精通

第1章&#xff1a;Neo4j简介与图数据库基础 1.1 图数据库概述 传统关系型数据库与图数据库的对比图数据库的核心优势图数据库的应用场景 1.2 Neo4j的发展历史 Neo4j的起源与演进Neo4j的版本迭代Neo4j在图数据库领域的地位 1.3 图数据库的基本概念 节点(Node)与关系(Relat…...

【向量库】Weaviate概述与架构解析

文章目录 一、什么是weaviate二、High-Level Architecture1. Core Components2. Storage Layer3. 组件交互流程 三、核心组件1. API Layer2. Schema Management3. Vector Indexing3.1. 查询原理3.2. 左侧&#xff1a;Search Process&#xff08;搜索流程&#xff09;3.3. 右侧&…...