C语言之数组精讲(1)

目录

数组

数组的声明(使用数组前的准备)

访问数组(数组的使用方法)

数组的遍历

数组初始化

1.在声明变量时,除了必要的情况下,都需要对变量进行初始化。

2.我们还可以像下面在声明数组时不指定元素个数,数组会根据初始值的个数自动进行设置。

3.使用0对{}内没有赋初始值的元素进行初始化。

4.使用0对初始化数组内的全部元素

在初始化数组时,也有错误的操作

数组的复制

输入数组元素的值

对数组的元素进行倒序排列

 使用数组进行成绩处理

对象式宏

数组元素的最大值和最小值

赋值表达式的判断

数组的元素个数

 结语


学生的学籍号码、运动选手背后的号码、飞机高铁的座位号……在生活中我们经常遇到把具有相同性质的事物聚集在一起的情况,如果我们一个个列举就显得十分冗杂,不如统一使用号码来解决这个问题,比如输入成绩时,我们对学生进行编号,再按编号输入成绩,要是你在程序中输入一个一个学生的姓名呢?是不是很麻烦

接下来我们将为大家介绍为了提高相同效率而把具有相同类型的数据有序地组织起来的一种形式——数组。


数组

在没学数组之前让我们输入5个学生的成绩、总和及其平均分并显示出来,我们一定会声明5个变量通过printf与scanf函数进行输入输出,再次通过sum求和,进而求平均。

对于上述的处理,除了变量名不同外,执行的都是相同的操作,所以当数量超过一定数值时就不能再这样处理了。

擅长处理这类数据的就是数组,它通过号码把相同数据类型的变量集中起来进行管理。

注意

可以用数组实现相同类型的对象的集合。

统一类型的变量——元素集中起来,在内存上排成一条直线,这就是数组。


数组的声明(使用数组前的准备)

首先进行声明,数组的声明通过指定元素类型、变量名、元素个数来进行,并且[ ]中的元素个数必须是常量。

,,下面是声明数组a,是一个元素类型为int类型、元素个数为5的数组。


访问数组(数组的使用方法)

数组a的各个元素,都是int类型的对象,不允许一些元素是int类型一些元素是double类型。

对于数组内各个元素的访问(读取)都是自由的,访问元素使用的是“[ ]”称为下标运算符。[ ]中的操作数称为下标

下标表示是首个元素之后的第几个元素,而不是数组中的第几个元素。

 另外,数组声明中使用的[ ]仅仅是分隔符,而访问数组时使用的则是运算符。

下表运算符
a[b]                          从数组a的首个元素起,访问b个元素后的元素

例如,从第一个元素开始访问是a[0],第二个元素是a[1]……第n个元素是a[n-1],不存在a[-1]、a[n]这样就溢出了。


数组的遍历

创建一个元素类型为int类型,包含5个元素的数组,依次把1—5赋值给它们并且进行显示。

#include<stdio.h>

int main()
{
	int v[5];
	v[0] = 1;//下标:0 1 2 3 4 
	v[1] = 2;//元素:1 2 3 4 5
	v[2] = 3;
	v[3] = 4;
	v[4] = 5;

	    printf("v[0] = %d\n", v[0]);
		printf("v[1] = %d\n", v[1]);
		printf("v[2] = %d\n", v[2]);
		printf("v[3] = %d\n", v[3]);
		printf("v[4] = %d\n", v[4]);
	
	return 0;
}

接下来我们使用for语句对其进行简化修改:创建变量i,是i从0递增到5,执行5次循环

#include<stdio.h>

int main()
{
	int v[5];
	int i;
	
	for(i = 0; i < 5; i++)//为元素赋值
	{
		v[i] = i + 1;
	}
	for(i = 0; i < 5; i++)//显示元素的值
	{
		printf("v[%d] = %d\n", v[i], i);
	}
	
	return 0;
}

接下来我们来进一步显示它循环的过程:

i=1时,v[0]=0+1;

i=2时,v[1]=1+1;

………………

i=4时,v[4]=4+1;

 像这样,按顺序逐个查看数组的元素,就称为遍历


数组初始化

1.在声明变量时,除了必要的情况下,都需要对变量进行初始化。

int v[5] = {1, 2, 3, 4, 5};

最后一个初始值加不加逗号都可以。

2.我们还可以像下面在声明数组时不指定元素个数,数组会根据初始值的个数自动进行设置。

int v[] = {1, 2, 3, 4, 5};

3.使用0对{}内没有赋初始值的元素进行初始化。

int v[5] = {1, 2};//{1, 2, 0, 0, 0}

4.使用0对初始化数组内的全部元素

int v[0] = {0};//{0, 0, 0, 0, 0}

在初始化数组时,也有错误的操作

当初始值的个数超过超过数组的元素个数时,程序会发生错误。

int v[3] = {1, 2, 3, 4, 5};//初始化值过多

不能通过赋值语句进行初始化

int v[3];
v = {1, 2, 3};


最后,天气渐冷,大家一定要做好保暖措施,锻炼身体,预防流感!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/240723.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mitm抓包实践---可用于投票、日常类任务运用

文章目录 一、安装mitm二、证书导入三、抓包三、后话补充 一、安装mitm 第一种方式: 官网下载 https://mitmproxy.org/downloads/ 第二种方式: py库安装 pip install mitmproxy我是第一种&#xff0c;不熟悉py 二、证书导入 下载证书: http://mitm.it/ 首先你要开启代理&am…

【MySQL】MySQL库的操作

MySQL库的操作 一、创建数据库创建数据库案例字符集和校验规则校验规则对数据库的影响 二、操纵数据库1、查看数据库2、查看当前正在使用的数据库3、使用数据库4、显示创建语句5、数据库删除6、数据库的修改7、备份和恢复8、查看连接情况 一、创建数据库 创建数据库的语法如下…

HarmonyOS第一课ArkTS开发语言(TypeScript快速入门)

编程语言介绍 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS&…

C语言:高精度乘法

P1303 A*B Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 第一次画图&#xff0c;略显简陋。 由图可以看出c的小标与x,y下标的关系为x的下标加上y的下标再减一。 由此得到&#xff1a; c [ i j - 1 ] x [ i ] * y [ j ]x #include<stdio.h> #include<st…

(第67天)RMAN Duplicate 克隆 PDB

介绍 在之前 NONCDB 版本我们经常使用 RMAN Duplicate 方式来在线搭建 DataGuard,非常方便快捷。从 12C 开始 Oracle 推出了 CDB 架构后,自然也就支持使用 Duplicate 的方式来复制 CDB,但是 12C 时还没有那么智能。 从 18C 开始进行了升级,可以支持使用 RMAN Duplicate 方…

react-webApp--响应式布局

rem响应式布局 移动端响应式布局 1.自己实现&#xff0c;需要设计好初始换算比&#xff0c;设为100px方便计算 <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, minimum-scale1.0, user-scalableno"/> <…

爬虫学习日记第九篇(爬取seebug)

目标&#xff1a;https://www.seebug.org/vuldb/vulnerabilities 需求&#xff1a;爬取cve_id及影响组件 单线程 cookie是有时效的(过一段时间就不行了&#xff0c;大概半小时左右)&#xff0c;但是并不需要登录(直接抓包拿到的请求头) import base64 import json import ur…

持续集成交付CICD:通过API方式上传Nexus制品

目录 一、实验 1.通过API方式上传Nexus制品 二、问题 1.如何通过API方式上传PNG图片 2.如何通过API方式上传tar.gz 与 ZIP文件 3.如何通过API方式上传Jar file文件 4.如何通过API方式上传制品&#xff08;maven类型的制品&#xff09;文件 5.如何下载制品 一、实验 1.通…

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可

C语言 联合体验证 主机字节序 +枚举

联合体应用&#xff1a;验证当前主机的大小端&#xff08;字节序&#xff09; //验证当前主机的大小端 #include <stdio.h>union MyData {unsigned int data;struct{unsigned char byte0;unsigned char byte1;unsigned char byte2;unsigned char byte3;}byte; };int main…

在Vue2中使用MarkDown编辑器输入(mavonEditor)

在开发一些需求如博客系统时&#xff0c;原始的文本框不满足我们的需求&#xff0c;展示word文档的格式又太麻烦吗&#xff0c;不难想到使用markdown的格式来输入和展示内容。本文介绍了在Vue2中怎么使用markdown格式的输入框和展示框。 先看一下实现的效果 官方文档 我们使用…

投资3-5万元的小本生意有什么?

现在想做点生意&#xff0c;真的好难。随便开个小店&#xff0c;房租、水电、装修这些加起来&#xff0c;就投资10w往上了。 我这还没开始赚钱呢&#xff0c;就已经投进去这么多钱了&#xff0c;万一生意不好亏本了&#xff0c;可该怎么办&#xff1f; 其实这是很多人面临的问…

PP材料粘接ABS材料使用UV胶的好处?

跟随着现阶段材料的不断发展更迭&#xff0c;PP材料应用越来越广&#xff0c;生产效率要求越来越高&#xff0c;为了加快生产&#xff0c;提高效率&#xff0c;PP材料的粘接上使用UV胶粘接PP&#xff08;聚丙烯&#xff09;和ABS&#xff08;丙烯腈-丁二烯-苯乙烯共聚物&#x…

STM32-TIM定时器中断

目录 一、TIM&#xff08;Timer&#xff09;定时器简介 二、定时器类型 2.1基本定时器结构 2.2通用定时器结构 2.3高级定时器结构 三、定时中断基本结构 四、时序图分析 4.1 预分频器时序 4.2 计数器时序 4.3 计数器无预装时序&#xff08;无影子寄存器&#xff09; …

静态HTTP应用的未来趋势与展望

随着互联网的快速发展&#xff0c;静态HTTP应用作为一种简单、快速和安全的Web应用形式&#xff0c;已经得到了广泛的应用。然而&#xff0c;随着技术的不断进步和创新&#xff0c;静态HTTP应用也在不断发展和变化。下面&#xff0c;我们就来谈谈静态HTTP应用的未来趋势和展望。…

腾讯云 - 日志服务(CLS)Bug 体验官

问题描述 最近在学习日志服务&#xff0c;发现了腾讯云上面一款CLS产品&#xff0c;致力于解决日志采集分析&#xff0c;刚开始用的时候感觉还不错&#xff0c;但是发现当创建第二个日志主题的时候发现不对劲了&#xff0c;前一个竟然失效了&#xff0c;排查了老半天也没发现啥…

dockerfile创建镜像lnmp

dockerfile创建镜像 LNMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php systemctl stop firewalld setenforce 0 cd /opt mkdir nginx mysql php cd nginx/ 拖进去 nginx wordpress vim Dockerfile #声明基…

电动工具调速控制电路芯片GS016 GS069的芯片描述

GS016 直流有刷电机调速电路。输出端内置14V钳位结构&#xff0c;通过桥接内部电阻网络&#xff0c;可以改变PWM占空比输出&#xff0c;达到控制电机转速作用。采用SOP14封装形式 GS069 直流有刷电机调速电路。通过外接电阻网络&#xff0c;改变与之相接的VMOS管的输出&#x…

外发加工ERP软件功能有哪些?外发加工ERP系统哪家好

不同的外发加工业务有不同的业务流程和管理策略与方式&#xff0c;在当前这个激烈竞争的时代&#xff0c;如何降低经营成本&#xff0c;打通各种信息流&#xff0c;优化资源配置和降低成本&#xff0c;提升生产过程联动效率&#xff0c;加强企业核心竞争力管理等&#xff0c;是…

【Database】什么是数据库?常见的数据库类型有哪些?

什么是数据库&#xff1f;常见的数据库类型有哪些&#xff1f; 首先&#xff0c;什么是数据库&#xff1f;把它想象成一个数字游乐场&#xff0c;我们以结构化的方式组织和存储大量信息。现在&#xff0c;让我们来谈谈数据库的主要类型。 关系型数据库&#xff1a; 想象一下…