一、一维数组的定义和读写

1.什么是数组

数组:一块连续存储相同数据类型的空间。
数组元素: 数组中存储的每个数据,都可以叫数组的元素;
数组长度: 就是数组的元素的个数

数组长度:
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;

2.定义数组

2.1 定义方式

常见的三种定义方式:

  1. 定义长度的方式:数据类型 数组名[ 数组长度 ];
    例:int arr1[5];
    首先在内存中找一块连续的内存空间(20 字节),能够放得下 5 个整数,并为每个元素赋默认值 0。(int4个字节)
  2. 定义长度和值方式:数据类型 数组名[ 数组长度 ] = { 值1,值2 …};
    例: int a[5] = {1,2,3};
    对部分元素赋值,后边默用0补齐
  3. 定义值方式:数据类型 数组名[ ] = { 值1,值2 …};
    例:int arr3[] = { 1,2,3,4,5,6,7,8,9 };

注意:数组名的命名规范和变量名命名规范一致。数组名是常量,不可以赋值

2.2 常见错误

int a = arr;          //不能将一个数组赋给另一个数组 ,数组名是常量
int arr[4] = { 1,2,3,4,5 };        //初始值设定项太多
arr[4] = { 5 , 6 , 7 ,9 };         //只能在定义时初始化值
int int[3];						   //命名规则

2.3 下标

数组int arr1[5];
1)、数组的下标从 0 开始,数组的最小下标就是 0,最大下标就是4
2)、数组的下标从 0 开始,依次增长:0、1、2、3、4;

3.使用数组

3.1 操作三种定义方式

1.定义长度的方式:数据类型 数组名[ 数组长度 ];

	//定义数组
	int a[3];
	//向数写入内容,arr[下标]=值;
	a[0] = 1;
	a[1] = 2;
	a[2] = 3;
	//打印输出单个,arr[下标]
	cout << a[0] << endl;
	//全部打印输出(利用for循环,通过下标将数组元素获取)
	for (int i = 0; i < 3 ; i++)//i<3,因为是从下标0开始的
	{
		cout << a[i] << endl;
	}
  1. 定义长度和值方式:数据类型 数组名[ 数组长度 ] = { 值1,值2 …};
	//定义数组
	int arr[3] = { 6,7,8 };
	//打印单个值,arr[下标]
	cout << arr[0] << endl;
	cout << arr[2] << endl;
	//全部打印输出
	for (int i = 0; i < 3; i++)
	{
		cout << arr[i] << endl;
	}

对部分元素赋值,剩余数据用数字0补全

	//定义数组
	//如果{}内不足3个数据,剩余数据用数字0补全
	int arr[3] = { 6};
	//全部打印输出
	for (int i = 0; i < 3; i++)
	{
		cout << arr[i] << endl;
	}

在这里插入图片描述3. 定义值方式:数据类型 数组名[ ] = { 值1,值2 …};
鼠标放在数组名上,会显示长度
在这里插入图片描述

	//定义数组
	int arr[] = { 1,2,3,4,5,6 };
	//打印单个
	cout << arr[1] << endl;
	cout << arr[5] << endl;
	//全部打印
	for (int i = 0; i < 6; i++)
	{
		cout << arr[i] << endl;
	}

3.2 求数组最大值

有一个数组 ,int arr[5] = { 15,23,65,84,23 } 打印出最大的数。

	int arr[5] = { 15,23,65,84,23 };
	int maxNum = 0;//声明一个最大值maxNum并给他附上初始值0
	for (int i = 0; i < 5 ; i++)
	{
		if (maxNum < arr[i])//如果最大值小于arr[i],就将arr[i]赋给maxNum
		{
			maxNum = arr[i];
		}
	}
	cout << "最大值:" << maxNum << endl;

3.3 冒泡排序

对数组int arr[] = { 1,4,6,7,8,5,3,9,2} 进行升序排序
在这里插入图片描述每趟循环中让相邻的两个进行比较,如果前面的数大于后面的数就进行位置交换,当循环结束后,最大值就会被排到最后了。所以冒泡排序就像一个水泡从水底向上冒一样。

	int arr[] = { 1,4,6,7,8,5,3,9,2};
	cout << "排序前的:"<<endl;
	for (int i = 0; i < 9 ; i++)
	{
		cout << arr[i]<<",";//先将排序前的值打印输出
	}
	cout << endl;
	cout << "排序后的:" << endl;
	int temp = 0;//temp为中间容器,帮助arr[j]和arr[j + 1];两个值互换位置
	//外层循环小于 趟数 = 元素个数-1
	for (int i = 0; i < 9-1; i++)
	{
		//内层循环 每趟次数 = 元素个数-排序趟数-1
		for (int j = 0; j < 9-i-1; j++)
		{
			if (arr[j]>arr[j+1]) //如果arr[j]大于arr[j+1]
			{
				temp = arr[j];//就将arr[j]赋给temp
				arr[j] = arr[j + 1];//把arr[j+1]赋给arr[j]
				arr[j + 1] = temp;//最后把已经赋值的temp赋给arr[j+1],便做到了位置互换
			}
		}
	}
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << ",";//排序个数
	}

在这里插入图片描述

二、二维数组

1.本质

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”
简单理解就是存放一维数组的容器

2. 定义方式

  1. 数据类型 数组名[ 行数 ][ 列数 ];
  2. 数据类型 数组名[ 行数 ][ 列数 ] = { { 行1(第一个一维数组)} ,{ 行2(第二个一维数组)} };
  3. 数据类型 数组名[ 行数 ][ 列数 ] = { 值1,值2 … };
  4. 数据类型 数组名[ ][ 列数 ] = { 值1,值2 … };
    行数:一维数组个数 列数:每个一维数组的元素个数

例子:int arr[2][3]; 两个一维数组,每个一维数组里有三个元素
在这里插入图片描述

3. 使用二维数组

  1. 数据类型 数组名[ 行数 ][ 列数 ];
	//定义一个的二位数组
	int arr[2][3];//两个一维数组,每个一维数组有三个元素(相当于两行三列)
	//往二维数组里面写值
	arr[0][0] = 1;//[0][0] 代表第1个一维数组的第一个元素(第一行一列)
	arr[0][1] = 2;
	arr[0][2] = 3;

	arr[1][0] = 4;//[1][0] 代表第2个一维数组的第一个元素(第二行一列)
	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] << " ";
		}
		cout << endl;
	}

在这里插入图片描述
2. 数据类型 数组名[ 行数 ][ 列数 ] = { { 行1(第一个一维数组)} ,{ 行2(第二个一维数组)} };

	//定义一个的二位数组(创建时赋值)
	int arr[2][3] = 
	{ 
		{1,2,3},
		{4,5,6} 
	};

	//全部循环输出
	for (int i = 0; i < 2 ; i++) //外循环数组
	{
		for (int j = 0; j < 3; j++)//内循环每个数组中的值
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}

在这里插入图片描述

  1. 数据类型 数组名[ 行数 ][ 列数 ] = { 值1,值2 … };
	//定义一个的二位数组(创建时赋值)
	int arr[2][3] = { 1,2,3,4,5,6 };//将值写在一个大括号里,定义的是arr[2][3],所以会区分行数和列数

	//全部循环输出
	for (int i = 0; i < 2 ; i++) //外循环数组
	{
		for (int j = 0; j < 3; j++)//内循环每个数组中的值
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}

在这里插入图片描述
全部初始化时,行可以省略,列不能省略

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12}
  1. 数据类型 数组名[ ][ 列数 ] = { 值1,值2 … };
	//定义一个的二位数组(创建时赋值)
	int arr[][3] = { 1,2,3,4,5,6 };//每列为3,会分好行数和列数

	//全部循环输出
	for (int i = 0; i < 2 ; i++) //外循环数组
	{
		for (int j = 0; j < 3; j++)//内循环每个数组中的值
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}

在这里插入图片描述

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐