C语言之多维数组

所谓多维数组就是以多个数组为单位组成的数组,即元素本身是数组的数组。下面我们来学习多维数组的基本知识:


多维数组

上一节学习的数组都是int型或double型等单一类型,实际上数组本身也可以作为组成数组的元素。

以数组作为元素的数组时二维数组,以二维数组作为元素的数组是三维数组……也可以组成更高维度的数组。二维以上的数组统称为多维数组

多维数组是以数组为元素的数组。

 让我们来看下由单一的数据类型组成一维数组,再由一维数组组成二维数组的过程

a——>b:int类型的元素集中起来形成一维数组。

b——>c:一维数组集中起来形成二维数组。

元素类型分别如下:

a:int型

b:int[3]型  元素类型为int型,元素个数为3.

c:int[3][3]型  以元素类型为int型,元素个数为3的数组为元素,元素个数为3的数组。

 二维数组就是一个像由行和列组成的表单,各个元素纵横排列。

在多维数组的声明中,最先集中起来的元素个数(比如二维数组的列)放在末尾。

我们将构成数组的最小元素称为构成元素,访问构成元素的表达式形式为a[i][j],即连用下标运算符[ ],下标也是从0开始的,和一维数组一模一样。

构成二维数组a[3][3]的构成元素有:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、a[2][0]、a[2][1]、a[2][2]一共9个。

和一维数组一样,多维数组的所有元素/所有构成元素在内存的排列是一条直线上的。构成元素排列时,首先是末尾的下表按照0、1、……的顺序递增,然后是开头的下标按照0、1……等顺序递增,如下所示:

a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]、a[2][0]、a[2][1]、a[2][2]

注意

多维数组的构成元素进行排列时,首先由末尾的下标(列)开始递增。 

另在再定义一个二维数组时,它的行可以省略,但是列不行的哦!


下面我们用二维数组来编写一段程序假设有4名学生,3门课程,并且进行两次考试,让我们分别求出各课程的总分并显示。

 

#include<stdio.h>

int main()
{
	int i, j;
	int tensu1[4][3] = {{2, 3, 4}, {4, 3, 4 }, {5, 3, 3}, {3, 4, 4}};
	int tensu2[4][3] = {{2, 3, 4}, {4, 3, 4 }, {5, 3, 3}, {3, 4, 4}};
	int sum[4][3];
	/*求两次考试的分数之和*/
	
	for(i = 0; i < 4; i++)//4名学生
	{
		for(j = 0; j < 3; j++)//3门课程
		{
			sum[i][j] = tensu1[i][j] +  tensu2[i][j];
		}
	}
	puts("第一次考试的分数:");
	
	for(i = 0; i < 4; i++)
	{
		for(j = 0; j < 3; j++)
		{
			printf("%4d", tensu1[i][j]);
		}
		putchar('\n');
	}
	
	puts("第二次考试分数的:");
	
	for(i = 0; i < 4; i++)
	{
		for(j = 0; j < 3; j++)
		{
			printf("%4d", tensu2[i][j]);
		}
			putchar('\n');
	}
	
	puts("显示总分:");
	
	for(i = 0; i < 4; i++)
	{
			for(j = 0; j < 3; j++)
			{
				printf("%4d", sum[i][j]);
			}
			putchar('\n');
	}
	return 0;
}

二维数组到这里基础的知识我们已经讲完了,那么在你脑海中三维数组是啥样的呢?


三维数组

二维数组可以看为一页页纸张,三维数组可看为由一页页纸张组成的书本。

二维数组当然可以看作平直角坐标系(x和y),三维数组可以看做空间直角坐标系(x、y、z)。

   选择一个角,作为原地,作出空间直角坐标系,相信这个类型的图在我们高中化学大题(题型记不清了)也出现过。

在下节课中我们将会学习函数,函数作为C语言是我们必须学习的,同时它也会将我们带入一个全新的领域!

由于期末考试来临再加上函数部分学习可能不会那么轻松,更新速度回有所减慢,请见谅哦。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯.苦作舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值