二维数组的应用.ppt
《二维数组的应用.ppt》由会员分享,可在线阅读,更多相关《二维数组的应用.ppt(45页珍藏版)》请在三一办公上搜索。
1、第9章 二维数组的应用,9.1 了解二维数组9.2 二维数组的简单应用9.3 利用地址和指针访问二维数组9.4 二维数组名作函数的实参9.5 二维数组操作中的常用算法介绍,9.1 了解二维数组,9.1.1 二维数组的用途9.1.2 二维数组的定义与一维数组一样,二维数组也必须先定义,然后才可以使用。定义语句的形式如下:类型名 数组名常量表达式1常量表达式2,;,二维数组的定义形式与一维数组相似,所不同的是增加了一个用方括号括起来的常量表达式。这里常量表达式1用来指定二维数组的行数;常量表达式2用来指定二维数组的列数。由于C语言规定了数组下标值的下限一律为0,所以二维数组行下标的上限为常量表达式
2、1的值减1;列下标的上限为常量表达式2的值减1。,前面提到的存放4名学生3门课成绩的二维数组可定义如下:int s43;此语句表明:这是一个名为s的4行3列的二维数组;数组中一共可以存储43个整型数据;数组行下标的范围是03,列下标的范围是02。它在逻辑结构上可以看作以下形式的矩阵(或表格):,9.1.3 二维数组元素的引用二维数组中的元素在逻辑上可以看作构成了一个矩阵,但在物理上仍旧占据的是一串连续的存储单元。这些元素在内存中的排列顺序是“按行”存放,即:先放第0行的元素,再放第1行的元素,依次类推。,如有定义:int x23;则数组x在内存中的存储结构如图9-1所示:,图9-1 二维数组存
3、储结构示意图,二维数组每个元素都具有一个名字带有双下标的变量。它的一般表示形式为:数组名下标表达式1下标表达式2如图9-1中所标出的x00、x01、这里每一维的下标都可以是整型的常量、变量或表达式。如:xij、x0j+1等都是合法的。注意:C语言中二维数组元素的两个下标是分别放在两个方括号中的,不要误写成x0,0、xi,j这种非法形式。,二维数组元素的引用与一维数组相同,也能够参与同类型变量允许的所有操作。例如:scanf(%d,/*赋值*/if(x0010)/*条件判断*/,而语句:x23=0;则是错误的。因为在定义语句中限定了x数组是一个23的数组,其行下标最大值为1,列下标最大值为2。上
4、述引用造成了下标越界。同样是x23,初学者要注意区分它出现在定义语句中和元素引用时的不同含义。,9.1.4 二维数组的初始化与一维数组一样,可以在定义二维数组的同时为其元素赋初值。(1)分行给二维数组的所有元素赋初值。例如:int x34=1,2,3,4,5,6,7,8,9,10,11,12;这种形式比较规范和直观:最外层有一对花括号,在其内部,每一行元素的初值分别括在一对花括号中,中间用逗号分隔。,(2)分行为二维数组中部分元素提供初值。例如:int x34=1,2,3;赋值后,x数组中各元素的值为:1 0 0 0 2 0 0 0 3 0 0 0,显然,当某一行花括号内初值个数少于该行的元素
5、个数时,系统自动补以初值0。又如:int x34=1,2,3,4;赋值后,数组元素值为:1 2 0 0 3 4 0 0 0 0 0 0也就是说,当行花括号少于数组的行数时,系统自动为后面的各行补以初值0。,(3)为二维数组赋初值时省略行花括号。例如:int x34=1,2,3,4,5,6,7,8,9,10,11,12;这里只保留了最外侧的花括号,而省略了用来界定行元素的花括号。此时,系统将按照数组元素在内存中的排列顺序,依次将数据赋给各个元素。,若数据的个数少于元素的个数,系统将自动为其赋初值0。例如:int x34=1,2,3;赋值后的数组元素值为:1 2 3 0 0 0 0 0 0 0 0
6、 0,(4)通过赋初值确定二维数组中第一维的大小。在定义二维数组时,可以省略第1个方括号中的常量表达式1,但不允许省略第2个方括号中的常量表达式2。例如:int x 4=0,2,3,5,6,7;,以上语句所赋初值中带有3个用来界定行元素的花括号对。因此,省略的第一维的大小就是3。它等价于:int x34=0,2,3,5,6,7;也可以省略行花括号对,采用以下赋值形式:int y 4=1,2,3,4,5,6;由于第二维(列数)是确定的,初值个数给定了,第一维(行数)的大小就是惟一的。,计算方法是:用初值个数(6)除以第二维的大小(4);若能除尽,商就是第一维的大小;否则商数+1是第一维的大小。此
7、例中y数组第一维的大小应是2,以上定义语句等价于:int y24=1,2,3,4,5,6;,9.2 二维数组的简单应用,例9.2 编程为55的二维数组的左下半三角依次赋自然数115,其余元素为0。输出形式如下:1 0 0 0 0 2 3 0 0 0 4 5 6 0 0 7 8 9 10 0 11 12 13 14 15,问题分析对二维数组元素的访问通常都是在双重循环中进行的。通过控制循环变量的初值、终值和增量的变化,从而控制数组下标的变化,以实现有规律的访问二维数组中的部分元素。如:左下角、左上角、右下角、右上角、对角线等。源程序如下:,main()int n55=0,i,j,k=1;for(
8、i=0;i5;i+)for(j=0;j=i;j+)nij=k+;for(i=0;i5;i+)for(j=0;j5;j+)printf(%3d,nij);printf(n);,程序中先通过定义时的初始化使数组n中的内容为全0。再通过双重循环为数组的左下半三角赋值。赋值的内容(自然数115)由变量k通过每次自增1提供。需赋值的元素有这样的规律:每行需要赋值的元素个数与行数有关,第1行1个元素、第2行2个元素,所以,内循环变量j的循环条件是j=i。当 i=0时(第1行),j的变化是00,内循环执行1次(给1个元素赋值);当 i=1时(第2行),j的变化是01,内循环执行2次(给2个元素赋值);,9.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二维 数组 应用
链接地址:https://www.31ppt.com/p-4516094.html