二维数组及多维数组 维数组通常是用來处理数列问题的 例女 、a- a a n 可以用一维来表示。 二维数组通常是用來矩阵问题的,例如下面 的数表(矩阵): a 13 可以用二维数 2 组来表示。 32a33a343×4
§7.2 二维数组及多维数组 一维数组通常是用来处理数列问题的 例如: a1 、 a2 、a3 、….、an、 …. 可以用一维来表示。 二维数组通常是用来矩阵问题的,例如下面 的数表(矩阵): a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 3×4 可以用二维数 组来表示
★1、二维数组的定义元素个数=行数coom 今定义方式 cIoJ1OJ2 c0[0[3 数据类型数组名[常量表达式常量表|cpo c 例inta[3[4]; c0][1][2 今数组 float b[21[5] [0[113 coJ2 在 int a3, 4j 即先存第一行,接着存第二行, cO1212 以此类推。例如: c0J23 cl1lOJOT int a32 a[0J1o1 CCCcC a110 cl[12 c[[13 alo al a[2]o c[12J10J c[1][2 a[2][0]a[2 a[2][1] c[l[2[2 c[1[2[3
1、二维数组的定义 ❖定义方式: 数据类型 数组名[常量表达式][常量表达式]; ❖数组元素的存放顺序 在内存中按行顺序存放。 即先存第一行,接着存第二行, 以此类推。例如: 例 int a[3][4]; float b[2][5]; int a[3,4]; () 行数元素个数=行数列数*列数 int a[3][2] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 0 1 4 5 2 3 a[0][0] a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 0 1 2 3 4 5 6 7………... 20 21 22 23 int c[2][3][4] c[0][0][0] c[0][0][1] c[0][0][2] c[0][0][3] c[0][1][0] c[0][1][1] c[0][1][2] c[0][1][3] c[0][2][0] c[0][2][1] c[0][2][2] c[0][2][3] c[1][0][0] c[1][0][1] c[1][0][2] c[1][0][3] c[1][1][0] c[1][1][1] c[1][1][2] c[1][1][3] c[1][2][0] c[1][2][1] c[1][2][2] c[1][2][3]
2、二维数组理解 由按上述定义的二维数组的方式(比如:inta[2[3]), 我们可以把二维数组看成是一种特殊的一维数组:它的 元素又是一维数组。例如,把a看成是一维数组,它有 3个元素,分别是:a[0]、a[1a[2],每个元素又是 个包含4个元素的一维数组。如下表: a0]—a[oo]、a[o[1]、ao12]、a[01[3] aa[al[lj0、all、al[l2]、a[l3] a2]a[2]0、a[2[1、a2]2]、a[21[3 其中a是数组a[0]、a[1]、a[2]的数组名 而a[0]是数组a[o[0]、a[o[、ao[2]、a[0]3]的数组名 a[]是数组a[]o]、a[l1]、a[1[2]、a[113]的数组名 a[2]是数组a[2]0]、a[2]、a[21[2]、a[2][3]的数组名
2、二维数组理解 由按上述定义的二维数组的方式 (比如:int a[2][3] ), 我们可以把二维数组看成是一种特殊的一维数组:它的 元素又是一维数组。例如,把 a看成是一维数组,它有 3个元素,分别是:a[0]、a[1]、a[2],每个元素又是一 个包含4个元素的一维数组。如下表: a[0] a[0][0] 、 a[0][1] 、 a[0][2] 、 a[0][3] a a[1] a[1][0] 、 a[1][1] 、 a[1][2] 、 a[1][3] a[2] a[2][0] 、 a[2][1]、 a[2][2] 、 a[2][3] 其中 a 是数组 a[0]、a[1]、a[2] 的数组名 而 a[0] 是数组 a[0][0]、a[0][1] 、a[0][2] 、 a[0][3] 的数组名 a[1]是数组 a[1][0]、a[1][1] 、a[1][2]、a[1][3]的数组名 a[2]是数组 a[2][0]、a[2][1]、 a[2][2] 、a[2][3]的数组名
3、二维数组元素的引用 形式:数组名下标]下标 4、二维数组的输入輸出。使用双层循环。例如 maino f int a 415,i,j; for(i=1;i=3;i++) 输入,数据用空格或回 for(j=1<=4ij++) 车隔开 scanf(%d”,sa[il[j); for(i=1;i<=3;i++) for(j=1;<=4-ij++) 输出 printf(d”,a[ilj):
3、二维数组元素的引用 形式: 数组名[下标][下标] 4、二维数组的输入输出。 使用双层循环。例如: main() { int a[4][5] , i , j ; for (i=1 ;i<=3;i++) for(j=1;j<=4;j++) scanf(“%d”,&a[i][j]); for (i=1 ;i<=3;i++) for(j=1;j<=4;j++) printf(“%d”, a[i][j]); } 输入,数据用空格或回 车隔开 输出
5、二维数组元素的初始化 分行初始化: 第 第一维长度省略初始化 例inta[][3]={1,2,3,4、5}: a[ojo] aoJ[1] a[0J[2] o1 a[l]ll] a[l][2]
5、二维数组元素的初始化 ⚫分行初始化: ⚫按元素排列顺序初始化 例 int a[2][3]={{1,2,3},{4,5,6}}; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 1 2 3 4 5 6 全部初始化 = 例 int a[2][3]={{1,2},{4}}; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 1 2 0 4 0 0 部分初始化 = 例 int a[ ][3]={{1 },{4,5}}; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 1 0 0 4 5 0 第一维长度省略初始化 = 例 int a[ 2][3]={1,2,3,4,5,6}; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 1 2 3 4 5 6 全部初始化 = 例 int a[ 2][3]={1,2,4,}; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 1 2 4 0 0 0 部分初始化 = 例 int a[ ][3]={1,2,3,4、5}; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 1 2 3 4 5 0 第一维长度省略初始化 =