【C++】基础编程——05 数组

5.1 概述

  概念:数组就是一个集合,里面存放了相同类型的数据元素
  特点:
  (1)数组中每个数据元素都是相同的数据类型
  (2)数组是由连续的内存位置组成的。
  (3)可以通过下标访问数组中的元素

5.2 一维数组

5.2.1 一维数组定义方式

  (1)数据类型 数组名[数组长度];
  (2)数据类型 数组名[数组长度]={值1,值2,值3…};如果给定的值的数量小于数组长度,那么使用0进行补充
  (3)数据类型 数组名[ ]={值1,值2,值3…}

#include <iostream>
using namespace std;
int main()
{
	//数组

	//定义方式1:数据类型 数组名[数组长度];
	int arr[5];
	arr[0] = 10;
	arr[1] = 20;
	arr[2] = 30;
	arr[3] = 30;
	arr[4] = 40;
	cout << arr[0] << endl;//访问数组元素

	//定义方式2:数据类型 数组名[数组长度]={值1,值2.。。}
	int arr2[4] = { 1,2,5,6 };
	cout << arr2[2] << endl;

	//定义方式3:数据类型 数组名[]={值1,值2.。。}
	int arr3[] = { 1,2,5,6,8,3 };
	cout << arr3[4] << endl;
}

5.2.2 一维数组数组名

  数组名作用:
  (1)统计整个数组在内存中的长度:sizeof(数组名)
  (2)获取数组在内存中的首地址:cout<<数组名;

  (3)获取数组中某个元素的首地址:&数组名[下标]

#include <iostream>
using namespace std;

int main()
{
	//数组名用途


	//1.通过数组名统计整个数组占用内存大小:sizeof()
	int arr1[4] = { 1,2,5,6 };
	cout << "整个数组占用内存空间大小为:"<<sizeof(arr1) << endl;
	cout << "数组每个元素占用内存空间大小为:" << sizeof(arr1[0]) << endl;
	cout << "数组中元素个数为:" << sizeof(arr1) / sizeof(arr1[0]) << endl;


	//2.通过数组名查看数组首地址:数组名
	int arr3[] = { 1,2,5,6,8,3 };
	cout << "数组首地址为:"<<arr3<< endl;
	cout << "数组中某元素的首地址为:" << &arr3[2] << endl;
}

5.2.3 一维数组案例

  一维数组案例1:

#include <iostream>
using namespace std;
int main()
{
	//一维数组案例
	//案例描述:在一个数组中记录了五只小猪的体重,找出并打印最重的小猪体重

	//1.创建5只小猪体重的数组
	int arr1[5] = { 100,222,500,156,266 };

	//2.找到最终的小猪
	int max = 0;
	int num = 0;
	for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
	{
		if (arr1[i] > max)
		{
			max = arr1[i];
			num = i;
		}
	}

	//3.打印最重的小猪
	cout << "最重的小猪为:"<<num <<"它体重为:"<<max<< endl;
}

  一维数组案例2:

#include <iostream>
using namespace std;

int main()
{
	//一维数组案例
	//案例描述:数组元素逆置


	//1.创建数组
	int arr1[5] = { 100,222,500,156,266 };

	//2.数组元素逆置
	int temp = 0;
	int j = sizeof(arr1) / sizeof(arr1[0])-1;
	for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
	{

		if (j >= i)
		{
			temp = arr1[i];
			arr1[i] = arr1[j];
			arr1[j] = temp;
		}
		j--;
	}
	//3.打印逆置的数组
	for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
	{
		cout << arr1[i] << endl;
	}
}

5.2.4 冒泡排序

#include <iostream>
using namespace std;

int main()
{
	//冒泡排序
	//1.创建数组
	int arr1[] = { 100,222,500,156,266,100,521,345 };

	//2.数组冒泡排序
	int end = sizeof(arr1) / sizeof(arr1[0]) - 1;//结束位置的下标

	for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
	{
		int temp = 0;
		for (int j = 0; j < end; j++)
		{
			if (arr1[j]> arr1[j+1])
			{
				temp = arr1[j];
				arr1[j] = arr1[j+1];
				arr1[j+1] = temp;
			}
		}
		end--;
	}

	//3.打印排序后的数组
	for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
	{
		cout << arr1[i] << endl;
	}
	
}

5.3 二维数组

  二维数组就是在一维数组上,多加一个维度。

5.3.1 二维数组定义方式

  (1)数据类型 数组名[行数] [列数];
  (2)数组类型 数组名 [行数][列数]={{数据1,数据2},{数据3,数据4}}
  (3)数组类型 数组名 [行数][列数]={数据1,数据2,数据3,数据4}
  (4)数据类型 数组名[][列数]={数据1,数据2,数据3,数据4}
  

#include <iostream>
using namespace std;

int main()
{
	//二维数组定义

	//创建方式1:数据类型 数组名[行数] [列数];
	int arr1[2][2];
	arr1[0][0] = 1;
	arr1[0][1] = 2;
	arr1[1][0] = 3;
	arr1[1][1] = 4;
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			cout << arr1[i][j] << endl;
		}
	}

	//创建方式2:数组类型 数组名 [行数][列数]={{数据1,数据2},{数据3,数据4}}
	int arr2[2][4] = { {100,222,500,156},{266,100,521,345} };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cout << arr2[i][j] << endl;
		}
	}

	//创建方式3:数组类型 数组名 [行数][列数]={数据1,数据2,数据3,数据4}
	int arr3[2][4] = { 100,222,500,156,266,100,521,345 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cout << arr3[i][j] << endl;
		}
	}

	//创建方式4:数组类型 数组名 [][列数]={数据1,数据2,数据3,数据4}
	int arr4[][4] = { 100,222,500,156,266,100,521,345 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cout << arr4[i][j] << endl;
		}
	}
}

5.3.2 二维数组数组名

  数组名作用:
  (1)查看二维数组所占内存空间
  (2)获取二维数组在内存中的首地址:cout<<数组名;

#include <iostream>
using namespace std;

int main()
{
	//二维数组名
	//1.查看二维数组占用内存大小
	int arr2[2][4] = {{100,222,500,156},{266,100,521,345}};
	cout << "二维数组所占内存空间大小为:" << sizeof(arr2) << endl;
	cout << "二维数组第一行占用的内存为:" << sizeof(arr2[0]) << endl;
	cout << "二维数组第一个元素占用的内存为:" << sizeof(arr2[0][0]) << endl;

	cout << "二维数组的行数:" << sizeof(arr2) / sizeof(arr2[0]) << endl;
	cout << "二维数组的列数:" << sizeof(arr2[0]) / sizeof(arr2[0][0]);


	//2.二维数组首地址
	cout << "二维数组首地址:" << arr2 << endl;
	cout << "二维数组中第一行数据的首地址:" << arr2[0] << endl;
	cout << "二维数组中第一行第二列元素的首地址:" << &arr2[0][1] << endl;
}

5.3.3 二维数组应用案例

  数组案例:

语文数学英语
张三100100100
李四1009050
王五607080
#include <iostream>
using namespace std;

int main()
{
	//二维数组案例
	//三名同学的三科成绩,分别输出这三名同学的总成绩


	//1.创建成绩数组
	int arr2[3][3] = {{100,100,100},{56,90,100 }, { 60,71,65 }};
	
	//2.分别计算三名同学的总成绩
	for (int i = 0; i < sizeof(arr2)/sizeof(arr2[0]); i++)
	{
		int sum = 0;
		for (int j = 0; j < sizeof(arr2[0])/sizeof(arr2[0][0]); j++)
		{
			sum += arr2[i][j];
		}
		cout << "第" << i << "个同学的总分为:" << sum << endl;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值