七章数组.ppt
《七章数组.ppt》由会员分享,可在线阅读,更多相关《七章数组.ppt(48页珍藏版)》请在三一文库上搜索。
1、北京理工大学 http:/www.bit9.dhs.org/,数组,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 2 页,第七章 数组,第一节 数组的基本概念 第二节 一维数组 第三节 二维数组 第四节 应用实例,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 3 页,7-1 数组的基本概念,一班学生的学习成绩,如何存储和引用? 一行文字怎样存储? 一个矩阵怎样存储 ?,一组具有相同数据类型的数据的有序集合。,?,这些数据的特点:具有相同的数据类型。 为了方便地使用这些数据,C语言提供了一种构造数据类型:数组。,北京理工大学 h
2、ttp:/www.bit9.dhs.org/,共 12 页 第 4 页,7-1 一维数组(续1),例如:存储学生成绩用整型数组 mark100, 存储一行文字用字符数组 str200, 存储一个4*6的矩阵用二维整型数组 a46。 其中:mark、str、a 是数组名。 方括号内是数组的下标。 下标的个数称为数组的维数,mark、str是一维数组、a是二维数组。 数组的成员称为数组元素。,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 5 页,7-2 一维数组,例如: float mark100; char str200; int a46; 数组名 对数组的标识
3、,遵循C语言标识符规则。 mark、str、a 是数组名。 数据类型 就是数组元素的数据类型, 数组元素的类型叫做数组的基类型。 mark是 str是 a是 实型数组、 字符数组、 整型数组,一、一维数组的定义,数据类型 数组名常量表达式,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 6 页,7-2 一维数组(续1),下标运算符 数组名后面的方括号是下标运算符。 不允许使用()括号。 常量表达式 是数组元素的个数,即数组长度。 它必须是常量。 mark的长度是100,str的长度是200, a的长度是4*6。 C语言不允许对数组的大小进行动态说 明,下列语句是
4、错误的。 int n = 8 , a1n; Error: Constant expression required in function main,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 7 页,7-2 一维数组(续2),数组元素在内存里顺序存放 一维数组,二、数组在内存的存放,每个数据元 素占用的字节 数,就是基类 型的字节数,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 8 页,7-2 一维数组(续3),数组元素的引用方式: 数组不能被整体引用,只能引用数组元素,格式: 数组名下标表达式 例如:输出学生成绩 for
5、(i= 0;i100;i+) printf(“%fn”,marki); 下标:下标表达式的值必须是整型数据 。 辨疑: 在说明语句中,方括号内的值是元素个数, 如:int a10, 说明数组a一共有10个元素。 引用时第一个元素的下标是 0 ,即a0、a1、a9 。,三、数组元素的引用,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 9 页,7-2 一维数组(续4), 被称为下标运算符。 数组名、数组元素是两种不同性质的数据。 数组名是数组的首地址,是一个地址量。 数组元素则是数值。 引用数组元素时,根据首地址和下标数,计算出该元素的实际地址,取出该地址的内容进
6、行操作。,如引用 mark2: (1)计算 2000+2*4=2008 (2)从取出2008的内容,下标运算符,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 10 页,7-2 一维数组(续4),数组元素的性质 数组元素的性质,与该类型的变量相同。 例C7_201:从键盘输入10个整数,再反序输出它们。 main( ) int i, a10; for(i= 0;i= 0;i- -) printf(“%dn”,ai); ,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 11 页,7-2 一维数组(续5),初始化:在说明语句中赋初值。
7、考察例C7_202,例C7_202,结论: 1.变量、数组元素不赋初值时,其值不定。 2.语句 int a5=1,2,3,4,5; 为每一个数组元素赋初值。花括号内数据个数与元素个数一样。此时可省略数组长度, 如 int a =1,2,3,4,5 。 3.当数据个数少于元素个数时,如 int a5=1,2,3,系统为其余元素赋 0 。 4.数据个数多于元素个数是错误的。 给定的数据位置必须连续,如 int a5=1,3,5。,四、一维数组的初始化,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 12 页,7-2 一维数组(续6),例C6_103:选择法排序 将
8、23,1,0,43,-3,7 从小到大排列。 选择法是取出第一个数,依次和后面的数比较,如果后面的某数小于第一个数,则两个数交换,比较结束后,第一个数则是最小的数。 然后第二个数依次和后面的数比较,如果后面的某数小于第二个数,则两个数交换,比较结束后,第二个数则是次小的数; 。 编程时注意循环变量的始值和终值。,五、一维数组的应用,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 13 页,7-2 一维数组(续7),i=0,23,1,1,0,0,43,-3,7,-3,t=a0;a0=a1;a1=t;,t=a0;a0=a2;a2=t;,t=a0;a0=a4;a4=t
9、;,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 14 页,7-2 一维数组(续7),例C7_203,i=1,i=2,i=3,i=4,i=0,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 15 页,7-2 一维数组(续7),i=0,ar aj,j=1,ar aj,j=2,ar aj,j=3,ar aj,j=4,ar aj,j=5,t = ai; ai = ar; ar = t;,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 16 页,7-2 一维数组(续8),for ( i = 0 ; i a
10、 j ) r = j; temp = a i ; a i = a r ; a r = temp ; ,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 17 页,7-2 一维数组(续9),例C7_204:起泡法排序,i=0,a5 a4 a3 a2 a1 a0,i=1,i=2,i=3,i=4,比较 a j a j+1 如果成立两元素交换,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 18 页,7-2 一维数组(续10),例C6_104:起泡法排序,i=0,a5 a4 a3 a2 a1 a0,i=1,i=2,i=3,i=4,4,i 控
11、制外层循环: for(i=0;i ;i+),n-1,j 控制内层循环: for(j= ;j ;j+),0,n-1,n-1-i,n-i-1,例C7_204,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 19 页,7-3 二维数组,下标多于一个的数组叫做多维数组。,数组名常量表达式 常量表达式,例如: int a34,b514; a3,4 a(3,4) a(3)(4),一、二维数组的定义,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 20 页,7-3 二维数组(续1),数组a,a0 :,a1 :,a2 :,a00,a01,a02,
12、a03,a10,a11,a12,a13,a20,a21,a22,a23,a0是数组名,是元素a00的地址,a1是数组名, 是元素a10的地址,a2是数组名, 是元素a00的地址,数组a有三 个分量,a 是分量a0 的地址,二、二维数组的数组名,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 21 页,7-3 二维数组(续2),例如:整型数组 b b23= 1,2,3, 4,5,6 ;,多维数组存放: 多维数组的元素按行顺序存放。,地址 值 数组元素,三、多维数组元素的存放,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 22 页,
13、7-3 二维数组(续3),可以使用 对数据分组 例: int a34=1,2,3,4,5,6,7,8,9 初始化后结果: 1 2 3 4 5 6 7 8 9 0 0 0 int a34=1,2,3,4,5,6,7,8,9 初始化后结果: 1 2 3 0 4 5 6 0 7 8 9 0,四、二维数组的初始化,例C7_301,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 23 页,7-3 二维数组(续4),省略下标表达式 当数据元素个数和数据个数一致时,数组说明语句中的第一个下标可以省略。 例如:int a4=1,2,3,4,5,6,7,8; int b4=1,2
14、,3,4,5,6,7,8,9; int c22=1,2,3,4,5,6,7,8; 初始化结果:,例C7_302,a 结果 a0: 1 2 3 4 a1: 5 6 7 8,b 结果: b0: 1 2 3 4 b1: 5 6 7 8 b2: 9 0 0 0,c 结果: c0: c00: 1 2 c01: 3 4 c1: c10: 5 6 c11: 7 8,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 24 页,7-3 二维数组(续5),省略其它位置的下标表达式是错误的。 int a2 =1,2,3,4,5,6,7,8; int c2 2=1,2,3,4,5,6,7
15、,8; int c22 =1,2,3,4,5,6,7,8;,例C7_303,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 25 页,7-3 二维数组(续5),二维数组举例 例C6_204: 两个矩阵相乘。 1 2 3 4 1 3 5 A= 5 6 7 8 B= 2 4 6 9 10 11 12 7 9 11 8 10 12 C1,1= A1,1*B1,1 + A1,2*B2,1 + A1,3*B3,1 + A1,4*B4,1 C1,2= A1,1*B1,2 + A1,2*B2,2 + A1,3*B3,2 + A1,4*B4,2 C3,3= A3,1*B1,3
16、+ A3,2*B2,3 + A3,3*B3,3 + A3,4*B4,3,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 26 页,7-3 二维数组(续6),分析 结果矩阵C有3行3列。 重复求一行 for(i=0;in;i+) 重复求行中一个元素 for(j=0;jn;j+) 重复将每一项加入 for(k=0;km;k+) cij=cij+aik*bkj;,例C7_304,北京理工大学 http:/www.bit9.dhs.org/,共 12 页 第 27 页,7-4 程序举例,例C7_401:马步遍历问题: 已知国际象棋棋盘有 8 8 共64个格子。设计一个程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组
链接地址:https://www.31doc.com/p-2582744.html