当前位置: 首页 > 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 指针以及所捕获的异常类型构成。这些指针的值是字节码索引…...

详细的说说Redis的数据类型

Redis是一个开源的内存数据库&#xff0c;它可以用作缓存、消息代理、实时数据处理和许多其他用途。Redis是一个key-value存储系统&#xff0c;其中数据存储在内存中&#xff0c;并通过网络进行访问。与传统的关系型数据库不同&#xff0c;Redis支持多种数据结构&#xff0c;包…...

798.差分矩阵

输入一个 n行 m列的整数矩阵&#xff0c;再输入 q个操作&#xff0c;每个操作包含五个整数 x1,y1,x2,y2,c&#xff0c;其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上 c。 请你将进行完所有操作后的矩阵输出…...

InfluxDB 2 介绍与使用 flux查询 数据可视化

一、关键概念 相比V1 移除了database 和 RP&#xff0c;增加了bucket。 V2具有以下几个概念&#xff1a; timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization 新增的概念&…...

Qt QTreeView简单使用

QT-QTreeView使用方法 QTreeView: 用于显示树状结构数据&#xff0c;适用于树状结构数据的操作。 一、初始化 ​ 利用QStandardlternModel来初始化数据&#xff0c;标准的基于项数据的数据模型类&#xff0c; 每个项数据可以是任何数据类型。 // 初始化model QStandardItem…...

Wannacrypt蠕虫老树开花?又见Wannacrypt

Wannacrypt蠕虫是一个在2017年就出现的远古毒株&#xff0c;其利用永恒之蓝漏洞降维打击用户服务器&#xff0c;而后进行扩散勒索&#xff0c;曾经一度风靡全球&#xff0c;可谓是闻者伤心&#xff0c;听着落泪&#xff0c;因为这玩意解密是不可能 解密的。 而2023年的今天&am…...

结合基于规则和机器学习的方法构建强大的混合系统

经过这些年的发展&#xff0c;我们都确信ML即使不能表现得更好&#xff0c;至少也可以在几乎所有地方与前ML时代的解决方案相匹配。比如说一些规则约束&#xff0c;我们都会想到能否把它们替换为基于树的ml模型。但是世界并不总是黑白分明的&#xff0c;虽然机器学习在解决问题…...

Spring Security OAuth2实现多用户类型认证、刷新Token

原本的OAuth2登录支持用户名密码登录&#xff0c;现在还想支持另外用id号码和密码登录。但是OAuth2默认提供的UserDetailsService只允许传入一个参数&#xff1a;想要实现多种用户登录&#xff0c;是不是可以考虑loadUserByUsername方法携带多个参数呢&#xff1f;接下来记录一…...

云计算介绍,让你更了解云计算

同学们好&#xff01; 第一次接触IT行业吗&#xff1f;没关系&#xff0c;看完这篇文章肯定会让你不再陌生。给自己几分钟时间&#xff0c;认真看完哦&#xff01; 1、不知道什么是云计算&#xff1f; 网络计算云计算 官方定义是&#xff1a;通过网络提供可伸缩的分布式计算…...

阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞

就目前大环境来看&#xff0c;跳槽成功的难度比往年高很多。一个明显的感受&#xff1a;今年的面试&#xff0c;无论一面还是二面&#xff0c;都很考验Java程序员的技术功底。这不又到了面试跳槽的黄金段&#xff0c;成功升职加薪&#xff0c;不成功饱受打击。当然也要注意&…...

【JDK1.8 新特性】Lambda表达式

1. 什么是Lambda表达式&#xff1f; Lambda 是一个匿名函数&#xff0c;我们可以把 Lambda 表达式理解为是一段可以传递的代码&#xff08;将代码像数据一样进行传递&#xff09;。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格&#xff0c;使Java的语言表达…...

成都商城网站制作/seo发外链的网站

知乎首发&#xff0c;超全学习算法&数据结构干货&#xff1a;0基础入门算法面试提升指南&#xff01;不废话&#xff0c;直接上干货&#xff01;★本文将从以下3个方面告诉你&#xff1a;一、新手怎么快速入门算法基础——【0基础学习算法】二、如何拔高算法技能&#xff0…...

花生壳 建设网站/北京优化网站建设

OrderedDict 记录的是插入的顺序 实验如下...

网站建设排行公司/seo优化平台

导读Dutree是Durep和Tree的组合。Durep用图表创建磁盘使用情况报告&#xff0c;这使我们能够确定哪些目录使用了最多的空间。尽管durep可以产生类似于du的文本输出&#xff0c;但其真正的功能是能够将报告存储在文件中。Tree是目录显示程序&#xff0c;它以树状结构在终端上递归…...

莱州网站建设公司/电商网站对比

问题提出&#xff1a;M&#xff08;如10亿&#xff09;个int整数&#xff0c;只有其中N个数重复出现过&#xff0c;读取到内存中并将重复的整数删除。 问题分析&#xff1a;我们肯定会先想到在计算机内存中开辟M个int整型数据数组&#xff0c;来one bye one读取M个int类型数组&…...

金色 网站 模板/seo的英文全称是什么

原标题&#xff1a;国标GB28181视频流媒体平台EasyGBS引入H.265播放器初始化页面渲染失败问题大家都知道H.265编码的视频流对流媒体服务器的播放&#xff0c;比H.264更加友好&#xff0c;目前很多网页播放器都在研发H.265编码&#xff0c;而我们的视频流媒体播放器EasyPlayer已…...

WordPress购物车纯代码/深圳网络优化推广公司

我们做Android程序员的&#xff0c;在过去的十几年&#xff0c;搭上了移动互联网高速发展的快车&#xff0c;分享了大量的行业红利。 如今&#xff0c;市场趋于稳定&#xff0c;未来想要赚更多的钱&#xff0c;你得重新找到一个让你能变得更值钱的途径。否则&#xff0c;你未来…...