1、第5章数组数组是相同类型数据的集合。它们都拥有同一个名称。在大数量处理处理和字符串操作时,广泛使用数组。数组对C语言来说起着相当至关重要的作用。本章将重点讲数组的各种操作。5.1 数组简介在程序设计的过程中,经常会处理一些数据类型相同的变量,为了方便,C语言中提供了数组这一结构。5.1 数组简介数组数组分类分类按照数据类型不同分类按照数据类型不同分类整型数组、字符型数组、指针数组等整型数组、字符型数组、指针数组等按照数据多少按照数据多少一维数组、二维数组、多维数组一维数组、二维数组、多维数组5.2 数组的来源前面章节中讲解的C语言的基本数据类型只能处理一些简单的数据类型,如果遇到复杂的具有相同
2、类型的多个数据那么就很难解决。幸好,C语言提供了数组来解决了这一个问题。5.2 数组的来源5.3一维数组一维数组是长度固定的数组,其存储空间是一片连续的区域。本节将讲解一维数组的概念及其应用。5.3.1一维数组的声明和定义声明数组是告诉编译器,数组名所使用的标识符。数组的定义是令系统为该数组分配内存空间。在C语言中,数组的声明和定义是同时进行的。5.3.1一维数组的声明和定义5.3.2 一维数组的初始化数组的初始化是用来实现对数组的每个元素赋初值的。虽然有的编译器会自动对数组赋初值,但为了安全起见,建议用户自己对数组赋初值。5.3.2 一维数组的初始化5.3.2 一维数组的初始化注意点注意点示
3、例代码示例代码若对数组中的所有元素都赋予了初始值,可以不用指定数组的大若对数组中的所有元素都赋予了初始值,可以不用指定数组的大小,系统将自动根据赋值的个数来确定数组的大小小,系统将自动根据赋值的个数来确定数组的大小 int x=1,2,3,4,5;int x=1,2,3,4,5;若只对数组中的部分元素赋予初始值,则系统会自动为其他元素若只对数组中的部分元素赋予初始值,则系统会自动为其他元素赋初始值赋初始值0 0int x10=1,2,3,4,5;int x10=1,2,3,4,5;若只声明数组,而不为数组赋值,则数组中的元素值是不确定的若只声明数组,而不为数组赋值,则数组中的元素值是不确定的i
4、nt x10;int x10;C C语言数组的大小只能是常量,而不能使用变量语言数组的大小只能是常量,而不能使用变量下面的代码是不合法的:下面的代码是不合法的:intint i i=100;=100;intint a ai i;5.3.3 一维数组的引用在C语言中,一维数组的引用其实就是对一维数组元素的使用。一维数组的引用形式以及相关举例如图5.8所示。5.3.4一维数组程序举例5.4二维数组二维数组指有两个下标的数组。C语言中,对于常用的数组除了有一维数组还有二维数组。本节来学习二维数组。5.4.1二维数组的声明和定义二维数组有两个下标。二维数组中的元素和一维数组中的元素一样,具有同样的数据
5、类型。5.4.1二维数组的声明和定义5.4.2 二维数组的初始化对于二维数组的初始化有好多种方法,如表5-3所示。二维数组初始化方法二维数组初始化方法示例代码示例代码分行给二维数组赋初值分行给二维数组赋初值int a23=0,1,2,4,5,6int a23=0,1,2,4,5,6可以将所有数据写在一个花括号内,按照数组可以将所有数据写在一个花括号内,按照数组排列的顺序对各元素赋初值排列的顺序对各元素赋初值int a23=0,1,2,4,5,6int a23=0,1,2,4,5,6可以对部分元素赋初值,而在每行的其他元素可以对部分元素赋初值,而在每行的其他元素的值为的值为0 0或者为或者为00
6、 int a23=1,4int a23=1,4等价于等价于int int a23=1,0,0,4,0,0a23=1,0,0,4,0,0如果对数组的全部元素赋初值,则定义二维数如果对数组的全部元素赋初值,则定义二维数组时可以不指明下标组时可以不指明下标1 1,但是必须明确指明下,但是必须明确指明下标标2 2的长度的长度 intint a23=0,1,2,4,5,6 a23=0,1,2,4,5,6等价于等价于intint a a 3=0,1,2,4,5,63=0,1,2,4,5,65.4.3 二维数组的引用二维数组的引用形式如图5.13所示。5.4.3 二维数组的引用5.4.3 二维数组的引用5.
7、4.4 二维数组程序举例5.5字符数组字符数组就是用来存放字符的。在计算机中经常会处理字符,C语言对字符的处理主要是通过字符数组实现的。在本节中将会讲述字符数组的概念及其应用。5.5.1字符数组的声明和定义字符数组的含义如图5.17所示。5.5.1字符数组的声明和定义概念概念在在C C语言中,由若干字符组成的序列称为字符串语言中,由若干字符组成的序列称为字符串结束标志结束标志字符串一般以字符串一般以00作为结束标志作为结束标志存储形式存储形式字符串不能用一个变量存放,必须用字符数组来存放字符串不能用一个变量存放,必须用字符数组来存放5.5.1字符数组的声明和定义5.5.1字符数组的声明和定义5
8、.5.2字符数组的初始化一维字符数组的初始化方式一般有两种,如表5-4所示。初始化方式初始化方式示例代码示例代码说明说明逐个为字符数组赋值逐个为字符数组赋值char c6=H,e,l,l,o;每个字符会依次赋值给数组中的每个元素每个字符会依次赋值给数组中的每个元素用字符串直接给字符数组赋值用字符串直接给字符数组赋值char c6=Hello;char c6=Hello;直接将字符串赋给字符数组来初始化。系统会依次直接将字符串赋给字符数组来初始化。系统会依次读取字符串中的每个字符,赋值给数组每个元素,读取字符串中的每个字符,赋值给数组每个元素,并在字符串的的结尾处加一个字符即结束符并在字符串的的
9、结尾处加一个字符即结束符00作为作为一个数组元素。一个数组元素。char c6=Hello;char c6=Hello;等价于等价于char c6=Hello;char c6=Hello;等价于等价于char c=Hello;char c=Hello;5.5.2字符数组的初始化5.5.3 字符数组的引用前面已经讲解过了一维数组与二维数组的引用,所以字符数组的引用大家应该已经有一个概念了。C语言中,可以引用字符数组中的一个元素,得到一个字符。这一小节通过两个简单的示例讲解一维字符数组和二维字符数组的引用。5.5.4字符数组的输入输出字符数组的输入输出有两种方法,如图5.23所示。5.5.4字符数
10、组的输入输出注意点注意点注意事项注意事项说明说明1 1输出字符不包括结束字符0如图如图5.25.2的输出结果可以看出的输出结果可以看出2 2用“%s”格式输出时,printf()函数的输出项是字符数组名,而不是字符元素printf(“%s”,c);/printf(“%s”,c);/其中数组名为其中数组名为c c3 3如果数组长度大于字符串的实际长度,也只是输出遇到结束字符结束输出char c10=“China”/char c10=“China”/字符串的长度为字符串的长度为5 5printf(“%s”,c);/printf(“%s”,c);/也只输出字符串也只输出字符串“ChinaChina”
11、,而不是输出而不是输出1010个字符个字符4 4如果一个字符数组由多个0,则遇到第一个0就结束输出因为字符因为字符00是字符串的结束标志是字符串的结束标志5 5可以用可以用scanfscanf函数输入一个字符串函数输入一个字符串scanfscanf(“%(“%s”,cs”,c););5.6综合实例杨辉三角通过输出杨辉三角图来进一步讲解数组的应用。1.杨辉三角图行界面杨辉三角的图形界面如图5.25所示。2.杨辉三角程序分析其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。具体对于杨辉三角程序分析思路如图5.26所示。2.杨辉三角程序分析3.程序完整代码以及输出结果
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100