《c语言程序设计教学资料》第8章-数组.ppt
《《c语言程序设计教学资料》第8章-数组.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计教学资料》第8章-数组.ppt(87页珍藏版)》请在三一办公上搜索。
1、第8章 数组,主要内容,一维数组的定义、初始化和引用 二维数组的定义、初始化和引用 向函数传递一维数组 向函数传递二维数组 常用的排序和查找算法,前几章使用的变量都属于基本类型,例如:整型、字符型、浮点型数据,这些都是简单的数据类型。对于有些数据,只用简单的数据类型是不够的,难以反映出数据的特点,也难以有效地进行处理。,问题:有如下几组数据,它们分别该如何存储呢?,一个班学生的学习成绩一行文字一个矩阵,这些数据的特点是:1、具有相同的数据类型2、使用过程中需要保留原始数据 C语言为这些数据,提供了一种构造数据类型:数组。,保存大量同类型的相关数据,为什么使用数组,数组是多个同类型数据对象的组合
2、。数组中汇集了多个数据项,称为数组元素。数组元素的排列是有一定规律的,下标代表数据在数组中的序号用一个数组名和下标唯一确定数组中的元素数组中,可已统一方式处理一批/所有元素,是数组和独立变量的主要区别,数组的定义,定义数组时需要说明:数组元素类型 数组名 数组的元素个数 元素个数也称数组的大小或长度 数组定义:数据类型 数组名 整数1 整数2 整数n 如:int a10;double b107;数组定义可以与其它变量定义在一起 如:int a10,n,a125;,数组大小最好使用宏来定义,以适应可能的变化 如:#define SIZE 10 int aSIZE;,数组大小定以后,将不能改变,数
3、组存储,系统会在内存分配连续的空间给此数组。如:int a10;定义一个有10个int型元素的数组,使用a0、a1、a9这样的形式访问每个元素,可以像使用普通变量一样使用它们。直接对a访问,就是访问此数组的首地址。,不带小标的数组名具有特殊含义,表示数组的首地址,数组的存储结构,根据数组的数据类型,为每个元素安排相同长度的存储空间 根据数组的存储类型,将其安排在内存的动态、静态存储区或者寄存器区。,用sizeof(数组名)获得数组所占字节数 一维数组占用字节数=数组长度sizeof(数组名)二维数组占用字节数=第一维长度第二维长度 sizeof(数组名),数组使用,对于数组:类型 数组名 整数
4、n,元素顺序编号为:首元素序号0,其余顺序编号。n元数组元素编号:0到n-1。元素编号称为下标。,一维数组的定义格式为:类型说明符 数组名常量表达式;例如:int a10;它表示定义了一个整形数组,数组名为a,此数组有10个元素。,一维数组,说明:1.数组名定名规则和变量名相同,遵循标识符定名规则。2.在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。例如,指定a10,表示a数组有10个元素,注意下标是从0开始的,这10个元素是,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9。请持别注意,按上面的定义,不存在数组元素a10。3.常量表达式中
5、可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:,举例:int n;scanf(“%d,,float a0;/*数组大小为0没有意义*/int b(2)(3);/*不能使用圆括号*/int k,ak;/*不能用变量说明数组大小*/,数组说明中其他常见的错误,一维数组的输入和输出,输入方法:输入第i个数组元素:scanf(“%d”,输出方法:输出第i个数组元素:printf(“%d”,ai-1);输入整个数组元素:for(i=0;i10;i+)printf(“%d”,ai);,int
6、 a10,不为自动数组初始化,数组中的元素值是不确定的 不为静态或外部数组初始化,则对数值型数组元素,初值为0,而对字符型数组元素,初值为空字符 0 对数组元素初始化的实现方法:,一维数组的初始化,1.在定义数组时对数组元素赋以初值。,例如:int a10=0,1,2,3,4,5,6,7,8,9;将数组元素的初值依次放在一对花括弧内。经过上面的定义和初始化之后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9。,2.只给一部分元素赋值,未初始化的元素将自动被初始化为0。,如:int a10=0,1,2,3,4;相当于:int a10=0,1,2
7、,3,4,0,0,0,0,0;,3.如果想使一个数组中全部元素值为0,可以写成,int a10=0,0,0,0,0,0,0,0,0,0;或 int a10=0;不能写成:int a10=0*10;,4.在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。,例如:int a5=1,2,3,4,5;也可以写成 int a=1,2,3,4,5;,在第二种写法中,花括弧中有5个数,系统就会据此自动定义a数组的长度为5。但若数组长度与提供初值的个数不相同,则数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成 int a10=1,2,3,4,5;只初始
8、化前5个元素,后5个元素为0。,一维数组在内存中的存放,每个数据元素占用的字节数,就是基类型的字节数一个元素占4个字节,一维数组:float mark100;,数组名 下标下标可以是整型常量或整型表达式。例如:a0=a5+a7-a2*3,一维数组元素的引用,数组元素的引用方式:,一维数组元素引用的程序实例,程序使a0到a9的值为09,然后按逆序输出。,程序举例1:用数组来处理,求解Fibonacci数列。,Fibonacci数列:斐波那契数列,又称黄金分割数列或兔子数列。指的是这样一个数列:0、1、1、2、3、5、8、13,即满足公式:F(0)=0,F(1)=0、F(n)=F(n-1)+F(n
9、-2),一维数组程序举例,二维数组,不能写成 float a3,4,b(5)(10);,二维数组的定义格式为:,数据类型 数组名行标列标;,例如:定义a为34(3行4列)的数组,b为510(5行10列)的数组。如下:float a34,b510;,二维数组的输入和输出,输入方法:输入第i行j列元素:scanf(“%d”,输出方法:输出第i行j列元素:printf(“%d”,ai-1j-1);输入整个数组元素:for(i=0;i2;i+)for(j=0;j3;i+)printf(“%d”,aij);,int a2 3,可以用下面4种方法对二维数组初始化,数据类型 数组名 常量表达式1常量表达式2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言程序设计教学资料 语言程序设计 教学 资料 数组
链接地址:https://www.31ppt.com/p-5896113.html