0基础学习C++--数组--一维数组

目录

 5 数组

5.1 概述

 5.2 一维数组

5.2.1 一维数组定义方式

5.2.2 一维数组数组名

练习案例1:五只小猪称体重

练习案例2:数组元素逆置

5.2.3 冒泡排序


 5 数组

5.1 概述

所谓数组,就是一个集合,里面存放了相同类型的数据元素

特点1:数组中的每个数据元素都是相同的数据类型

特点2:数组是由连续的内存位置组成的

 5.2 一维数组

5.2.1 一维数组定义方式

 一维数组定义的三种方式:

数据类型 数组名 [数组长度];
数据类型 数组名 [数组长度] = {值1,值2,值3,....};
数据类型 数组名 [] = {值1,值2,....};

示例:

int main()
{
	//定义方式1
	//数据类型 数组名[元素个数]
	int score [3];
	//利用下标进行赋值
	score[0] = 1;
	score[1] = 2;
	score[2] = 3;
	//利用for循环进行数组中的元素输出
	for (int i = 0; i < 3; i++)
	{
		cout << score[i] << endl;
	}
    
	//定义方式2
	//数据类型 数组名[数组长度] = {值1,值2,值3...};
	int arr[3] = {10,20,30}; 
	for (int i = 0; i < 3; i++)
	{
		cout << arr[i] << endl;
	}

	//定义方式3
    //定义数组的时候必须有初识的长度
	//数据类型 数组名[ ] = {值1,值2,....};
	int arr2[] = {100,200,300};
	for (int i = 0; i < 3; i++)
	{
		cout << arr2[i] << endl;
	}
	system("pause");
	return 0;
}

总结1:数组命名规范与变量命名规范一致,不要和变量重名

总结2:数组中下标是从0开始索引

5.2.2 一维数组数组名

一维数组名称的用途:

  • 可以统计整个数组在内存中的长度

  • 可以获取数组在内存中的首地址

示例:

int main()
{
	//数组名的用途
	//统计整个数组在内存中的长度
	//sizeof(数组名)

	int arr[5] = {1,2,3,4,5};
	cout << "整个数组占用内存空间:\t" << sizeof(arr) << endl;
	cout << "每个元素占用内存空间:\t" << sizeof(arr[0]) << endl;
	cout << "数组中元素个数为:\t" << sizeof(arr) / sizeof(arr[0]) << endl;
	//获取数组在内存中的首地址
	cout << "数组首地址为:\t";
	cout << arr << endl;
	cout << "数组的第一个元素地址为:\t";
	cout << &arr[0] << endl;
	system("pause");
	return 0;
}
练习案例1:五只小猪称体重

案例描述:

在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250};

找出并打印最重的小猪体重。

示例:

int main()
{
	//练习案例:五只小猪称体重
	//在一个数组中记录五只小猪体重
	int pig[5] = {300,350,200,400,250};
	//最重猪的体重
	int max_pig = 0;
	//最重的那只猪
	int max_pig_num = 0;
	for (int i = 0; i < 5; i++)
	{
		if (pig[i] > max_pig)
		{
			max_pig = pig[i];
			max_pig_num = i + 1;
		}
	}
	cout << "第" << max_pig_num << "只小猪最重,体重为:" << max_pig << endl;
	system("pause");
	return 0;
}
练习案例2:数组元素逆置

案例描述:请声明一个5个元素的数组,并且将元素逆置。

(如原数组元素为:1,2,3,4,5,逆置后输出结果为5,4,3,2,1)

示例:

int main()
{
	//练习案例:数组元素逆置
	/*
	案例描述:请声明一个5个元素的数组,并且将元素逆置。
	(如原数组元素为:1,2,3,4,5,逆置后输出结果为5,4,3,2,1)
	*/
	int arr[5] = {1,2,3,4,5};
	//方法1、定义一个新的数组
	//逆置后的数组
	int reverse_arr[5];
	//正序数组下标
	int j = 4;
	cout << "正序数组是:" << endl;
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << "\t";
	}
	cout << endl;
	for (int i = 0; i < 5; i++)
	{
		reverse_arr[i] = arr[j];
		j--;
	}
	cout << "逆置后的数组是:" << endl;
	for (int i = 0; i < 5; i++)
	{
		cout << reverse_arr[i] << "\t";
	}
	cout << endl;
	cout << "------------------------------------------" << endl;
	//方法2 一个数组中进行逆置
	//定义起始数组下标
	int start = 0;
	//定义末尾下标
	int end = sizeof(arr) / sizeof(arr[0]) - 1;
	//定义临时数组
	int temp = 0;
	while (1)
	{
		temp = arr[start];
		arr[start] = arr[end];
		arr[end] = temp;
		start++;
		end--;
		//start >=end 结束互换
		if (start >= end)
		{
			break;
		}
		
	}
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i] << "\t";
	}
	cout << endl;
	system("pause");
	return 0;
}

实现数组逆置方法:

1、记录起始下标位置

2、记录结束下标位置

3、起始下标与结束下标元素互换

4、起始位置++,结束位置--

5、循环执行1的操作,直到起始位置 >= 结束位置

5.2.3 冒泡排序

作用:最常用的排序算法,对数组内元素进行排序

  1. 比较相邻元素,如果是第一个比第二个大,就交换他们两个。

  2. 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。

  3. 重复以上的步骤,每次比较次数-1,知道不需要比较。

示例:将数组{4,2,8,0,5,7,1,3,9}

int main()
{
	//利用冒泡排序实现升序排列
	int arr[9] = {4,2,8,0,5,7,1,3,9};
	cout << "排序前:\t" << endl;
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << "\t";
	}
	cout << endl;
	
	//开始冒泡排序
	//总共排序轮数为 元素个数 - 1
	for (int i = 0; i < 9 - 1; i++)
	{
		cout << "第" << i + 1 <<"轮排序结果:\t" << endl;
		//内层循环对比 次数 = 元素个数 - 当前轮数 - 1
		for (int j = 0; j < 9 - i - 1; j++)
		{
			//如果第一个数字,比第二个数字大,交换两个数字
			if (arr[j] > arr[j+1])
			{
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
			
		}
		for ( int i = 0; i < 9; i++)
			{
				cout << arr[i] << "\t";
			}
		cout << endl;
	}
	cout << "排序后:\t" << endl;
	for ( int i = 0; i < 9; i++)
	{
		cout << arr[i] << "\t";
	}
	
	cout << endl;
	
	system("pause");
	return 0;
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值