速成数组笔记

编程入门 行业动态 更新时间:2024-10-20 00:27:25

速成<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组笔记"/>

速成数组笔记

数组

特点

1、数组中的每个数据元素都是相同的数据类型

2、数组是由连续的内存位置组成的

一维数组

1、一维数组定义方式(3种)

(1)数据类型 数组名[数组长度];

(2)数据类型 数组名[数组长度]={值1,值2…};

(3)数据类型 数组名[ ]={值1,值2…};

注意:定义数组的时候,必须有初始长度

2、数组的定义与输出
#include <iostream>
using namespace std;
int main() {int arr2[5] = { 10,20,30,40,50 };//等于 int arr2[ ] = { 10,20,30,40,50 };for (int i = 0; i < 5; i++) {cout << arr2[i] << " ";  //双引号间有空格符,打印的时候不同数字之间也就会出现空格}return 0;
}

3、数组地址问题

1、sizeof(arr2):表示的大小为数组起始位置到结束位置大小


sizeof(arr[1]):数组中统计某一元素的内存空间大小

4、一维数组名称用途

(1)、可以统计整个数组在内存中的长度

#include <iostream>
using namespace std;int main() {int arr[5] = { 0,1,2,3,4 };cout << "整个数组占用内存空间为:" << sizeof(arr) << endl;cout << "每个元素占用内存空间为:" << sizeof(arr[0]) << endl;cout << "统计数组中元素的个数:" << sizeof(arr) / sizeof(arr[0]) << endl;return 0;
}

(2)、可以获取数组在内存中的首地址

int main() {int arr[5] = { 0,1,2,3,4 };cout << "数组的首地址为:" << (int)arr << endl;cout << "数组中第1个元素地址为:" << (int)&arr[0] << endl;cout << "数组中第2个元素地址为:" << (int)&arr[1] << endl;  //添加(int)的目的是把数组内存地址16进制为强转为10进制,使用&就是取地址

注意:数组名是常量,因此不可以赋值操作

5、一维数组练习案例

1、五只小猪称体重

案例描述:在一个数组中记录了五只小猪的体重,如:int arr[5]={300,280,350,400,200}找出并打最重小猪体重

#include <iostream>
using namespace std;int main() {//1、创建5只小猪体重的数组int arr[5] = { 300,280,350,400,200 };//2、从数组中找到最大值int max = 0; //先认定一个最大值为0for (int i = 0; i < 5; i++) {//如果访问的数组中的元素比我认定的最大值还要大,更新最大值if (arr[i] > max) {max = arr[i];}}//3、打印最大值cout << "最重的小猪体重为:" << max << endl;system("pause");return 0;
}

2、数组元素逆置

案例描述:请先声明一个5元素的数组,并且将元素逆置。(如原数组元素为:1,3,2,5,4逆置后输出结果为:4,5,2,3,1)

#include <iostream>
using namespace std;int main() {//1、创建数组int arr[5] = { 1,3,2,5,4 };cout << "数组逆置前的顺序为:";for (int i = 0; i < 5; i++) {cout << arr[i] << " ";}cout << endl;
//2、实现逆置//2.1记录起始下标位置int start = 0;  //起始位置下标//2.2记录结束下标位置int end = (sizeof(arr) / sizeof(arr[0])) - 1;  //结束位置下标//2.3起始下标与结束下标的元素互换while (start < end) {   //	//2.5循环执行2.1操作,直到起始位置>=结束位置//实现元素互换int temp = arr[start];arr[start] = arr[end];arr[end] = temp; //2.4起始位置++,结束位置--,下标更新start++;end--;}
//3、打印逆置后的数组cout << "数组元素逆置后顺序为:";for (int i = 0; i < 5; i++) {cout << arr[i]<<" ";}return 0;
}

6、冒泡排序

作用:最常用的排序算法,对数组内元素进行排序

1、比较相邻的元素。如果第一个比第二个打,就交换她们两个

2、对每一对相邻元素做同样的工作,执行完毕后,找到一个最大值

3、重复以上的步骤,每次比较次数-1,直到不需要比较

示例:将数组{4,2,8,0,5,7,1,3,9}进行升序排序

#include <iostream>
using namespace std;int main() {int arr[9] = { 4,2,8,0,5,7,1,3,9 };int m = sizeof(arr) / sizeof(arr[0]);  //统计数组个数cout << "排序前:" << endl;for (int i = 0; i < 9; i++) {cout << arr[i] << " ";}cout << endl;//开始冒泡排序//总排序轮数为元素-1for (int i = 0; i < m - 1; i++) {//内层循环对比,次数=元素个数-当前轮数-1for (int j = 0; j <m - i - 1; j++) {//如果第一个数字比第二个数字大,交换两个数字if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}//排序后结果cout << "排序后:" << endl;for (int i = 0; i < 9; i++) {cout << arr[i] << " ";}cout << endl;system("pause");return 0;
}

二维数组

1、二维数组定义方式及输出

(1)数据类型 数组名[行数],[ 列数 ];

#include <iostream>
using namespace std;int main() {//1、数据类型 数组名[行数], [列数];int arr[2][3];arr[0][0] = 1;  //第1行,第1列数值arr[0][1] = 2;//第1行,第2列数值arr[0][2] = 3;arr[1][0] = 4;//第2行,第1列数值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;}system("pause");return 0;
}


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

#include <iostream>
using namespace std;int main() {//数据类型 数组名[行数],[ 列数 ]={{数据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;}system("pause");return 0;
}


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

//数据类型 数组名[行数],[ 列数 ]={数据2,数据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 << arr2[i][j] << " ";}cout << endl;}

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

	//数据类型 数组名[行数],[ 列数 ]={数据2,数据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;}
2、二维数组数组名

(1)查看二维数组所占内存空间

	//二维数组名称用途//1、可以查看占用内存空间大小int arr[2][3] = {{1,2,3},{4,5,6}};cout << "二维数组占用内存空间为:" << sizeof(arr)<<endl;cout << "二维数组第1行占用内存为:" << sizeof(arr[0]) << endl;cout << "二维数组第1行第1列占用内存为:" << 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 << "二维数组第1行首地址为:" << (int)arr[0] << endl;cout << "二维数组第1行第2列地址为:" << (int)&arr[0][1] << endl;
cout << "二维数组第2行第2列地址为:" << (int)&arr[1][1] << endl;

3、应用案例

1、考试成绩统计

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

语文数学英语
张三99100100
李四9065100
王五728090
#include<iostream>
#include <string>
using namespace std;int main() {int arr[3][3] = {{99,100,100},{90,65,100},{72,80,90}};string name[3] = { "张三","李四","王五" };//统计每个人总和分数for (int i = 0; i < 3; i++) {int sum = 0;//统计分数总和变量for (int j = 0; j < 3; j++) {sum += arr[i][j];}cout << name[i]<< "的总得分为:" << sum << endl;}system("pause");return 0;
}

更多推荐

速成数组笔记

本文发布于:2024-02-25 03:35:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1697644.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   笔记

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!