c++基础入门day5 - 数组
2026/7/25 15:38:12 网站建设 项目流程

c++基础入门day5

工具:vs2026
课程:【黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难】

5 数组

  1. 数组,是一个存放了相同类型数据元素的集合
  2. 数组中的每个数据元素都是相同的数据类型
  3. 数组是由连续的内存位置组成的

5.1 一维数组

5.1.1 一维数组的定义方式
  1. 数据类型 数组名[ 数组长度 ];
    **数组元素的下标是从0开始索引的。
  2. 数据类型 数组名[ 数组长度 ] = {值1, 值2, …};
    **如果在初始化数据时没有全部填写,会用0来填补剩余数据。
  3. 数据类型 数组名[ ] = {值1, 值2, …};
    **总结而言,数组的定义必须明确数组的长度(第三种方法也属于明确了数组的长度)。
5.1.2 一维数组数组名的作用
  1. 可以用于统计整个数组在内存中的长度
    (1)**sizeof(arr)
    (2)获取数组中某个元素在内存中占的空间:sizeof(arr[下标])
    (3)统计数组中元素个数:sizeof(arr)/sizeof(arr[0])
  2. 可以获取数组在内存中的首地址
    (1)cout << arr << endl;
    (2)访问某个元素的地址时需要用到取址符&
  3. 注意:数组名是一个常量,不可以进行赋值操作。
  4. 程序示例:
#include<iostream>usingnamespacestd;intmain(){// 数组// 统计整个数组在内存中的长度intarr[]={0,1,2,3,4,5,6,7,8,9};cout<<"整个数组占用的内存空间为:"<<sizeof(arr)<<endl;cout<<"每个元素占用的内存空间为:"<<sizeof(arr[0])<<endl;cout<<"数组中元素个数为:"<<sizeof(arr)/sizeof(arr[0])<<endl;// 获取数组在内存中的首地址cout<<"数组的首地址为:"<<(int)arr<<endl;//(int)将十六进制地址转为十进制地址cout<<"数组中第一个元素地址为:"<<(int)&arr[0]<<endl;//& 取址符号// 数组的首地址即数组第一个元素的地址cout<<"数组中第二个元素地址为:"<<(int)&arr[1]<<endl;//相差单个元素占用的内存空间system("pause");return0;}
5.1.3 练习案例
  1. 练习案例1:五只小猪称体重

在一个数组中记录了五只小猪的体重,如int arr[5]={300,350,200,400,250};
找出并打印最重的小猪体重

#include<iostream>usingnamespacestd;intmain(){// 练习案例1:五只小猪称体重// 在一个数组中记录五只小猪的体重intarr[5]={300,350,200,400,250};intmax=0;// 找出并打印最重的小猪体重for(inti=0;i<5;i++){if(arr[i]>max){max=arr[i];}}cout<<"最重的小猪体重为:"<<max<<endl;system("pause");return0;}
  1. 练习案例2:数组元素逆置

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

#include<iostream>usingnamespacestd;intmain(){// 练习案例2:数组元素逆置// 声明一个5个元素的数组intarr[]={1,3,2,5,4};cout<<"原数组元素为:"<<endl;;for(inti=0;i<sizeof(arr)/sizeof(arr[0]);i++){cout<<arr[i]<<" ";}cout<<endl;intstart=0;// 起始元素下标intend=sizeof(arr)/sizeof(arr[0])-1;// 末尾元素下标inttemp=0;// 临时存放元素// 将元素逆置while(start<end){temp=arr[start];arr[start]=arr[end];arr[end]=temp;start++;end--;}cout<<"逆置后数组元素为:"<<endl;;for(intk=0;k<sizeof(arr)/sizeof(arr[0]);k++){cout<<arr[k]<<" ";}cout<<endl;system("pause");return0;}
5.1.4 冒泡排序
  1. 冒泡排序最常用的排序算法,用于对数组内的元素进行排序
  2. 步骤:
    (1) 比较相邻的元素,如果第一个元素比第二个大,交换;
    (2) 对每一对相邻元素做相同的工作,执行完毕后,找到第一个最大值;
    (3) 重复上述步骤,每次比较次数-1,直到不需要比较
  3. 排序总轮数 = 元素个数 - 1;
  4. 每轮对比次数 = 元素个数 - 排序轮数 - 1;
  5. n个元素需要进行n(n-1)/2次
  6. 程序示例:
#include<iostream>usingnamespacestd;intmain(){// 冒泡排序intarr[9]={4,2,8,0,5,7,1,3,9};cout<<"排序前:"<<endl;for(inti=0;i<9;i++){cout<<arr[i]<<" ";}cout<<endl;// 排序总轮数 = 元素个数 - 1;for(intj=0;j<9-1;j++){// 内层循环对比// 每轮对比次数 = 元素个数 - 排序轮数 - 1;for(intk=0;k<9-j-1;k++){if(arr[k]>arr[k+1]){inttemp=arr[k];arr[k]=arr[k+1];arr[k+1]=temp;}}}cout<<"排序后:"<<endl;for(inti=0;i<9;i++){cout<<arr[i]<<" ";}cout<<endl;system("pause");return0;}

5.2 二维数组

5.2.1 二维数组定义方式
  1. 数据类型 数组名[ 行数 ][ 列数 ];
  2. 数据类型 数组名[ 行数 ][ 列数 ] = { {数据1, 数据2 …} , {数据3, 数据4 …} …};
  3. 数据类型 数组名[ 行数 ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4…};
  4. 数据类型 数组名[ ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4…};
  5. 程序示例:
#include<iostream>usingnamespacestd;intmain(){// 二维数组intarr[2][3]={{1,2,3},{4,5,6}};for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<arr[i][j]<<" ";}cout<<endl;}system("pause");return0;}
5.2.2 二维数组数组名用途
  1. 查看二维数组所占内存空间
    (1)**sizeof(arr)
    (2)计算列数:sizeof(arr)/sizeof(arr[0])
    (3)计算元素个数:sizeof(arr)/sizeof(arr[0][0])
  2. 获取二维数组首地址
    (1)cout << arr << endl;
    (2)访问某个元素的地址时需要用到取址符&
  3. 程序示例:
#include<iostream>usingnamespacestd;intmain(){// 二维数组数组名doublearr[2][3]={{1,2,3},{4,5,6}};for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<arr[i][j]<<" ";}cout<<endl;}// 1. 查看二维数组所占内存空间cout<<"二维数组占用内存空间大小为:"<<sizeof(arr)<<endl;cout<<"二维数组第一行占用内存空间大小为:"<<sizeof(arr[0])<<endl;//计算列数sizeof(arr)/sizeof(arr[0])cout<<"二维数组第一个元素占用内存空间大小为:"<<sizeof(arr[0][0])<<endl;//计算元素个数sizeof(arr)/sizeof(arr[0][0])// 2. 获取二维数组首地址cout<<"二维数组首地址为:"<<(int)arr<<endl;cout<<"二维数组第一行地址为:"<<(int)arr[0]<<endl;cout<<"二维数组第一行第一个元素地址为:"<<(int)&arr[0][0]<<endl;//访问某个元素的地址时需要用到取址符&cout<<"二维数组第二行地址为:"<<(int)arr[1]<<endl;system("pause");return0;}
  1. 练习案例:考试成绩统计

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

姓名语文数学英语
张三100100100
李四9050100
王五607080
#include<iostream>#include<string>usingnamespacestd;intmain(){// 二维数组练习案例:考试成绩统计// 1. 创建二维数组intscores[3][3]={{100,100,100},{90,50,100},{60,70,80}};string names[3]={"张三","李四","王五"};// 2. 统计每个人的总和分数for(inti=0;i<3;i++){intsum=0;for(intj=0;j<3;j++){sum+=scores[i][j];}cout<<names[i]<<"的总成绩为:"<<sum<<endl;}system("pause");return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询