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