资源描述:
《c语言程序设计ppt-第8章-数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计第8章数组一维数组的声明、初始化和使用数组的运算、作为函数参数的使用字符串、多维数组8/21/20211华中科技大学计算机学院8.1数组概述程序=算法+数据结构PASCAL程序设计语言发明者NiklausWirth曾经说过简单数据类型的变量仅能描述一个单独的数据描述能力十分有限如何描述一群有联系的数据集合?数组属于构造类型是相同数据类型数据的集合元素组成数组的这些数据任何类型(简单类型、构造类型)8/21/20212华中科技大学计算机学院8.1数组概述数组特点其所有元素数目固定其所
2、有元素类型相同其所有元素顺序存放数组作用集中管理将相关的同类型数据集中用一个标识符(数组名)表示元素顺序存放,但可随机定位用若干个数字序号(下标)来区别各数组元素例如定义floatscore[30],可表述30位学生成绩用数组具有什么好处?8/21/20213华中科技大学计算机学院8.1数组概述问题计算全班30位同学某门课程的平均成绩解决方法设置30个float型变量来记录成绩设置一个有30个float型元素的数组来记录成绩问题分析参与运算的平均成绩,其数据类型都相同(符合数组特点)30位同学属
3、于一个班,用数组可把30个成绩表示成一个整体用数组的优点便于循环处理提高效率,便于书写、检查、修改(对海量数据效果更明显)8/21/20214华中科技大学计算机学院8.2一维数组维数标识一个数组元素所需要使用的下标的个数一维数组只有一个下标可用于表示一个线性的数据队列使用数组的要求先声明数组对它进行初始化,然后才能使用8/21/20215华中科技大学计算机学院8.2.1一维数组的声明要解决三个问题确定数组的数据类型给数组定义一个名字,以便在程序中使用指明数组的大小,即数组中元素的个数声明形式[存
4、储类型说明符][类型修饰符]类型说明符数组名[常量表达式]={初值表};存储类型说明符:extern、static类型修饰符:const、volatile数组名:是一个标识符,是一个地址常量,用以表示数组中打头元素的地址8/21/20216华中科技大学计算机学院8.2.1一维数组的声明例8.1具有基本数据类型的一维数组的声明#defineSIZE10intarray[5];doubled[5],e[SIZE];charname[SIZE*5];错误例子unsignedintsize;charst
5、r[size],buffer[2*size];错误原因数组的大小一经说明就不能改变长度说明不是常量表达式,在编译之前就必须明确确定8/21/20217华中科技大学计算机学院8.2.1一维数组的声明例8.2采用类型修饰符的一维数组的声明staticinty[10];数组y中的每一个成员都是静态整型成员externdoubles[2];作了一个外部双精度型数组的引用性声明应该在另外的源文件中通过doubles[2];来定义s数组,这样第2个声明语句才有意义8/21/20218华中科技大学计算机学院8
6、.2.2一维数组的使用C提供的各种操作符针对基本数据类型的变量数组是构造数据类型但其元素是基本数据类型的变量访问数组不需设计专门的数组操作符方法:数组名[下标表达式]例inta[5],j=2;5个元素依次是a[0],a[1],a[2],a[3],a[4]a[j+2]、a[++j]、a[j--]、a[5*j-7]错误写法:a[j-3]、a[2*j+1]8/21/20219华中科技大学计算机学院例8.3使用一维数组计算学生的平均成绩。#include〞stdio.h〞voidmain(void){i
7、ntscore[30],i,sum=0;doubleaverage;printf("inputthescoresplease:");for(i=0;i<30;i++)scanf(“%d”,&score[i]);/*将键盘输入的成绩赋给各个数组元素*/for(i=0;i<30;i++)sum+=score[i];/*求学生成绩的累加和*/average=sum/30.0;/*计算平均成绩*/printf("sum=%d",sum);printf("average=%lf",averag
8、e);}8/21/202110华中科技大学计算机学院8.2.3一维数组的初始化显式初始化值的个数与说明长度相同intx[5]={0,1,2,3,4};inty[5]={0,1,2,3,4,5};错误:初值个数大于数组长度有初始化值时,长度说明可缺省数组长度由初值个数确定inty[]={1,2,3,4,5,6,7,8};初始化值的个数可以小于说明长度,但只能缺省最后连续元素的初值intz[10]={0,1,2,3,4};/*前5个下标变量赋值*/intu[9]={,1,,,2};错误:缺省u[0]