C语言程序设计教程第五章数组 下载本文

C语言程序设计教程 高等教育出版社第二版 第五章 数组

三维数组:float a[2][3][4]在内存中的存放顺序:

a[0][0][0]→a[0][0][1]→a[0][0][2]→a[0][0][3]→ a[0][1][0]→a[0][1][1]→a[0][1][2]→a[0][1][3]→ a[0][2][0]→a[0][2][1]→a[0][2][2]→a[0][2][3]→ a[1][0][0]→a[1][0][1]→a[1][0][2]→a[1][0][3]→ a[1][1][0]→a[1][1][1]→a[1][1][2]→a[1][1][3]→ a[1][2][0]→a[1][2][1]→a[1][2][2]→a[1][2][3]

5.2.2 二维数组和多维数组的引用 二维数组元素的引用形式为: 数组名[下标1][下标2] 【例】:float a[2][3];

有6个元素,按如下方式引用各元素: a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2] 注意:数组float a[2][3]中无元素a[2][3]。(下标从0始)

5.2.3 二维数组和多维数组的初始化 ㈠二维数组的初始化

第 13 页 共 30 页

C语言程序设计教程 高等教育出版社第二版 第五章 数组

1、分行对各元素赋值,如:

static int a[3][4] =

{{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 2、全部数据写在一个花括号内,如:

static int a[3][4] =

{1,2,3,4,5,6,7,8,9,10,11,12}; 3、只对部分元素赋值。

如:static int a[3][4] = {{1},{5},{9}};

仅对a[0][0]、a[1][0]、a[2][0]赋值,其余元素未赋值(对于静态数组,未赋值元素指定初值0;对于动态数组,未赋值元素的初值是随机的)。

4、如果对全部元素赋初值,则第一维的长度可以不指定,但必须指定第二维的长度。 【例】:static int

a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 与下面定义等价:

static int

a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; ㈡多维数组的初始化

与二维数的初始化相似。

第 14 页 共 30 页

C语言程序设计教程 高等教育出版社第二版 第五章 数组

5.2.4 二维数组程序举例

【例1】:将一个二维数组行和列交换,存到另一个二维数组中。如:

算法: b[j][i] = a[i][j] 程序: main()

{ static int a[2][3] = {{1,2,3},{4,5,6}}; static int b[3][2], i,j; printf(\

for(i=0;i<=1;i++) /* 0~1行 */ { for(j=0;j<=2;j++) /* 0~2列 */ { printf(\ b[j][i] = a[i][j]; /* 行、列交换 */ }

printf(\ /*输出一行后换行

*/

}

第 15 页 共 30 页

C语言程序设计教程 高等教育出版社第二版 第五章 数组

printf(\for(i=0;i<=2;i++)

{ for(j=0;j<=1;j++)

printf(\ printf(\ }

}

【例2】:有一个3×4的矩阵,编程序求出其中值最大的那个元素的值及其所在的行号和列号。 算法:

⑴把第一个元素a[0][0]作为临时最大值max; ⑵把临时最大值max与每一个元素a[i][j]进行比较,若a[i][j]>max,把a[i][j]作为新的临时最大值,并记录下其下标i和j。当全部元素比较完后,max是整个矩阵全部元素的最大值。 流程:

第 16 页 共 30 页