0
点赞
收藏
分享

微信扫一扫

【例6-9】二维数组

zhoulujun 2022-01-24 阅读 51

(一)二维数组的定义

定义一维数组的一般格式:
类型标识符    数组名[整型常量表达式1][整型常量表达式2];

(1)"整型常量表达式1"表示第1维下标的长度,"整型常量表达式2"表示第2维下标的长度
(2)与一维数组一样,一个数组元素占用一个储存单元,每个储存单元占 4B ,即一个元素占4字节
(3)二维数组的储存空间也是连续的,将二维数组元素按行依次储存。(可把二维数组看成若干个一维数组)
(4)一维下标a[0]、a[1]、a[2]、a[3]分别表示各行的首地址
(5)a[3][4]在内存的存储方式

  a[0]行                                           a[1]行                                          a[2]行
 | 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] |…

//二维数组定义示例

#include<stdio.h>
#define N 8		//先宏定义一个符号常量N,代表整数8
int main()
{
	int a[3][4];	//(1)定义一个整型数组,数组名为a,有12个数组元素
	float b[10][9];	//(2)定义一个浮点型数组,数组名为b,有90个数组元素
	int c[N][N];	//(3)定义一个整型数组,数组名为c,有64个数组元素
  //错误的定义方式:
  //int n=10;	int d[n][10];	//此处n为变量名,不是常量表达式
  //int n=10;	int d[4][n];	//同上
  //double e[6,5];				//一、二维下标需分开写

	return 0;
}

//二维数组初始化示例

#include<stdio.h>
int main()
{
	int a[3][4] = { {0,1,4,7},{0,2,5,8},{0,3,6,9} };	//按行给数组赋初值
//等价于:a[3][4] = {0,1,4,7,0,2,5,8,0,3,6,9};
 
//a[3][4]的初始化结果
//
//  a[0]行								  a[1]行								  a[2]行
// | 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] |…
//	| 0 |	  | 1 |		| 4 |	 | 7 |		| 0 |	  | 2 |		| 5 |	  | 8 |		| 0 |	  | 3 |


	int b[3][4] = { {2},{4},{6} };		//对各行部分初始化
 
//b[3][4]的初始化结果
//
//  b[0]行								  b[1]行								  b[2]行
// | b[0][0] | b[0][1] | b[0][2] | b[0][3] | b[1][0] | b[1][1] | b[1][2] | b[1][3] | b[2][0] | b[2][1] |…
//	| 2 |	  | 0 |		| 0 |	 | 0 |		| 4 |	  | 0 |		| 0 |	  | 0 |		| 6 |	  | 0 |


	int c[3][4] = { 27,20,73 };		//按储存顺序给部分元素初始化
 
//c[3][4]的初始化结果
//
//  c[0]行								  c[1]行								  c[2]行
// | c[0][0] | c[0][1] | c[0][2] | c[0][3] | c[1][0] | c[1][1] | c[1][2] | c[1][3] | c[2][0] | c[2][1] |…
//   | 27 |	  | 20 |	| 73 |	  | 0 |		| 0 |	  | 0 |		| 0 |	  | 0 |		| 0 |	  | 0 |
 

	int d[][4] = { 1,2,3,4,5,6,7,8,9,10 };		//不指定一维下标时,根据初始化情况决定
  
  //一维下标乘二维下标的值 >= "数组长度"
  //该二维数组d的长度为10,二维下标为4,得出一维下标为3
  //等价于d[3][4] = {1,2,3,4,5,6,7,8,9,10}		//按储存顺序给部分元素初始化
  
	return 0;
}

//二维数组元素引用示例 

#include<stdio.h>
int main()
{
	int a[3][4], i, j;
	for (i = 0; i < 3; i++)		//二维数组的输入
	{
		for (j = 0; j < 4; j++)
		{
			printf("请输入a[%d][%d]的值:", i, j);
			scanf_s("%d", &a[i][j]);
		}
	}
	printf("a[3][4] = {");
	for (i = 0; i < 3; i++)		//二维数组的输出
	{
		for (j = 0; j < 4; j++)
		{
			printf("%3d,", a[i][j]);
		}
	}
	printf(" }");

  
	return 0;
}

举报

相关推荐

0 条评论