05_C++数组

发布时间:2026/10/11 23:06:23
05_C++数组 05_C数组5.1 概述数组Array是C中一种用于存储多个相同类型数据的容器。它们在内存中是连续存储的这使得访问数组元素非常高效。数组可以是一维、二维或多维的具体取决于应用需求。5.2 一维数组5.2.1 定义和初始化一维数组有三种常见的定义和初始化方式见示例代码#includeiostreamusingnamespacestd;intmain(){// 方法一定义时指定大小未初始化intarr1[5];// 数组名的命名规范与变量名一致// 利用下标逐个赋值arr1[0]1;// 注意数组下标从0开始arr1[1]2;arr1[2]3;arr1[3]4;arr1[4]5;// 方法二定义时指定大小并初始化// 如果{}中元素个数少于数组大小剩余元素会被自动初始化为0intarr2[5]{1,2,3,4,5};// 方法三定义时不指定大小由初始化列表决定大小intarr3[]{10,20,30};// 输出数组元素for(inti0;i5;i){coutarr2[i] arr2[i]endl;}for(inti0;i3;i){coutarr3[i] arr3[i]endl;}system(pause);return0;}5.2.2 一维数组的数组名数组名代表数组的首地址可以通过数组名访问数组元素。数组名本质上是一个常量指针不能被修改。可以统计整个数组在内存中所占的字节数使用sizeof运算符。示例代码#includeiostreamusingnamespacestd;intmain(){intarr[5]{1,2,3,4,5};// 输出数组名首地址cout数组名首地址: arrendl;cout第一个元素地址: arr[0]endl;cout第二个元素地址: arr[1]endl;// 计算数组所占字节数cout数组所占字节数: sizeof(arr) 字节endl;cout单个元素所占字节数: sizeof(arr[0]) 字节endl;cout数组元素个数: sizeof(arr)/sizeof(arr[0])endl;// 修改数组名错误示例编译会报错// arr arr 1; // 错误数组名是常量指针不能修改system(pause);return0;}一维数组练习1在一个数组中存储5个整数找出其中的最大值和最小值并输出它们的值和位置。一维数组练习2定义一个包含5个元素的数组并将数组转置即将数组的第一个元素与最后一个元素交换第二个元素与倒数第二个元素交换以此类推。输出转置后的数组。如果数组为{1, 2, 3, 4, 5}转置后应为{5, 4, 3, 2, 1}。5.2.3 冒泡排序冒泡排序是一种简单的排序算法通过重复遍历数组比较相邻元素并交换它们的位置直到整个数组有序。比较相邻的元素。如果第一个比第二个大就交换他们两个。对每一对相邻元素做同样的工作执行完毕后找到第一个最大值。重复以上的步骤每次比较次数-1直到不需要比较示例代码#includeiostreamusingnamespacestd;intmain(){intarr[]{64,34,25,12,22,11,90};intnsizeof(arr)/sizeof(arr[0]);// 冒泡排序for(inti0;in-1;i){for(intj0;jn-i-1;j){if(arr[j]arr[j1]){// 交换inttemparr[j];arr[j]arr[j1];arr[j1]temp;}}}// 输出排序后的数组for(inti0;in;i){coutarr[i] ;}coutendl;system(pause);return0;}5.3 二维数组二维数组就是在一维数组的基础上增加了一个维度类似于一个表格有行和列的概念。5.3.1 定义和初始化二维数组的定义和初始化方式如下#includeiostreamusingnamespacestd;intmain(){// 方法一定义时指定行列大小未初始化intarr1[3][4];// 3行4列// 利用下标逐个赋值arr1[0][0]1;arr1[0][1]2;arr1[0][2]3;arr1[0][3]4;// ...// 方法二数据类型 数组名[行数][列数] { {数据1数据2 } {数据3数据4 } };intarr2[2][3]{{1,2,3},{4,5,6}};// 方法三数据类型 数组名[行数][列数] { 数据1数据2 ,数据3数据4 };intarr3[2][3]{1,2,3,4,5,6};// 方法四数组名[][列数] { 数据1数据2 ,数据3数据4 };intarr4[][3]{1,2,3,4,5,6};// 输出二维数组元素for(inti0;i2;i){for(intj0;j3;j){coutarr2[i][j] ;}coutendl;}system(pause);return0;}5.3.2 二维数组的数组名二维数组名代表二维数组的首地址可以通过数组名访问二维数组元素。二维数组名本质上是一个指向一维数组的常量指针不能被修改。可以统计整个二维数组在内存中所占的字节数使用sizeof运算符。示例代码#includeiostreamusingnamespacestd;intmain(){intarr[2][3]{{1,2,3},{4,5,6}};// 输出二维数组名首地址cout二维数组名首地址: arrendl;cout第一行地址: arr[0]endl;cout第二行地址: arr[1]endl;cout第一个元素地址: arr[0][0]endl;cout第二个元素地址: arr[0][1]endl;// 计算二维数组所占字节数cout二维数组所占字节数: sizeof(arr) 字节endl;cout单个元素所占字节数: sizeof(arr[0][0]) 字节endl;cout二维数组行数: sizeof(arr)/sizeof(arr[0])endl;cout二维数组列数: sizeof(arr[0])/sizeof(arr[0][0])endl;cout一行元素所占字节数: sizeof(arr[0]) 字节endl;// 修改二维数组名错误示例编译会报错// arr arr 1; // 错误二维数组名是常量指针不能修改system(pause);return0;}5.3.3 二维数组应用案例矩阵相加矩阵相加是指将两个具有相同维度的矩阵对应位置的元素相加得到一个新的矩阵。示例代码#includeiostreamusingnamespacestd;intmain(){constintROWS2;constintCOLS3;intmatrixA[ROWS][COLS]{{1,2,3},{4,5,6}};intmatrixB[ROWS][COLS]{{7,8,9},{10,11,12}};intresult[ROWS][COLS];// 矩阵相加for(inti0;iROWS;i){for(intj0;jCOLS;j){result[i][j]matrixA[i][j]matrixB[i][j];}}// 输出结果矩阵cout结果矩阵endl;for(inti0;iROWS;i){for(intj0;jCOLS;j){coutresult[i][j] ;}coutendl;}system(pause);return0;}二维数组练习考试成绩统计定义一个二维数组来存储5个学生的3门课程成绩计算每个学生的总成绩和平均成绩并输出结果。for(intj0;jCOLS;j){coutresult[i][j] ;}coutendl;}system(pause);return0;}二维数组练习考试成绩统计定义一个二维数组来存储5个学生的3门课程成绩计算每个学生的总成绩和平均成绩并输出结果。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询