内容正文:
YCF
(中职)计算机程序设计(C语言)第六章第2节教学课件工信版
1
§6.2 二维数组
6.2.1 二维数组的定义与初始化
1.二维数组的定义和存储方式
一般形式:
类型说明符 数组名[常量表达式1][常量表达式2]
例如:
int a[3][4];
该数组的下标变量共有3×4个,即:
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]
二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。
例如:对数组a[5][3]:
按行分段赋值可写为:
int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };
按行连续赋值可写为:
int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};
这两种赋初值的结果是完全相同的。
2.二维数组的初始化
一维存储器中存放二维数组,有两种方式:
1.按行排列:即放完一行之后顺次放入第二行;
2.按列排列:放完一列之后再顺次放入第二列。
在C语言中,二维数组是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节。
(1)可以只对部分元素赋初值,未赋初值的元素自动取0值。
(2)如对全部元素赋初值,则第一维的长度可以不给出。
(3)数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素又都是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。对这三个一维数组不需另作说明即可使用。
说明:
#include “stdio.h”
main()
{
int i,j,s=0;
float average, v[3],
int [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++)
s=s+a[j][i];
v[i]=s/5.0;
s=0;
}
average=(v[0]+v[1]+v[2])/3.0;
printf("math:%f
c languag:%f
dFoxpro:%f
",v[0],v[1],v[2]);
printf("total:%f
", average);
}
【例6.13】求各科平均分和总成绩平均分。
【例6.14】一个学习小组有5个人,每个人有三门课的考试成绩,成绩如表6-2-1所示。求全组分科的平均成绩和各科总平均成绩。
【分析】可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。
表6-2-1 5个人三门课考试的成绩表
#include <stdio.h>
main()
{ int i,j,s=0;
float average,v[3],a[5][3];
printf("input score
");
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.0;
s=0;
}
average =(v[0]+v[1]+v[2])/3.0;
printf("math:%f
c languag:%f
dbase:%f
",v[0],v[1],v[2]);
printf("total:%f
", average );
}
程序代码如下:
二维数组的元素也称为双下标变量,其表示的形式为:
数组名[下标][下标]
其中下标应为整型常量或整型表达式。
例如:a[3][4] 表示a数组三行四列的元素。
下标变量和数组的比较: