数组及其应用ppt培训课件

上传人:aa****6 文档编号:57218225 上传时间:2018-10-20 格式:PPT 页数:38 大小:116.50KB
返回 下载 相关 举报
数组及其应用ppt培训课件_第1页
第1页 / 共38页
数组及其应用ppt培训课件_第2页
第2页 / 共38页
数组及其应用ppt培训课件_第3页
第3页 / 共38页
数组及其应用ppt培训课件_第4页
第4页 / 共38页
数组及其应用ppt培训课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《数组及其应用ppt培训课件》由会员分享,可在线阅读,更多相关《数组及其应用ppt培训课件(38页珍藏版)》请在金锄头文库上搜索。

1、程序设计技术,C语言数据描述和C程序设计初步 结构化程序设计基础和C语言的控制结构 数组及其应用 函数与C程序结构 指针与函数 指针与数组 字符串及其应用 结构体类型和联合体类型 C语言的文件处理及其应用 位运算与枚举类型,本章概要和学习目标,数组是程序设计中使用的一种重要的数据结构。为了能够描述出若干相同类型的相关变量之间内在的联系,以便合理地使用程序的控制结构对它们进行处理,就需要把相同类型的多个变量按有序的形式组织起来,这些按序排列的相同数据类型的存储单元称为数组。 在语言中, 组成数组的每个成员的数据类型可以是基本数据类型,指针类型或其他构造类型,因此数组可分为数值数组、字符数组、指针

2、数组、结构数组等,本章仅讨论数值类型的数组及其简单应用。,数组及其应用,3.1 一维数组 3.1.1 一维数组的定义和初始化 3.1.2 一维数组元素的引用方法 3.2 二维数组和多维数组 3.2.1 二维数组和多维数组的定义 3.2.2 二维数组和多维数组元素引用方法 3.3 数组的简单应用 3.3.1 数组元素值的随机生成 3.3.2 常用排序方法 3.3.3 常用查找方法,一维数组,一维数组是一组按线性排列有序且个数有限的同类型变量构成的数据集合,集合中的数据元素使用同一个名字来描述他们之间的共性,同时又通过各自不同的序号描述数据集合 中各个数据元素之间的关系。一维数组在存储时需要占用连

3、续的内存空间,它们在存储器中的映像如图3.1所示,其每一个数据元素所占用的字节长度与它们的数据类型相关。,3.1.1 一维数组的定义和初始化,在C程序设计中必须首先对数组进行定义,然后才能进行数组的各种操作。一维数组定义的一般形式: 数据类型名 数组名常量表达式; 其中,方括号在此处是数组运算符,方括号中的常量表达式值用以指定该数组可以拥有数组元素个数,也称为数组的长度。数组的长度一但定义就不能在程序的运行过程中进行修改,在定义数组时应该根据应用的实际情况为数组长度留有余地。下面是一些数组定义的示例: int array_int10; float b10,c20; double arr100;

4、,3.1.1 一维数组的定义和初始化,定义数组还要注意以下几点: (1)数组名的命名必须符合C语言关于标识符的书写规定。 (2)数组名也是变量,因此在定义数组时数组的名字不能与同一范围内已经定义的其它变量名字相同。 (3)定义数组时,不能用变量来表示数组的长度(注:在C99标准中可以用变量表示数组长度),但是可以用符号常数或常量表达式。下面是一组用于比较的定义形式: (4)允许在同一个定义语句中,定义多个数组或者混合定义同类型的数组和简单变量。 例如: int a,b,c,d,k110,k220;,3.1.1 一维数组的定义和初始化,(5)可以在定义数组时用“存储类型”对数组进行说明,指定数组

5、的存储单元分配到内存的静态存储区或是动态存储区。存储类型可以是自动的(auto)、静态的(static)或者外部的(extern),关于存储类别将在4.3节中详细介绍。例如,一个静态的单精度实型数组可以定义为: static float score50; C语言允许在数组定义时给数组元素赋予初值,这个过程称为数组初始化。数组初始化的一般形式: 数据类型名 数组名存储单元数=常量列表; 其中,常量列表中两项之间用逗号分隔。初始值用常量形式表示,也可以使用常量表达式,但不允许使用含变量的表达式。例如: int a10= 1,2,3,4,5,6,7,8,9,10 ; int b3=1,3*5,4*3

6、-2;,3.1.1 一维数组的定义和初始化,对数组进行初始化应当注意以下几点: (1)可以对数组部分初始化,即 中常量值的个数少于指定的数组元素个数。例如: int a10=0,1,2,3,4;/为a0a4元素赋值 (2)若需要将数组全部元素初始化为0值,可以用如下形式实现:int a10=0; (3)不能给数组整体赋值。 例如,int a5=1,1,1,1,1;表示将数组的所有元素值初始化为1,但不能将其写成int a10=1; 。 (4)可以省略数组的长度。例如:int a5=1,2,3,4,5;和int a=1,2,3,4,5;等效。 (5)初始化列表中值的个数不能超过指定的数组长度。例

7、如下面的数组定义是错误的: int a5=1,2,3,4,5,6; /初始值的个数超过了数组长度,3.1.2 一维数组元素的引用方法,C语言中规定,在一般情况下数组不能作为一个整体参加数据处理,而只能通过处理每一个数组元素(下标变量)达到处理数组的目的。一维数组元素(下标变量)的表示形式为: 数组名下标 其中,下标值应该是整型常数或表达式,该值表示了数组元素在一维数组中的顺序号,实型下标值系统会自动取整。 数组的下标变量和普通变量的用法是相同,凡是普通变量可以出现的地方,下标变量也可以出现。如下面语句序列所示: double a10,y; a5=300; /*将a数组中第6个元素(5号元素)赋

8、值为300*/ y=500; /*将变量y赋值为500*/,3.1.2 一维数组元素的引用方法,由于在一般情况下对一维数组不能整体进行操作,所以对于一维数组的输入和输出操作常用一重循环的形式进行处理。设有定义数组和变量的C语句序列为: double a10; int i; 则数组a的输入输出基本形式如图3.2所示。,3.1.2 一维数组元素的引用方法,例3-1 将一个整型数组中所有元素值在同一个数组中按逆序重新存放并输出。 程序一次运行情况如下所示: Input ten value of Array: 21 23 25 27 29 30 32 34 36 38 38 36 34 32 30 2

9、9 27 25 23 21 例3-2 在一次选举中,有五位候选人,分别由15编号,请编程序统计出各位候选人的得票数并找出得票数第一名的编号。 程序的一次运行情况如下: 请输入候选人的编号(-1 表示结束)1 2 3 4 5 1 1 2 3 4 5 4 3 4 3 1 1 1 5 -16 2 4 4 3 票数最高的候选人编号是:1号。,3.1.2 一维数组元素的引用方法,例3-3 用数组存放一组统计数据,然后用“*”表示的条形图输出这组数据。程序输出效果如下所示: Element Value Striation 1 11 * 2 3 * 3 7 * 4 10 * 5 20 * 例3-4 打印如下

10、所示的杨辉三角形的前10行(要求使用一维数组处理),3.1.2 一维数组元素的引用方法,程序中,为了简化对应关系(避免使用0号元素对应第一个数据)使用了一个11个元素的数组进行处理,由于要求使用一维数组处理杨辉三角形,所以每生成一行杨辉三角形的元素值后立即将该行值输出。对每一行杨辉三角形值的具体处理方法为:首先用表达式yhrow=1将该行杨辉三角形的最后一个元素值置1,然后从后向前依次在循环条件满足的情况下执行表达式:yhcol=yhcol+yhcol-1,该表达式的意思是将一维数组yh上一次当前位置元素值与其前面一个位置上一次的元素值相加作为本次当前位置上的元素值,图3.3展示了通过第5行数

11、据生成第6行数据的情况。,数组及其应用,3.1 一维数组 3.1.1 一维数组的定义和初始化 3.1.2 一维数组元素的引用方法 3.2 二维数组和多维数组 3.2.1 二维数组和多维数组的定义 3.2.2 二维数组和多维数组元素引用方法 3.3 数组的简单应用 3.3.1 数组元素值的随机生成 3.3.2 常用排序方法 3.3.3 常用查找方法,3.2 二维数组和多维数组,在程序设计中如果需要处理诸如矩阵、平面的或立体的图形等数据信息,使用一维数组显然不方便,在这种情况下,可以使用二维、三维以至更多维的数组。一维数组存储线性关系的数据,二维数组则可以存储平面关系的数据,三维数组可以存储立体信

12、息,依次类推可以合理地使用更高维数的数组。 C语言中对多维数组概念的解释是:n维数组是每个元素均为n-1维数组的一维数组。由此可以推论出C程序中的二维数组是由若干个一维数组作为数组元素的一维数组,三维数组则是由若干个二维数组作为元素的一维数组等等,多维数组的这种概念对理解多维数组的存储、处理都有很大的帮助。,3.2.1 二维数组和多维数组的定义,二维数组定义的一般形式为: 数据类型符 数组名常量表达式常量表达式; 多维数组定义的一般形式为: 数据类型符 数组名常量表达式常量表达式; 例如,int a34, matrix1010;就定义了两个整型的二维数组a和matrix,其中a由3行4列共12

13、个元素构成;matrix由1010共100个元素组成。而float b333;则定义了一个333共27个元素构成的数组b。,3.2.1 二维数组和多维数组的定义,C语言中规定数组按“行”存储,由于计算机系统内存是一个线性排列的存储单元集合,所以当需要将二维或者更多维的数组存放到系统存储器中时,必须进行二维空间或多维空间向一维空间的投影。例如有定义语句: int a122,a2222;,则数组a1和a2在内存中存放的形式如图3.4和3.5所示。,3.2.1 二维数组和多维数组的定义,根据多维数组在存储器中按行存储的规则和多维数组的行列顺序可以计算出多维数组元素存储时在线性连续存储单元中的排列序号

14、。 设有mn(m行n列)二维数组a,则二维数组元素aij在数组的连续存储区域中的单元序号计算公式为: in+j;(行号列数+列号) 例如有二维数组定义int a55;,则数组中的元素a23在线性存储区域中的序号为:25+3=13,即将二维数组投影为一维数组存储后,二维空间中的2行3列元素是一维空间中的13号元素。 设有mnl(m页n 行l列)三维数组a,则三维数组元素aijk在数组的连续存储区域中的单元序号计算公式为: inl+jl+k; (页号行数列数+行号列数+列号),3.2.1 二维数组和多维数组的定义,二维和多维数组也可以进行初始化,以二维数组和三维数组为例,初始化的方式有两种: 分行

15、赋值初始化方式 二维(多维)数组分行初始化方式是将二维(多维)数组分解为若干个一维数组,然后依次向这些一维数组赋初值,赋值时使用大括号(花括号)嵌套的方法区分每一个一维数组,例如: int a23=1,1,1,2,2,2; int a1233=1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6; 单行赋值初始化方式 二维(多维)数组单行初始化方式是使用一个数据序列为多维数组赋初值。使用这种方式时将所有的初始化数据依次写在一个大括号中,书写时要注意数据应该的排列顺序。例如: int a23=1,1,1,2,2,2; int a1234=1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6;,3.2.1 二维数组和多维数组的定义,对于二维数组或多维数组的初始化,还需要注意以下几点: 初始化只给出部分数组元素的初始值。这种方法称为部分初始化,此时未初始化元素值为0(字符类为0)。 例如,int a23=1,1,2,2;,则初始化后二维数组a的取值形式如图3.6所示。 例如,int arr23=1,1,2,2;,则初始化后二维数组a的取值形式如图3.7所示,读者应该特别注意上面两个初始化示例以及图3.6与图3.7的区别。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号