2.8.2 二维数组的定义和使用
当数组元素具有两个下标时,该数组称为二维数组,同样地,n 维数组具有n 个下标。在实际问题中有很多量是二维的或多维的,多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2];
其中常量表达式1 表示***维下标的长度,常量表达式2 表示第二维下标的长度。
例如:int a[2][3];
该语句表示:
(1)定义了整型二维数组a,其数组元素类型是int。
(2)a 数组有两行三列,共6 个元素。
(3)该数组的行下标为0、1,列下标为0、1、2。数组元素分别是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2];
(4)定义了int型数组a,编译程序将为a 数组在内存中开辟6 个连续的存储单元,用来存放a 数组的6 个元素。存储方式为按行存放,即先依次存放第0 行的3 个元素,然后再接着存放第1行的3 个数组元素。数组名a 代表数组的首地址。
(5)在C 语言中,二维数组a 的每一行都可以看做是一维数组,a[0]表示第0 行的3 个元素构成的一维数组。
同一维数组一样,引用二维数组,也是引用它的数组元素。其表示形式为:数组名[行下标][列下标]
其中下标应为整型常量或整型表达式。
二维数组初始化也是在类型说明时给各下标变量赋予初值,二维数组可按行分段赋值,也可按行连续赋值。例如对数组a[4][3]的赋值如下。
(1)按行分段赋值可写为:int a[4][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90} };
(2)按行连续赋值可写为:int a[4][3]={ 80,75,92,61,65,71,59,63,70,85,87,90};
这两种赋初值的结果是完全相同的。程序2.17 是二维数组定义与使用的简单例子。
【程序 2.17】一个学习小组共有5 人,每个人有三门课的考试成绩,求各科的平均成绩和全组成员的总平均成绩。他们的成绩与科目如下表所示:
程序2.17:test17.c。#include
main( )
{
int i,j,s=0, average,v[3];
int a[5][3]={{80,75,92},{61,65,71},{59,63,70},
{85,87,90},{76,77,85}};/*定义二维数组*/
for(i=0;i<3;i++) /*用两层循环嵌套的方式访问数组的每个元素*/
{
for(j=0;j<5;j++)
ss=s+a[j][i]; /*变量s 的值为各科的总成绩*/
v[i]=s/5; /*各科的平均成绩*/
s=0;
}
average=(v[0]+v[1]+v[2])/3; /*总平均成绩*/
printf("Math:%d\nC language:%d\nFoxpro:%d\n",v[0],v[1],v[2]);
printf("total:%d\n", average);
}
程序运行结果如下(□表示空格):Math:72
C language:73
Foxpro:81
total:75
【责任编辑:云霞 TEL:(010)68476606】
点赞 0