设为首页 加入收藏

TOP

2.8.2 二维数组的定义和使用
2013-10-12 07:01:24 来源: 作者: 【 】 浏览:115
Tags:2.8.2 二维数 义和 使用

2.8.2 二维数组的定义和使用

当数组元素具有两个下标时,该数组称为二维数组,同样地,n 维数组具有n 个下标。在实际问题中有很多量是二维的或多维的,多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。二维数组定义的一般形式是:

  1. 类型说明符数组名[常量表达式1][常量表达式2]; 

其中常量表达式1 表示第一维下标的长度,常量表达式2 表示第二维下标的长度。

例如:

  1. int a[2][3]; 

该语句表示:

(1)定义了整型二维数组a,其数组元素类型是int。

(2)a 数组有两行三列,共6 个元素。

(3)该数组的行下标为0、1,列下标为0、1、2。数组元素分别是:

  1. 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 个元素构成的一维数组。

同一维数组一样,引用二维数组,也是引用它的数组元素。其表示形式为:

  1. 数组名[行下标][列下标] 

其中下标应为整型常量或整型表达式。

二维数组初始化也是在类型说明时给各下标变量赋予初值,二维数组可按行分段赋值,也可按行连续赋值。例如对数组a[4][3]的赋值如下。

(1)按行分段赋值可写为:

  1. int a[4][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90} }; 

(2)按行连续赋值可写为:

  1. 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。

  1. #include <stdio.h> 
  2. main( )  
  3. {  
  4. int i,j,s=0, average,v[3];  
  5. int a[5][3]={{80,75,92},{61,65,71},{59,63,70},
    {85,87,90},{76,77,85}};/*定义二维数组*/  
  6. for(i=0;i<3;i++) /*用两层循环嵌套的方式访问数组的每个元素*/  
  7. {  
  8. for(j=0;j<5;j++)  
  9. ss=s+a[j][i]; /*变量s 的值为各科的总成绩*/  
  10. v[i]=s/5; /*各科的平均成绩*/  
  11. s=0;  
  12. }  
  13. average=(v[0]+v[1]+v[2])/3; /*总平均成绩*/  
  14. printf("Math:%d\nC language:%d\nFoxpro:%d\n",v[0],v[1],v[2]);  
  15. printf("total:%d\n", average);  

程序运行结果如下(□表示空格):

  1. Math:72  
  2. C language:73  
  3. Foxpro:81  
  4. total:75 


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.8.3 字符数组和字符串 下一篇2.8.1 一维数组的定义和使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: