《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。请持
5、别注意,按上面的定义,不存在数组元素a10。 3. 常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:,举例: int n; scanf(“%d,, float a0; /* 数组大小为0没有意义 */ int b(2)(3); /* 不能使用圆括号 */ int k, ak; /* 不能用变量说明数组大小*/,数组说明中其他常见的错误,一维数组的输入和输出,输入方法: 输入第i个数组元素: scanf(“%d”, ,输出方法: 输出第i个数组元素: printf(“%d
6、”, ai-1); 输入整个数组元素: for (i=0;i10;i+) printf(“%d”, ai);,int 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.只给一部分
7、元素赋值,未初始化的元素将自动被初始化为0。,如:int a10=0,1,2,3,4; 相当于: int a10=0,1,2,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。但若数组长度与提供初值的个数不
8、相同,则数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成 int a10=1,2,3,4,5; 只初始化前5个元素,后5个元素为0。,一维数组在内存中的存放,每个数据元素占用的字节数,就是基类型的字节数 一个元素占4个字节,一维数组: float mark100;,数组名 下标 下标可以是整型常量或整型表达式。例如: a0=a5+a7-a2*3,一维数组元素的引用,数组元素的引用方式:,一维数组元素引用的程序实例,程序使a0到a9的值为09,然后按逆序输出。,程序举例1:用数组来处理,求解Fibonacci数列。,Fibonacci数列:斐波那契数列,又称黄金
9、分割数列或兔子数列。 指的是这样一个数列:0、1、1、2、3、5、8、13,即满足公式:F(0)=0, F(1)=0、 F(n)= F(n-1)+ F(n-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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言程序设计教学资料 语言程序设计 教学 资料 数组
链接地址:https://www.31doc.com/p-3045517.html