




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 二维数组二维数组每一个元素是类型相同、长度相等的一维数组每一个元素是类型相同、长度相等的一维数组 n 维数组维数组每一个元素是类型相同、长度相等的每一个元素是类型相同、长度相等的 n-1 维数组维数组a 0 a 1 a 2 17 19 20 18 23 16 22 19 25 23 16 31 二维数组二维数组 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 二维数组二维数组a 0 a 1 a 2 17 19 10 18 23 26 22 29 25 23 28 21 37 39 30 38 43 46 42 49 55 43 36 31 b
2、0 b 1 b 2 三维数组三维数组b 0 b 1 b 2 17 19 10 18 23 26 22 29 25 23 28 21 37 39 30 38 43 46 42 49 55 43 36 31 b00b01b10b11b20b21三维数组三维数组三维数组三维数组b 0 b 1 b 2 b00b01b10b11b20b21 b000 b001 b002 b003 b004 b010 b011 b012 b013 b014 b100 b101 b102 b103 b104 b110 b111 b112 b113 b114 b200 b201 b202 b203 b204 b210 b21
3、1 b212 b213 b214多维数组按高维优先存放多维数组按高维优先存放a 3 4 b 2 3 2 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 b 0 0 0 b 0 0 1 b 0 1 0 b 0 1 1 b 0 2 0 b 0 2 1 b 1 0 0 b 1 0 1 b 1 1 0 b 1 1 1 b 1 2 0 b 1 2 1 5.3.1 5.3.1 二维数组定义与初始化二维数组定义与初始化 具有两个下标的数组称为具有两个下标的数组称为二维数组二维数组。有些数据要依。有些数据要依赖于两
4、个因素才能惟一地确定,例如有赖于两个因素才能惟一地确定,例如有3个学生个学生,每个学生有每个学生有4门课门课的成绩,显然,成绩数据是一个的成绩,显然,成绩数据是一个二维表,如书中表二维表,如书中表5.1所示。所示。想表示第想表示第3个学生第个学生第4门课的成绩,就需要指出学生门课的成绩,就需要指出学生的序号和课程的序号两个因素,在数学上以的序号和课程的序号两个因素,在数学上以S3,4表表示。在示。在C+中以中以s34表示,它代表数据表示,它代表数据73。定义定义二维数组二维数组的一般形式为的一般形式为类型类型 数组名常量表达式常量表达式数组名常量表达式常量表达式;例如例如float a34,b
5、510;定义定义a为为34(3行行4列列)的单精度数组,的单精度数组,b为为510(5行行10列列)的的单精度数组。注意不能写成单精度数组。注意不能写成“float a3,4,b5,10;”。C+对二维数组采用这样的定义方式,使我们可以把二维对二维数组采用这样的定义方式,使我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如,可以把数组。例如,可以把a看作是一个一维数组,它有看作是一个一维数组,它有3个元素:个元素:a0,a1,a2,每个元素又是一个包含,每个元素又是一个包含4个元素的个元素的一维数组,见图一维数组,见图5
6、.4。a0,a1,a2是是3个一维数组个一维数组的名字。的名字。图图5.4上面定义的二维数组可以理解为定义了上面定义的二维数组可以理解为定义了3个一维数组,即相个一维数组,即相当于当于float a04,a14,a24此处把此处把a0,a1,a2作一维数组名。作一维数组名。C+的这种处的这种处理方法在数组初始化和用指针表示时显得很方便,这在以理方法在数组初始化和用指针表示时显得很方便,这在以后会体会到。后会体会到。C+中,二维数组中元素排列的顺序是:中,二维数组中元素排列的顺序是:按行存放按行存放,即在内存中先顺序,即在内存中先顺序存放第一行的元素,再存放第二行的元素。图存放第一行的元素,再存
7、放第二行的元素。图5.5表示对表示对a34数数组存放的顺序。组存放的顺序。图图5.5C+允许使用允许使用多维数组多维数组。有了二维数组的基础,再掌握多维数组是不困。有了二维数组的基础,再掌握多维数组是不困难的。例如,定义难的。例如,定义三维数组三维数组的方法是的方法是float a234 ; 定义定义float型三维数组型三维数组a,它有,它有234=24个元素。多维数组元素在内存个元素。多维数组元素在内存中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快。例中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快。例如,上述三维数组的元素排列顺序为如,上述三维数组的元素排列顺序为a00
8、0a001a002a003a010a011a012a013a020a021a022a023a100a101a102a103a110a111a112a113a120a121a122a123二维数组的元素的表示形式为二维数组的元素的表示形式为数组名数组名 下标下标下标下标如如a23。下标可以是整型表达式,如。下标可以是整型表达式,如a2-12*2-1。不要写成。不要写成a2,3,a2-1,2*2-1形式。形式。数组元素是数组元素是左值左值,可以出现在表达式中,也可以,可以出现在表达式中,也可以被赋值被赋值,例如例如b12=a23/2;在使用数组元素时,应该注意在使用数组元素时,应该注意下标值下标值
9、应在应在已定义的数组大已定义的数组大小的范围内小的范围内。常出现的错误是。常出现的错误是int a34; /定义定义3行行4列的数组列的数组a34=15; /引用引用a34元素元素定义定义a为为34的数组,它可用的行下标值最大为的数组,它可用的行下标值最大为2,列坐标值最大为列坐标值最大为3。最多可以用到。最多可以用到a23,a34就超过了数组的范围。就超过了数组的范围。请严格区分在请严格区分在定义数组定义数组时用的时用的a34和和引用引用元素元素时的时的a34的区别。前者的区别。前者a34用用来定义数组的维数和各维的大小,后者来定义数组的维数和各维的大小,后者a34中的中的3和和4是下标值,
10、是下标值,a34代表某一个元素。代表某一个元素。可以用下面的方法对二维数组初始化:可以用下面的方法对二维数组初始化:(1) 分行给二维数组赋初值。分行给二维数组赋初值。如如int a34= 1,2,3,4 , 5,6,7,8 , 9,10,11,12 ; 这种赋初值方法比较直观,把第这种赋初值方法比较直观,把第1个花括号内的数据赋给第个花括号内的数据赋给第1行的元素,第行的元素,第2个花括号内的数据赋给第个花括号内的数据赋给第2行的元素行的元素即即按行赋初值。按行赋初值。(2) 可以将所有数据写在一个花括号内,可以将所有数据写在一个花括号内,按数组排列的顺序按数组排列的顺序对各元素赋初值。对各
11、元素赋初值。如如int a34=1,2,3,4,5,6,7,8,9,10,11,12;效果与前相同。但以第效果与前相同。但以第1种方法为好,一行对一行,界限清种方法为好,一行对一行,界限清楚。用第楚。用第2种方法如果数据多,写成一大片,容易遗漏,也种方法如果数据多,写成一大片,容易遗漏,也不易检查。不易检查。(3) 可以对部分元素赋初值。可以对部分元素赋初值。如如int a34= 1 , 5 , 9 ;它的作用是只对各行第它的作用是只对各行第1列的元素赋初值,其余元素值自动列的元素赋初值,其余元素值自动置为置为0。赋初值后数组各元素为。赋初值后数组各元素为1 0 0 05 0 0 09 0 0
12、 0 也可以对各行中的某一元素赋初值:也可以对各行中的某一元素赋初值:int a34=1,0,6,0,0,11; 初始化后的数组元素如下:初始化后的数组元素如下:1 0 0 00 6 0 00 0 11 0这种方法对这种方法对非非0元素少元素少时时比较方便比较方便,不必将所有的,不必将所有的0都写出都写出来,只需输入少量数据。也可以只对某几行元素赋初值:来,只需输入少量数据。也可以只对某几行元素赋初值:int a34=1,5,6; 数组元素为数组元素为 1 0 0 05 6 0 00 0 0 0第第3行不赋初值。也可以对第行不赋初值。也可以对第2行不赋初值:行不赋初值:int a34=1,9;
13、(4) 如果如果对全部元素都赋初值对全部元素都赋初值(即提供全部初始数据即提供全部初始数据),则定,则定义数组时对义数组时对第一维的长度可以不指定第一维的长度可以不指定,但,但第二维的长度不第二维的长度不能省能省。如。如int a34=1,2,3,4,5,6,7,8,9,10,11,12;请写出如上阵列请写出如上阵列形式的数组元素值?形式的数组元素值?可以写成可以写成int a4=1,2,3,4,5,6,7,8,9,10,11,12;系统会根据数据总个数分配存储空间,一共系统会根据数据总个数分配存储空间,一共12个数据个数据,每,每行行4列列,当然可确定为,当然可确定为3行行。在定义时也可以在
14、定义时也可以只对部分元素赋初值而省略第一维的长度只对部分元素赋初值而省略第一维的长度,但但应分行赋初值应分行赋初值。如。如int a4=0,0,3,0,10;这样的写法,能通知编译系统:这样的写法,能通知编译系统: 数组共有数组共有3行。数组各元素行。数组各元素为为 0 0 3 00 0 0 00 10 0 0C+在定义数组和表示数组元素时采用在定义数组和表示数组元素时采用a这种两个这种两个方括号的方式,对数组初始化时十分有用,它使概念清楚,方括号的方式,对数组初始化时十分有用,它使概念清楚,使用方便,不易出错。使用方便,不易出错。/ 例例 访问二维数组访问二维数组#include #incl
15、ude void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; / 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j
16、 ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; a/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl
17、 ; aij/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; a0ij/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for (
18、i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; a00ij/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ;
19、j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; a00ij2/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; a01ij2a01ij2/ 例例 访问二维数组访问二维数组#inclu
20、de #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 4a02ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for (
21、 j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; a02ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw (
22、 5 ) a i j ; cout endl ; 6a03ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 6a03ij24/ 例例 访问二维数组访问二维数组#include #include void main ( )
23、 int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 68a04ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for (
24、 i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 68a14ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl
25、 ; 68a10ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 68a10ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i ,
26、 j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681a11ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i +
27、) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681a11ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 6813a12ij24/ 例例
28、 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 6813a12ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i =
29、 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 68135a13ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j =
30、0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357a20ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 6813579a21ij24/ 例例 访问二维数
31、组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357910a22ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i =
32、0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357910 11a23ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for
33、( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357910 1112a24ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357910
34、1112a34ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357910 1112a00ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j 4 ; j + ) cout setw ( 5 ) a i j ; cout endl ; 681357910 1112a00ij24/ 例例 访问二维数组访问二维数组#include #include void main ( ) int a 3 4 ; int i , j ; for ( i = 0 ; i 3 ; i + ) for ( j = 0 ; j a i j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冬至知识分享
- 情绪管理心理健康教育
- 少儿美术教育机构
- 弹性髓内钉治疗儿童骨折操作技巧
- 口腔保健培训讲课
- 小学生电梯安全知识讲座
- 2025年金属材精整工职业技能考试题库及答案
- 部编版三年级语文下册第一单元标准检测卷(含答案)
- 心理咨询师的家庭婚姻关系与冲突解决课程
- 大学介绍爱因斯坦
- 工业互联网基础 课件 3.1 工业互联网平台概述
- 智慧酒店智能化系统解决方案
- 2025年合肥滨湖职业技术学院单招职业技能测试题库完美版
- 《中建三局工程管理实习报告》2000字
- 家庭牧场申请书
- 军队文职考试(会计学)近年考试真题题库(含真题、典型题)
- 2025年辽宁医药职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 模块综合试卷-2024版化学高三总复习
- 福建省宁德市2024-2025学年九年级上学期期末考试道德与法治试题
- 第3课 珍惜水资源(说课稿)-2023-2024学年五年级下册科学教科版
- 《肺功能测定及报告》课件
评论
0/150
提交评论