资源描述:
《C语言使用教程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章同类型数据集合主要内容数组与数组元素、一维数组、二维数组、多维数组、字符数组字符串处理函数指向字符串的指针变量5.1数组与数组元素的概念由若干类型相同的数据按一定顺序存储所形成的有序集合,称为数组(Array)。通常,用某个名字标识这个集合,这个名字称为数组名。构成数组的每个数据项称为数组的元素,同一数组中的元素必须具有相同的数据类型。同一数组中的数组元素在内存中占据的地址空间是连续的。数组定义的一般形式为:类型标识符数组名[常量表达式1][常量表达式2]……;数组首地址(1)数组的下标必
2、须使用整型常量或整型常量表达式。C语言中不允许用变量作为下标,对数组进行动态定义。例如,#defineN10intnScore[N];intn=3;intnScore[n];/*不正确的定义方式*/(2)C语言规定数组的下标都是从0开始的。说 明(3)数组的存储结构:数组一经定义,系统则根据数组的数据类型为每一个元素安排相同长度的、连续的存储单元,而且,C语言的数组在内存中是按行存放的,即存完第一行后存第二行,然后存第三行,······,以此类推。(4)数组元素的作用相当于简单变量。(5)用si
3、zeof来计算类型长度。说 明5.2数组与数组元素的概念5.2.1一维数组的定义一维数组定义的一般形式为:类型说明符数组名[常量表达式];inta[5];例5-1查看数组nArray[10]的内存占用情况。问题分析通过不同的输出方式,能够看到数组名(nArray)和&数组元素(&nArray[0])等表示的含义。数组名nArray表示数组的首地址,同数组nArray[0]的地址相同。不同的数组类型在内存中占有的字节数不同。程序实现5.2.2一维数组的初始化数据类型数组名[数组元素个数]={值1,
4、值2,…,值n};或数据类型数组名[]={值1,值2,…,值n};2.用赋值语句初始化用赋值语句初始化是在程序执行时实现的。1.在数组定义时初始化定义数组时对数组元素赋初值:inta[5]={1,2,3,4,5};只给部分元素赋初值对全部元素赋初值时,可以不指定长度:inta[]={1,2,3,4,5};inta[5]={1,2,3};inta[5]={0};其余元素初值为零程序实现例5-2用赋值语句初始化数组nNum[10],然后按逆序输出数组nNum[10]中元素。问题分析输入一组数,值为0
5、~9,然后按逆序输出。引用形式数组名[下标]说明下标即可以是整型常量或整型表达式,也可以是含有已赋值的整型变量或整型变量表达式数组下标范围为0~(N-1)(N为数组长度)注意:防止数组下标越界举例a[0]=a[5]+a[j]*3;5.2.3一维数组的引用例:intdata[5];data[5]=10;C语言对数组不作越界检查,使用时要注意只能逐个对数组元素进行操作(字符数组例外)输入方法:inta[10],i;输入第i个数组元素:scanf("%d",&a[i]);输入整个数组元素:for(i=
6、0;i<10;i++)scanf("%d",&a[i]);输出方法:输出第i个数组元素:printf("%d",a[i]);输出整个数组元素:for(i=0;i<10;i++)printf("%d",a[i]);一维数组的输入和输出例5-3求数组nAarr[10]中各元素的和。#include/*求数组中各元素的和*/voidmain(){inti,nArr[10],nSum;nSum=0;printf("请输入10个整数:");for(i=0;i<10;i++)scanf
7、("%d",&nArr[i]);for(i=0;i<10;i++)nSum+=nArr[i];printf("nSumis%d",nSum);}程序实现5.2.4一维数组程序举例例5-4编写程序,每名学生有四门课考试成绩,用一维数组实现计算每个学生的平均成绩。问题分析由于该例题只要求计算平均成绩,因此可以用4个整型数组存放数学、物理、英语和计算机的成绩,用一个实型数组存放每个学生的平均成绩。程序可按如下步骤实现:1)输入数据,把数学、物理、英语、计算机成绩分别存放在数组nMath,nPhys
8、ics,nEnglish,nComputer中。2)计算平均成绩,将结果放在dAverage数组中。3)输出结果。解决方案例5-4编写程序,每名学生有四门课考试成绩,用一维数组实现计算每个学生的平均成绩。程序实现5.3相同类型数据的二维及多维存储5.3.1二维数组的定义二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2];二维数组在内存中的存储:inta[3][2]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]014523a[0][0]a[0][0]