C++数组
C++数组一、数组的定义和读写1.什么是数组2.定义数组2.1 定义方式2.2 下标3.使用数组1. 操作三种定义方式一、数组的定义和读写1.什么是数组数组:一块连续存储相同数据类型的空间。2.定义数组2.1 定义方式常见的三种定义方式:定义长度的方式:数据类型 数组名[ 数组长度 ];例:int arr1[5];定义长度和值方式:数据类型 数组名[ 数组长度 ] = { 值1,值2 …};例:
C++数组
一、一维数组的定义和读写
1.什么是数组
数组:一块连续存储相同数据类型的空间。
数组元素: 数组中存储的每个数据,都可以叫数组的元素;
数组长度: 就是数组的元素的个数
数组长度:
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;
2.定义数组
2.1 定义方式
常见的三种定义方式:
- 定义长度的方式:数据类型 数组名[ 数组长度 ];
例:int arr1[5];
首先在内存中找一块连续的内存空间(20 字节),能够放得下 5 个整数,并为每个元素赋默认值 0。(int4个字节) - 定义长度和值方式:数据类型 数组名[ 数组长度 ] = { 值1,值2 …};
例: int a[5] = {1,2,3};
对部分元素赋值,后边默用0补齐 - 定义值方式:数据类型 数组名[ ] = { 值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,值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 … };
- 数据类型 数组名[ ][ 列数 ] = { 值1,值2 … };
行数:一维数组个数 列数:每个一维数组的元素个数
例子:int arr[2][3]; 两个一维数组,每个一维数组里有三个元素
3. 使用二维数组
- 数据类型 数组名[ 行数 ][ 列数 ];
//定义一个的二位数组
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,值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,值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;
}


更多推荐


所有评论(0)