Browse Source

上传文件至 '数组1'

Creamo 3 years ago
parent
commit
f93fb66ac8

+ 78 - 0
数组1/1、一维数组.cpp

@@ -0,0 +1,78 @@
+#include <iostream>
+
+//作为数组就是一个集合,里面存放了相同类型的数据元素
+
+//特点1、数组中的每个数据元素都是相同的数据类型
+//特点2、数据是由连续的内存位置组成的
+
+//一维数组定义的三种方式:
+//1、数据类型  数组名 [ 数组长度 ];
+//2、数据类型  数组名 [ 数组长度 ] = { 值1,值2 ... };
+//3、数据类型  数据名 [ ] = { 值1,值2 ... };
+
+//我们可以通过下标访问数组中的元素
+
+int main1()
+{
+	//1、数据类型  数组名 [ 数组长度 ]
+	
+	//int arr[5];
+	//给数组中的元素进行赋值
+	//arr[0] = 10;
+	//arr[1] = 20;
+	//arr[2] = 30;
+	//arr[3] = 40;
+	//arr[4] = 50;
+	// 访问数据元素
+	//std::cout << arr[0] << std::endl;
+
+	//2、数据类型  数组名 [ 数组长度 ] = { 值1,值2 ... };
+	
+	//   如果在初始化数据的时候,没有全部填写完,剩下的会用0来填补剩余数据
+	int arr2[5] = { 10,20,30 };
+	
+	//std::cout << arr2[0] << std::endl;
+	//std::cout << arr2[1] << std::endl;
+	//std::cout << arr2[2] << std::endl;
+	//std::cout << arr2[3] << std::endl;
+	//std::cout << arr2[4] << std::endl;
+
+	//利用循环  输出数组中的元素
+	//for (int i = 0;i < 5; i++)
+	//{
+	//	std::cout << arr2[i] << std::endl;
+	//}
+	
+	//3、数据类型  数据名[] = { 值1,值2 ... };
+
+	//定义数组的时候,必须有初始长度
+
+	//int arr3[] = { 90,80,70,60,50,40,30,20,10 };
+	//for (int i = 0; i < 9; i++)
+	//{
+	//	std::cout << arr3[i] << std::endl;
+	//}
+
+	//一位数组的名称和用途
+	//1、可以统计整个数组在内存中的长度
+	//2、可以获取数组在内存地址中的首地址
+
+	int arr[10] = { 1,2.3,4,5,6,7,8,9,10 };
+
+	std::cout << "整个数组占用内存空间为: " << sizeof(arr) << std::endl;
+	std::cout << "每个元素所占用内存空间为: " << sizeof(arr[0]) << std::endl;
+	std::cout << "数组中元素的个数是多少: " << sizeof(arr) / sizeof(arr[0]) << std::endl;
+	std::cout << "数组首地址是: " << arr << std::endl;
+	std::cout << "数组的首地址是: " << (int)arr << std::endl;
+	std::cout << "数组首元素的地址是: " << &arr[0] << std::endl;
+	std::cout << "数组首元素的地址是: " << (int)&arr[0] << std::endl;
+	
+	//数组名是一个常量 不可以赋值
+
+
+
+	system("pause");
+
+	return 0;
+
+}

+ 36 - 0
数组1/2、一维数组案例:五只小猪称体重.cpp

@@ -0,0 +1,36 @@
+#include <iostream>
+
+//在一个数组中记录了五只小猪的体重 如: int arr[5] = { 300,350,200,400,250 }
+//找出并打印最重的小猪体重
+//本质:在一个数组中找到最大值
+
+int main2()
+{
+	//1、创建5只小猪体重的数组
+	int arr[5] = { 300,350,200,400,250 };
+
+	//2、从数组中找到最大值
+	int max = 0;      //先认定一个最大值 0 
+	for (int i = 0; i < 5; i++)
+	{
+		//std::cout << arr[i] << std::endl;
+		//如果我们访问的数组中的元素比我们认定的最大值还大,更新最大值
+		if (arr[i] > max)
+		{
+			max = arr[i];
+		}
+	}
+		
+	//3、打印最重的小猪
+	std::cout << "最重的小猪体重为:" << max << std::endl;
+
+
+	//访问数组中每个元素,如果这个元素比我认定的最大值要大,更新最大值
+
+
+
+	system("pause");
+
+	return 0;
+
+}

+ 52 - 0
数组1/3、一维数组案例:数组元素逆置.cpp

@@ -0,0 +1,52 @@
+#include <iostream>
+
+//请声明一个5个元素的数组,并且将元素逆置
+//原数组为 { 1,3,2,5,4 } 逆置后输出结果为 { 4,5,2,3,1 }
+
+int main3()
+{
+	//1、创建数组
+	int arr[5] = { 1,3,2,5,4 };
+	std::cout << "元素逆置前的结果:" << std::endl;
+	for (int i = 0; i < 5; i++)
+	{
+		std::cout << arr[i] ;
+	}
+	std::cout << std::endl;
+	//2、实现逆置
+
+	//2.1 记录起始下标的位置
+	int start = 0;
+
+	//2.2 记录结束下标的位置
+	int end = sizeof(arr) / sizeof(arr[0]) - 1;
+
+	//2.3 起始下标与结束下标的元素互换
+	//int temp = arr[start];
+	//arr[start] = arr[end];
+	//arr[end] = temp;
+
+	//2.4 起始位置 ++  结束位置 --
+	//2.5 循环执行 2.1 的操作 直到起始位置 <= 结束位置
+	while (start < end)
+	{
+		int temp = arr[start];
+		arr[start] = arr[end];
+		arr[end] = temp;
+
+		start++;
+		end--;
+	}
+
+	//3  打印逆置后的数组
+	std::cout << "元素逆置后的结果:" << std::endl;
+	for (int i = 0; i < 5; i++)
+	{
+		std::cout << arr[i];
+	}
+	std::cout << std::endl;
+
+	system("pause");
+
+	return 0;
+}

+ 56 - 0
数组1/4、冒泡排序.cpp

@@ -0,0 +1,56 @@
+#include <iostream> 
+
+//冒泡排序:最常用的排序算法,对数组内元素进行排序
+//1、比较相邻的元素,如果第一个比第二个大,就交换他们两个
+//2、对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值
+//3、重复以上步骤,每次比较次数-1,直到不需要比较
+
+//实例:将数组{ 4,2,8,0,5,7,1,3,9 }
+
+int main4()
+{
+
+	//利用冒泡排序实现升序序列
+
+	int arr[9] = { 4,2,8,0,5,7,1,3,9 };
+	std::cout << "排序前:" << std::endl;
+
+	for (int i = 0; i < 9; i++)
+	{
+		std::cout <<arr[i] <<"";
+	}
+	std::cout << std::endl;
+	
+	//开始排序
+	//排序的总轮数 = 元素个数 - 1;
+	//每轮对比次数 = 元素个数 - 排序轮数 -1;
+
+	for (int i = 0; i < 9 - 1; i++)
+	{
+		//内层循环对比  次数 = 元素个数 - 当前轮数 -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;
+				}
+				
+		}
+	}
+
+	//排序后结果
+	std::cout << "排序后:" << std::endl;
+	for (int i = 0; i < 9; i++)
+	{
+		std::cout << arr[i] << "";
+	}
+	std::cout << std::endl;
+
+
+	system("pause");
+
+	return 0;
+}

+ 86 - 0
数组1/5、二维数组.cpp

@@ -0,0 +1,86 @@
+#include <iostream>
+
+//二维数组定义的四种方式:
+//1、数据类型 数组名 [ 行数 ] [ 列数 ];
+//2、数据类型 数组名 [ 行数 ] [ 列数 ] = { { 数据1,数据2 },{ 数据3,数据4 } };
+//3、数据类型 数组名 [ 行数 ] [ 列数 ] = { 数据1,数据2,数据3,数据4 };
+//4、数据类型 数组名 [  ] [ 列数 ] = { 数据1,数据2,数据3,数据4 };
+//以上四种定义方式,利用第二种更加直观,提高代码的可读性
+
+
+int main5()
+{
+
+	//二维数组的定义方式
+	// 1、
+	//int arr[2][3];
+	//arr[0][0] = 1;
+	//arr[0][1] = 2;
+	//arr[0][2] = 3;
+	//arr[1][0] = 4;
+	//arr[1][1] = 5;
+	//arr[1][2] = 6;
+
+	//std::cout << arr[0][0] << std::endl;
+	//std::cout << arr[0][1] << std::endl;
+	//std::cout << arr[0][2] << std::endl;
+	//std::cout << arr[1][0] << std::endl;
+	//std::cout << arr[1][1] << std::endl;
+	//std::cout << arr[1][2] << std::endl;
+
+	//外层循环打印行数,内层循环打印列数
+	//for (int i = 0; i < 2; i++)
+	//{
+	//	for (int j = 0; j < 3; j++)
+	//	{
+	//		std::cout << arr[i][j] << std::endl;
+	//	}
+	//}
+
+
+	//2、
+
+	//int arr2[2][3] =
+	//{
+	//	{1,2,3},
+	//	{4,5,6}
+	//};
+	//for (int i = 0; i < 2; i++)
+	//{
+	//	for (int j = 0; j < 3; j++)
+	//	{
+	//		std::cout << arr2[i][j] << " ";
+	//	}
+	//	std::cout << std::endl;
+	//}
+
+	//3、
+	//int arr3[2][3] = { 1,2,3,4,5,6 };
+	//for (int i = 0; i < 2; i++)
+	//{
+	//	for (int j = 0; j < 3; j++)
+	//	{
+	//		std::cout << arr3[i][j] << " ";
+
+	//	}
+	//	std::cout << std::endl;
+	//}
+
+
+	//4、
+	int arr4[][3] = { 1,2,3,4,5,6 };
+	for (int i = 0; i < 2;i++)
+	{
+		for (int j = 0; j < 3; j++)
+		{
+			std::cout << arr4[i][j]<< " ";
+		}
+		std::cout << std::endl;
+	}
+
+
+	system("pause");
+
+	return 0;
+
+}