C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++利用数组处理数据

C++利用数组(一维/二维)处理批量数据的方法

作者:卫卫周大胖;

对于简单的问题,使用简单的数据类型就可以了,但是对于有些需要处理的数据,只用以上简单的数据类型是不够的,难以反映出数据的特点,也难以有效的进行处理,本文小编给大家介绍了C++利用数组(一维/二维)处理批量数据的方法,需要的朋友可以参考下

怎样定义和引用一维数据

怎样定义一维数组

要使用数组,必须在程序中先定义数组,即通知计算机:由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。否则计算机不会自动的把一批数据作为数组处理。例如,下面是对数组的定义:

int a[10] ;

它表示定义了一个整型数组, 数组名是a,此数组包含了 10个元素。

数组的一般形式为:

类型说明符 数组名[常量表达式]

说明:

在这里插入图片描述

怎样引用一维数组

在定义数组并对其各个元素赋值后,就可以引用数组中的元素。应注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值。

引用数组元素的表示形式为:

数组名[下标]

例题: 对10个数组元素一次赋值为0,1,2,3 … 8,9,要求逆序输出。

int main()
{
	int i = 0;
	int arr[10] = { 0 };
	for (i = 0; i < 10; i++)
	{
		arr[i] = i;//赋值
	}
	for (i = 9; i >= 0; i--)
	{
		printf("%d ", arr[i]);//打印
	}
	printf("\n");
	return 0;
}

运行结果:

在这里插入图片描述

一维数组的初始化

在定义数组时对全部数组元素赋予初值。例如:

int a[10] = {0,1,2,3,4,5,6,7,8,9);

也可只给数组中的一部分元素赋值。例如:

int a[10] = {0,1,2,3,4};
//定义a数组有10个元素,但花括号内只提供5个元素的初始值,
//系统自动给后面5个元素的初始值赋值为0

如果想一个数组中全部元素为0,可以写成:

int a[10] = {0};

在对全部数组元素赋初始值时,由于数据的个数已经确定,因此可以不指定数组长度。例如:

int a[5] = {1,2,3,4,5};
//或者
int a[] = {1,2,3,4,5}; 

一维数组程序举例

例题1:用数组来处理求Fibonacci(斐波那契数列)问题。这个数列有以下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13…,求其前20个数。

int main()
{
	int i = 0;
	int arr[20] = {1,1};//前俩项赋值为1
	for (i = 2; i < 20; i++)
	{
		arr[i] = arr[i - 1] + arr[i - 2];
	}
	for (i = 0; i < 20; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

运行结果:

在这里插入图片描述

例题2(冒泡排序):有10个地区的面积,要求对它们按由小到大的顺序排序。

int main()
{
	int area[10] = { 0 };
	int i = 0;
	int j = 0;
	int min = 0;
	printf("请分别输入10个田地的面积\n");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &area[i]);
	}
	for (i = 0; i < 9; i++)//排升序(趟数)
	{
		for (j = 0; j < 9 - i; j++)//两两交换
		{
			if (area[j] > area[j + 1])
			{
				min = area[j + 1];//将较小的放临时变量中
				area[j + 1] = area[j];//将两交换位置
				area[j] = min;//将较小值赋值给较大值
			}
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", area[i]);
	}
	printf("\n");
	return 0;
}

运行结果:

在这里插入图片描述

怎样定义和引用二维数组

前面已经提到,有的问题需要用二维数组来处理。例如3个小分队,每队有6名队友,需要把这些队友的工资用数组保存起来以备查。这就需要用到二维数组(如下图)。如果建立一个数组Pay,它应当是二维的,第一维用来表示第几个分队,第二维用来表示第几个队员。

在这里插入图片描述

二维数组通常称为 矩阵 。把二维数组写成行(row)和列(column)的排列形式,可以有助于形象化的理解二维数组的逻辑结构。

怎样定义二维数组

怎样定义二维数组呢? 其基本概念与方法和一维数组相似。如:

float pay[3][6]

以上定义了一个float类型的二维数组,第1维有3个元素,第2维有6个元素。每一维的长度分别用一对方括号扩起来。 二维数组的一般定义形式如下: 类型说明符 数组名[常量表达式][常量表达式]

例如: float a[3][4],b[5][10];

C语言对二维数组采用这样的定义方式,使得二维数组可以被看作一种特殊的一维数组:它的元素又是一个一维数组。例如可以把a看作一个一维数组,它有3个元素:a[0],a[1],a[2],每个元素又是一个包含4元素的一维数组,如图所示

在这里插入图片描述

我们可以把a[0],a[1], a[2]看成三个一维数组的名字。上面定义的二维数组可以理解为定义了3个一维数组,即相当于:

float a[0][4],a[1][4],a[2][4]

此处把a[0],a[1],a[2]看作一维数组名。C语言的这种处理方法在数组初始化和用指针表示时显得很方便,这在以后的使用中各位会经常体会到。

二维数组在内存中存放的顺序

C语言中,二维数组中元素排放的顺序是按行存放的,即在内存中先顺序存放第一行的元素,接着存放第2行的元素。如下图所示:

在这里插入图片描述

怎样引用二维数组

二维数组元素的表示形式为:

数组名[下标][下标]

例如:a[2][3]表示a数组中序号为2的行中序号为3的列元素。下标应是整型表达式,如 a[2 - 1][2 * 2 - 1]形式。 数组元素可以出现在表示中也可以被赋值。

二维数组的初始化

分行给二维数组赋初始值。 这种赋初始值的方式比较直观,把第一个花括号内的数据给第1行的元素,第2个花括号内的值给第2行的元素。例如:

int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初始值。例如:

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12,};

可以对部分元素赋初始值,例如:

int a[3][4] = {{1},{5},{9}};

二维数组程序举例

例题:有一个3 * 4的矩阵,要求编写程序求出求字最大的那个元素的值,以及其所在的行号和列号。

int main()
{
	int arr[3][4] = { {1,2,3,4},{5,55,7,8},{9,55,11,12} };
	int i = 0;
	int j = 0;
	int max = 0;//最大值
	int col = 0;//列坐标
	int row = 0;//行坐标
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (max  < arr[i][j])//将数组中的每一个元素和它进行比较找出最大的
			{
				max = arr[i][j];
				row = i;
				col = j;
			}
		}
	}
	printf("row = %d col = %d max = %d \n", row,col,max);
	return 0;
}

运行结果:

在这里插入图片描述

以上就是C++利用数组(一维/二维)处理批量数据的方法的详细内容,更多关于C++利用数组处理数据的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文