ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ 二维数组

2021-12-29 15:35:26  阅读:112  来源: 互联网

标签:int 数组名 C++ 二维 数组 列数 数据


5.3 二维数组

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

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

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

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

示例:

#include <iostream>
using namespace std;

int main() {

	// 二维数组定义方式
	// 1. 数据类型  数组名[行数][列数];
	// 2. 数据类型  数组名[行数][列数] = { {数据1,数据2 } ,{数据3,数据4 } };
	// 3. 数据类型  数组名[行数][列数] = { 数据1,数据2,数据3,数据4 };
	// 4. 数据类型  数组名[][列数] = { 数据1,数据2,数据3,数据4 };

	// 1. 数据类型  数组名[行数][列数];
	int arr[2][3];
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[0][2] = 3;
	arr[1][0] = 4;
	arr[1][1] = 5;
	arr[1][2] = 6;

	// 外层循环打印行数,内层循环打印列数
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << endl;
		}
	}

	// 2. 数据类型  数组名[行数][列数] = { {数据1,数据2 } ,{数据3,数据4 } };
	int arr2[2][3] =
	{
		{ 1,2,3 },
		{ 4,5,6 }
	};
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr2[i][j] << "";
		}
		cout << endl;
	}

	// 3. 数据类型  数组名[行数][列数] = { 数据1,数据2,数据3,数据4 };
	int arr3[2][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr3[i][j] << "";
		}
		cout << endl;
	}
	
	// 4. 数据类型  数组名[][列数] = { 数据1,数据2,数据3,数据4 };
	int arr4[][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr4[i][j] << "";
		}
		cout << endl;
	}

	system("pause");

	return 0;
}

总结:在定义二维数组时,如果初始化了数据,可以省略行数

5.3.2 二维数组数组名

  • 查看二维数组所占内存空间
  • 获取二维数组首地址

示例:

#include <iostream>
using namespace std;

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 << "二维数组第二行首地址为:" << (int)arr[1] << endl;

	cout << "二维数组第一个元素首地址为:" << (int)&arr[0][0] << endl;
	cout << "二维数组第二个元素首地址为:" << (int)&arr[0][1] << endl;



	system("pause");

	return 0;
}

总结1:二维数组名就是这个数组的首地址

总结2:对二维数组名进行sizeof时,可以获取整个二维数组占用的内存空间大小

5.3.3 二维数组应用案例

考试成绩统计:

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

姓名 语文 数学 英语
张三 100 100 100
李四 90 50 100
王五 60 70 80

参考答案:

#include <iostream>
using namespace std;

int main() {

	// 二维数组案例-考试成绩统计

	// 1、创建二维数组
	int scores[3][3] =
	{
		{ 100,100,100 },
		{ 90,50,100 },
		{ 60,70,80 }
	};

	string names[] = { "张三", "李四", "王五" };

	// 2、统计每个人的综合分数
	for (int i = 0; i < sizeof(scores) / sizeof(scores[0]); i++)
	{
		int sum = 0; // 统计分数总和变量
		for (int j = 0; j < sizeof(scores[0]) / sizeof(scores[0][0]); j++)
		{
			sum += scores[i][j];
			cout << scores[i][j] << " ";
		}
		cout << "第" << names[i] << "个人的总分为:" << sum << endl;

	}

	// 成绩数组
	//int arr[3][3] =
	//{
	//	{ 100,100,100 },
	//	{ 90,50,100 },
	//	{ 60,70,80 }
	//};

	//string name[] = { "张三", "李四", "王五" };

	//for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	//{
	//	int temp = 0;
	//	for (int j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]); j++)
	//	{
	//		temp += arr[i][j];
	//	}
	//	cout << name[i] << "的成绩为:" << temp << endl;
	//}

	system("pause");

	return 0;
}

标签:int,数组名,C++,二维,数组,列数,数据
来源: https://www.cnblogs.com/zhouxuzhi/p/15745170.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有