全站搜索未启用
跳到主要内容

文本三:二维数组的定义和使用

1.二维数组定义语句格式

<元素类型关键字> <二维数组名> [<常量表达式1>] [<常量表达式2>]

[={{<子列表1>},{子列表2},...}];

例如: int a[2][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*4=8。

二维数组a的存储空间大小:元素类型长度×行数×列数=4*2*4=32

2.二维数组存储空间的分配

进行二维数组存储空间分配,是先按照行下标从小到大次序,再按照列下标从小到到次序。

如double c[3][4];

元素数:3*4=12,存储字节数:8*12=96,字节编号范围:0-95。

二维数组中任一元素的开始字节地址的计算公式:

address(d[i][j])=sizeof(<元素类型>)*(i*<列总数>+j) //d是数组名

如address(c[1][3])= sizeof(double)*(1*4+3)=8*7=56

3.二维数组定义语句举例

(1) int a[3][3];

(2) double b[M][N];

(3) int c[2][3]={{1,3,5},{2,4,6}};

(4) int d[M-1][M+1]={{0}};

(5) int e[4][5]={{0},{1,2}};

(6) char g[10],h[10][5];

4.二维数组元素的使用

元素的表示:<数组名>[<行下标表达式>][<列下标表达式>]

例如:

int a[4][5];

a[1][2]=6;

a[2][2]=3*a[1][2]+1; // a[2][2]=19

printf("%d\n",a[i][j]);

printf("%d\n",a[i++][j++]);

5.二维数组的遍历

二维数组的遍历就是依次访问数组中的每个元素。

对二维数组的遍历,需要采用双重循环,外循环按行下标从小到大,内循环按列下标从小到大,在内循环体中依次访问每个元素。

int i,j,s=0,a[M][N];

for(i=0; i<M; i++)

  for(j=0; j<N; j++) s+=a[i][j];

printf("s=%d\n", s);

#define M 3

#define N 3

a[M][N]= {{2,3,4,},{5,6,7},{4,6,8}};

//s=2+3+4+5+6+7+4+6+8=45

使用二维数组的程序举例

程序1:


#include <stdio.h>
void main()
{   int b[2][3]={{7,15,5},{4,6,8}};
  int i,j,min=b[0][0];
  for(i=0; i<2; i++)
    for(j=0; j<3; j++)
      if(b[i][j]<min) min=b[i][j];
  printf("%d\n",min);
}
程序功能:从数组b[2][3]中求出所有元素的最小值并输出。

程序2:


#include <stdio.h>
void main()
{   int d[3][3]={{1,5},{3,2},{6,7}};
  int i,j;
  for(i=0; i<3; i++) {
    for(j=0;j<2;j++) d[i][2]+=d[i][j];
 }
  for(i=0;i<3;i++) printf("%d ",d[i][2]);
} //6 5 13
程序功能:利用d中每行最后一个元素累加前面同行所有元素值,并输出。

最后修改: 2019年09月26日 Thursday 18:51