05_C++数组

发布时间:2026/7/7 1:07:52

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门课程成绩计算每个学生的总成绩和平均成绩并输出结果。

相关新闻