a[3][4]
表示 a 数组三行四列的元素。
下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方
括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组
中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。
【例 7.6】一个学习小组有 5 个人,每个人有三门课的考试成绩。求全组分科的平均成绩和
各科总平均成绩。
Math
张 王
80 61
李
59
赵
85
周
76
C
75
65
63
87
77
Foxpro 92
71
70
90
85
可设一个二维数组 a[5][3]存放五个人三门课的成绩。再设一个一维数组 v[3]存放所求
得各分科平均成绩,设变量 average 为全组各科总平均成绩。编程如下:
main()
{
int i,j,s=0,average,v[3],a[5][3];
printf("input score\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{ scanf("%d",&a[j][i]);
s=s+a[j][i];}
v[i]=s/5;
s=0;
}
average =(v[0]+v[1]+v[2])/3;
printf("math:%d\nc languag:%d\ndbase:%d\n",v[0],v[1],v[2]);
printf("total:%d\n", average );
}
谭浩强 C 语言程序设计 2001 年 5 月 1 日
程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并
把这些成绩累加起来,退出内循环后再把该累加成绩除以 5 送入 v[i]之中,这就是该门课
程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在 v 数组之中。
退出外循环之后,把 v[0],v[1],v[2]相加除以 3 即得到各科总平均成绩。最后按题意输出
各个成绩。
7.2.3 二维数组的初始化
二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,
也可按行连续赋值。
例如对数组 a[5][3]:
1) 按行分段赋值可写为:
int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };
2) 按行连续赋值可写为:
int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,7