第5章-全国计算机等级考试二级C语言-数组.ppt
第5章 数组 在前面章节中所用到的数据类型都是简单类型,每个变量只能取一个值。然而,在处理实际问题时,经常需要处理大量成批的数据,并且这些数据具有相同的类型。针对这样的问题,引进了数组这一数据类型。 5.1 数组及数组元素的概念 5.1 数组及数组元素的概念 在前面章节中我们介绍了C语言中的基本数据类型,即整型、实型和字符型的数据,使用的变量都是单个定义的,每一个变量都有一个名字,每一个变量存储一个基本数据类型。但是仅有这些基本类型,有时很难满足编程的需要。例如,要输入全年级 500 名学生的成绩,然后排出名次,显然对每一个学生的成绩定义一个变量是不现实的。 在 C语言中,当遇到处理类型相同的批量数据这样的问题时,通常用数组来解决。 5.1 数组及数组元素的概念 由若干个类型相同的相关数据按顺序存储在一起形成的一组同类型有序数据的集合,称为数组。如果用一个统一的名称标识这组数据,那么,这个名字就称为数组名,构成数组的每一个数据项称为数组的元素,数组元素不仅具有相同的数据类型,而且在内存中将占用一段连续的存储单元。每一个数组元素可通过数组名及其在数组中的位置(叫下标)来确定,即数组元素是用数组名后跟方括号 [] 括起来的下标来表示,例如,a[5],name[50],list[[5][15]等。数组按下标个数分类,有一维数组、二维数组…,以此类推,二维数组以上的数组称为多维数组。 根据数组元素类型的不同,数组可分为数值数组,字符数组、指针数组、结构体类型数组等多种类型。数组同其他类型的变量一样,也遵循“先定义,后使用”的原则。 5.2 一维数组的定义和引用 5.2 一维数组的定义和引用 5.2.1 一维数组的定义 一维数组是指只有一个下标的数组,或者说是相同类型变 的一个线性排列。 定义一个一维数组的一般形式为: 存储类型说明符 类型说明符 数组名[常量表达式]; 例如: int a[5]; /* 说明整型数组a有5个元素 */ float x[10],y[50]; /*说明实型数组x有10个元素,实型数组y有50 个元素*/ static char c[8]; /* 说明静态字符整型数组有8个元素 */ 5.2 一维数组的定义和引用 说明: (1)数组名命名规则和变量名相同,遵循标识符的规则。 (2)常量表达式的值确定了数组元素的个数,称为数组的长 度。常量表达式中可以包括常量或符号常量,不能包括 变量。 (3)C语言中,数组元素的下标值从0开始,最大下标比数组 元素个数少1。 例如有定义: int a[5]; 说明数组a有5个整型元素,a[0]是它的第0号元素(第1 个元素),a[1]是它的第1号元素(第2个元素),…, 以此类推a[4]是它的第4号元素第5个元素)。注意,该 数组不存在数组元素a[5]。 5.2 一维数组的定义和引用 5.2 一维数组的定义和引用 (4)C语言中不允许定义动态数组,即数组的长度 不能依赖运行过程中变化着的变量。 例如,下面这样的定义数组是不允许的。 int i; scanf(“%d”,i); int name[i]; 5.2 一维数组的定义和引用 5.2.2 一维数组元素的引用 数组一经定义后,数组元素就能够被引用。C 语言中规 定,对数组的使用不能将数组作为整体引用,而只能通过逐个 引用数组元素来实现。 引用一个一维数组元素的一般形式为: 数组名[下标表达式] 例如,以下都是对a数组元素的合法引用。 a[2]=5; /* 对第2个元素赋值 */ a[1]=a[2]+3; /* 对第1个元素赋值 */ scanf(“%d”,&a[0]); /* 对第0个元素输入数据 */ printf(“%d\n”,a[1]); /* 输出第1