【013】C++数组之一维数值数组和二维数值数组的概念和操作方法

引言


💡 作者简介:专注分享高性能服务器后台开发技术知识,涵盖多个领域,包括C/C++、Linux、网络协议、设计模式、中间件、云原生、数据库、分布式架构等。目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。公众号《Lion 莱恩呀》。
👉
🎖️ CSDN实力新星、专家博主,阿里云博客专家、华为云云享专家
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


🔔 上一篇:【012】细数C++循环控制:for、while、do-while,看看你掌握了多少?
🔔 下一篇:【014】C++数组之一维字符数组和二维字符数组

一、一维数值数组

1.1、概念

用一段连续的空间存放相同类型的变量,这样的容器(结构)叫做数组。

在C++中,一维数值数组是一种由相同类型的元素组成的线性数据结构。每个元素都可以通过下标访问,并且所有元素按照它们在数组中出现的顺序排列。

在C++中声明一维数值数组的语法如下:

type arrayName[arraySize];

其中,type表示数组元素类型,arrayName为数组名称,arraySize表示数组大小。

例如,可以声明一个包含5个整型元素的一维数值数组:

int arr[5];

这将创建一个名为arr的整型数组,其大小为5。我们可以通过下标访问每个元素,例如:

arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;

这样就把1到5分别赋值给了这个整型数组的前五个元素。
在这里插入图片描述

需要注意的是,在C++中数组下标从0开始而不是从1开始。也就是说,第一个元素对应下标0,第二个对应下标1,以此类推。

1.2、一维数值数组的定义

步骤:

  1. 数组名和 [] 表示数组。
  2. 将数组的个数放入[]中。
  3. 用元素类型定义一个变量。

数组的大小定义时必须指定,并且不可更改。

以下是定义一维数值数组的示例代码:

int arr[5]; // 定义一个包含5个整型元素的数组
float floatArr[10]; // 定义一个包含10个单精度浮点型元素的数组
double doubleArr[] = {1.2, 3.4, 5.6, 7.8}; // 不指定数组大小,直接用花括号赋值
char charArr[100] = "Hello World"; // 定义一个包含100个字符元素的数组,并初始化为字符串"Hello World"

以上示例中,第一个和第二个示例分别定义了一个整型和单精度浮点型的一维数值数组。第三个示例使用了花括号对数组进行初始化,编译器会自动计算出该数组大小为4。最后一个示例定义了一个包含100个字符元素的一维字符数组,并将其初始化为字符串"Hello World"。

需要注意的是,在定义一维数值数组时,如果未对其进行初始化,则其中每个元素都将被默认初始化为其类型的默认值。例如,对于整型而言,默认值为0。

在这里插入图片描述

1.3、一维数值数组的初始化

(1)全部元素初始化。

int arr[5]={10,20,30,40,50};

如果数组的全部元素都初始化,可以省略[]的数值。如果省略[]中的数字,数组元素个数就由初始化元素个数确定,例如:

int arr[]={10,20,30};// 三个元素

(2)部分元素初始化。未初始化的部分自动补0。

int arr[5]={10,20,30};//10,20,30,0,0

(3)建议将数组的所有元素初始化为0。

int arr[5]={0};// 将第一个元素初始化为0,其他元素自动补0

(4)指定元素初始化。

int arr[5]={[1]=10,[3]=20};// 0,10,0,20,0

1.4、一维数值数组的元素操作

在数组中,每个元素都是按照顺序编号的,并且可以通过下标访问它们。以下是一些常用的一维数组元素操作:

  1. 定义数组。定义一个包含n个元素的整型数组arr,可以使用如下代码:

    int arr[n];
    
  2. 初始化数组。定义数组之后,可以对其进行初始化。有两种方式:

    • 手动初始化:依次给每个元素赋值。

      int arr[5] = {1, 2, 3, 4, 5};
      
    • 自动初始化:如果只给部分元素赋值,则未赋值的元素会自动被初始化为0。

      int arr[5] = {1, 2}; // 前两个元素为1和2,后三个元素自动初始化为0
      
  3. 访问数组元素:可以使用下标(从0开始)访问数组中指定位置的元素。

    int a = arr[0]; // 访问第一个元素
    arr[3] = 10;    // 将第四个元素赋值为10
    
  4. 获取数组长度:使用sizeof运算符可获取整个数组占用内存大小(单位为字节)。若要获取实际包含的数据量,需要将总字节数除以单个数据类型所占字节数。

    int len = sizeof(arr) / sizeof(int); // 数组长度为5
    
  5. 遍历数组:可以使用for循环遍历整个数组。

    for (int i = 0; i < n; i++) {
        cout << arr[i] << endl;
    }
    

1.5、使用示例

从键盘中输入10个int数,求这10个数的最大值和最小值。

#include <iostream>
using namespace std;

int main()
{
	int arr[10];
	int n=sizeof(arr)/sizeof(arr[0]);
	int i=0;
	cout<<"请输入"<<n<<"个数值:";
	for(i=0;i<n;i++)
	{
		cin>>arr[i];
	}
	// 求最大值和最小值
	int min,max;
	min=max=arr[0];
	for(i=1;i<n;i++)
	{
		if(max<arr[i])
			max=arr[i];
		if(min>arr[i])
			min=arr[i];
	}
	cout<<"最大值:"<<max<<", 最小值:"<<min<<endl;
	return 0;
}

二、二维数值数组

2.1、概述

C++中的二维数组是一个由多个一维数组组成的矩阵结构,可以用来表示表格、图像等具有二维结构的数据。在二维数组中,每个元素都需要使用两个下标来确定其位置。例如,arr[i][j]表示第i行第j列的元素。
在这里插入图片描述
二维数值数组的特性:

  • 二维数组的总大小 = 行数 * 列数 * 每个元素的大小。即sizeof(arr)。
  • 行数=sizeof(arr)/sizeof(arr[0])。
  • 列数=sizeof(arr[0])/sizeof(arr[0][0])。

定义一个包含n行m列的整型二维数组arr,可以使用如下代码:

int arr[n][m];

2.2、二维数值数组的初始化

(1)分段初始化。

// 完全初始化
int arr[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
// 完全初始化也可以省略行数
int arr2[][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
// 部分初始化
int arr3[3][4]={{1,2,3},{1,2},{0}};

(2)连续初始化。

// 完全初始化
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
// 完全初始化也可以省略行数
int arr2[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
// 部分初始化,其他自动补零
int arr[3][4]={1,2,3,4,5,6,7};

(3)从另一个角度上看,与一维数组类似,也可以分为手动或自动初始化一个二维数组。

  • 手动初始化:需要按行依次给每个元素赋值。

    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    
  • 自动初始化:如果只给部分元素赋值,则未赋值的元素会自动被初始化为0。

    int arr[3][4] = {{1, 2}, {5}, {9}}; // 部分元素被赋值为非零值,其他自动初始化为0
    

2.3、二维数值数组的元素操作

  1. 访问二维数组元素。可以使用两个下标(从0开始)访问二位数组中指定位置的元素。

    int a = arr[0][0]; // 访问第一行第一列的元素
    arr[1][2] = 10;    // 将第二行第三列的元素赋值为10
    
  2. 获取二维数组的大小。可以使用sizeof运算符获取整个二维数组占用内存大小。要获取实际包含数据量,需要将总字节数除以单个数据类型所占字节数。

    int size = sizeof(arr) / sizeof(int); // 数组大小为 n * m * sizeof(int)
    
  3. 遍历二维数组。可以使用双重循环遍历整个二维数组。

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    

2.4、使用示例

统计学生中每个人的平均成绩。
在这里插入图片描述

#include <iostream>
using namespace std;

int main()
{
	int arr[5][4]={
		{56,75,78,89},
		{89,98,76,67},
		{88,99,77,66},
		{67,78,89,90},
		{98,97,96,95}
	};
	int row=sizeof(arr)/sizeof(arr[0]);
	int col=sizeof(arr[0])/sizeof(arr[0][0]);

	int i=0,j=0;
	for(i=0;i<row;i++)
	{
		float sum=0.0f;
		for(j=0;j<col;j++)
		{
			sum+=arr[i][j];
		}
		cout<<"student "<<i+1<<" 的成绩总分:"<<sum<<endl;
		cout<<"student "<<i+1<<" 的成绩平均分:"<<sum/col<<endl;
	}
	return 0;
}

三、总结

C++中的数组是一种常用的数据结构,可以用来存储和操作多个相同类型的变量。在C++中,一维数组和二维数组是最常见的两种数组类型。

  • 一维数组:一维数组是由一个固定长度的、连续的、相同类型的元素序列组成。它可以表示向量、字符串等单行单列的数据集合。

  • 二维数组:二维数组是由固定大小、连续的、相同类型的元素序列组成,它可以表示矩阵、表格等具有行列结构的数据集合。

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 可以使用numpy中的索引方式来取值,例如arr[][1]表示取二维数组arr中第一行第二列的元素值。还可以使用切片方式来取出部分元素,例如arr[:2,1:3]表示取二维数组arr中第一行到第二行,第二列到第三列的元素值。此外,还可以使用numpy中的函数来对二维数组进行操作,例如np.sum(arr)表示对二维数组arr中所有元素求和。 ### 回答2: numpy是Python中一个非常常用的数学计算库,可以用于进行各种数值运算、数值分析以及数据处理等工作。在numpy中,二维数组可以被看作是一个矩阵,我们可以使用多种方法来取值。 首先,我们可以使用索引来取值。对于一个二维数组arr,可以使用arr[i][j]的方式来获得矩阵中第i行第j列的元素值。其中i和j分别表示对应的行和列的索引值,索引值从0开始计数。 另外,numpy提供了更简便的语法来进行矩阵的取值操作。我们可以使用arr[i, j]的方式来获得矩阵中第i行第j列的元素值,其结果与arr[i][j]是等价的。 除了使用单个索引值来取值外,我们还可以使用切片的方式来获取矩阵的某个范围内的元素。对于一个二维数组arr,可以使用arr[start_row:end_row, start_col:end_col]的语法来获取从start_row行到end_row行(不包括end_row)以及从start_col列到end_col列(不包括end_col)之间的元素。 此外,numpy还提供了更多灵活的方法来根据条件取值,比如使用布尔型索引、使用where函数等等。 综上所述,numpy提供了多种方法来进行二维数组矩阵的取值操作,包括使用索引、使用切片、使用布尔型索引等等。这些方法可以帮助我们灵活、高效地获取矩阵中的元素值,方便进行后续的计算和分析工作。 ### 回答3: numpy库是Python中常用的数值计算库,其中的ndarray对象是实现数组矩阵操作的基础。在numpy中,我们可以使用一些方法来取得二维数组矩阵的值。 首先,可以通过索引的方式来取得特定位置的元素。索引从0开始,可以用[row, column]的形式来指定某个位置的元素。例如,arr[0, 0]表示取得二维数组矩阵arr中第一行第一列的元素值。 除了单个位置的索引,我们还可以使用切片(slice)的方式来获取二维数组的子矩阵。切片可以使用[start:end:step]的形式来指定取值的范围。其中,start表示起始位置,end表示结束位置,step表示步进值,默认为1。例如,arr[0:2, 1:3]表示取得二维数组矩阵arr中第一行至第二行、第二列至第三列的元素形成的子矩阵。 此外,numpy还提供了一些函数来获取数组的最大值、最小值、平均值、和值等统计结果。例如,可以使用arr.max()来取得二维数组矩阵arr中的最大值,使用arr.min()来取得最小值,使用arr.mean()来取得平均值。 总之,numpy库提供了丰富的方法来获取二维数组矩阵的值,包括索引、切片和统计函数等。这些方法使得我们可以方便地对数组进行操作和计算,提高了数值计算的效率和便捷性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion Long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值