0基础学习C++--数组--二维数组

发布时间:2024年01月24日

目录

5 数组

5.3 二维数组

5.3.1 二维数组定义方式

5.3.2 二维数组数组名

5.3.3 二维数组应用案例


5 数组

5.3 二维数组

二维数组就是在一维数组上,多加一个维度。

5.3.1 二维数组定义方式

二维数组定义的四种方式:

数据类型 数组名[行数][列数];
数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};
数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};
数据类型 数组名[][列数] = {数据1,数据2,数据3,数据4};

建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性

示例:

int main()
{
	/*
	数据类型 数组名[行数][列数];
	数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};
	数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};
	数据类型 数组名[][列数] = {数据1,数据2,数据3,数据4};
	*/
	//二维数组定义方式
	int arr[2][3];
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[0][2] = 3;
	arr[1][0] = 1;
	arr[1][1] = 2;
	arr[1][2] = 3;
	//外侧循环打印行数
	for (int i = 0; i < 2; i++)
	{
		//内侧循环打印列数
		for (int j = 0; j  < 3; j ++)
		{
			cout << arr[i][j] << "\t";
		}
		cout << endl;
	}
	cout << "******************************" << endl;
	//2、定义方式2
	int arr2[2][3] =
	{
		{1,2,3},
		{1,2,3}
	};
	for (int i = 0; i < 2; i++)
	{
		//内侧循环打印列数
		for (int j = 0; j  < 3; j ++)
		{
			cout << arr2[i][j] << "\t";
		}
		cout << endl;
	}
	cout << "******************************" << endl;
	//3、定义方式3
	int arr3[2][3] = {1,2,3,1,2,3};
	for (int i = 0; i < 2; i++)
	{
		//内侧循环打印列数
		for (int j = 0; j  < 3; j ++)
		{
			cout << arr3[i][j] << "\t";
		}
		cout << endl;
	}
	cout << "******************************" << endl;
	//定义方式4
	int arr4[][3] = {1,2,3,1,2,3};
	for (int i = 0; i < 2; i++)
	{
		//内侧循环打印列数
		for (int j = 0; j  < 3; j ++)
		{
			cout << arr4[i][j] << "\t";
		}
		cout << endl;
	}
	system("pause");
	return 0;

}

总结:二维数组定义可以省略行数,但不能省略列数。

5.3.2 二维数组数组名

  • 查看二维数组所占内存空间

  • 获取二维数组首地址

示例:

int main()
{
	//二维数组名称用途

	//1、可以查看占用内存空间大小
	int arr[2][3] =
	{
		{1,2,3},
		{4,5,6}
	};
	cout << "二维数组占用内存大小:" << sizeof(arr) << endl;
	cout << "二维数组第一行占用内存为:" << sizeof(arr[0]) << endl;
	cout << "二维数组第一个元素占用内存为:" << sizeof(arr[0][0]) << endl;

	cout << "二维数组行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
	cout << "二维数组列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;


	//2、可以查看二维数组的首地址
	cout << "二维地址的首地址为:" << (int)arr << endl;
	cout << "二维数组的第一行首地址为" << (int)arr[0] << endl;
	cout << "二维数组的第一个元素的首地址为:" << &arr[0][0] << endl;
	system("pause");
	return 0;
}

5.3.3 二维数组应用案例

考试成绩统计:

案例描述:有三名同学(张三、李四、王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩

语文数学英语
张三100100100
李四9050100
王五607080

示例:

int main()
{
	//分数
	int score[3][3] = 
	{
		{100,100,100},
		{90,50,100},
		{60,70,80}
	};
	//记录总成绩
	int addscores[3] = {0,0,0};
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			addscores[i] += score[i][j];
		}
	}
	//外循环是一个人的各科成绩
	for (int i = 0; i < 3; i++)
	{
		switch (i)
		{
		case 0:
			cout << "张三成绩为:\t";
			break;
		case 1:
			cout << "李四成绩为:\t";
			break;
		case 2:
			cout << "王五成绩为:\t";
			break;
		}
		//内循环是这个人的每一科成绩
		for (int j = 0; j < 3; j++)
		{
			switch (j)
			{
			case 0:
				cout << "语文成绩为:\t" << score[i][j] << "\t";
				break;
			case 1:
				cout << "数学成绩为:\t" << score[i][j] << "\t";
				break;
			case 2:
				cout << "英语成绩为:\t" << score[i][j] << "\t";
				break;

			}
		}
		switch (i)
		{
			case 0:
				cout << "总成绩为:\t" << addscores[i];
				break;
			case 1:
				cout << "总成绩为:\t" << addscores[i];
				break;
			case 2:
				cout << "总成绩为:\t" << addscores[i];
				break;
		}
		cout << endl;
	}
	system("pause");
	return 0;
}

文章来源:https://blog.csdn.net/TheSheepn/article/details/135766005
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。