学习C++的第五天(数组的使用)

1.数组的定义

#include<iostream>
using namespace std;

int main()
{
	int i;
	int arr1[5] = {10,20,30};	//未初始化的默认为0
	int arr2[] = { 123,45,564,8,679, };
	for (i = 0; i < 5; i++)
	{
		cout << "arr" << i << arr1[i] << endl;
		cout << "arr" << i << arr2[i] << endl;
	}
	system("pause");
	return 0;
}

2.一维数组的数组名的用途
(1)可以统计整个数组在内存中的长度:sizeof(数组名)
(2)可以获取数组在内存中的首地址
(3)获取数组中的元素个数:sizeof(数组名)/sizeof(其中一个元素)

#include <iostream>
using namespace std;

int main()
{
	int arr[] = { 123,432,233,452,534,235 };
	//1.可以统计整个数组在内存中的长度:sizeof(数组名)
	cout << "数组的大小为" << sizeof(arr) << endl;	//输出24 = 4 * 6
	//2.可以获取数组在内存中的首地址
	cout << "数组的首地址为" << arr << endl;
	cout << "数组的第一个元素的地址为" << &arr[0] << endl;	//两个地址相同
	cout << "数组的第二个元素地址为" << &arr[1] << endl;	//和前面一个相差4个字节地址
	//3.获取数组中的元素个数:sizeof(数组名) / sizeof(其中一个元素)
	cout << "数组中元素个数为" << sizeof(arr) / sizeof(arr[0]) << endl;	//输出为6

	system("pause");
	return 0;
}

注意:数组名是常量,不能进行赋值操作。

3.在一个数组中找到最大值

#include <iostream>
using namespace std;

int main()
{
	int arr[] = {623,345,654,324,765};
	int i;
	int max = arr[0];
	for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		if (arr[i] >= max)
		{
			max = arr[i];
		}
	}
	cout << "最大值为" << max << endl;

	system("pause");
	return 0;
}

4.将数组中的元素逆序

#include <iostream>
using namespace std;

int main()
{
	int i;
	//1.创建一个数组
	int arr[] = {5,4,3,2,1};
	cout << "逆序前" << endl;
		for (i = 0; i < sizeof(arr) / sizeof(&arr[0]); i++)
		{
			cout << arr[i] << endl;
		}

		//2.实现逆序
		//2.5循环执行2.1操作,直到起始位置 >= 结束位置
		//2.1记录起始下标位置
		int start = 0;	//起始下标
		//2.2记录结束下表位置
		int end = sizeof(arr) / sizeof(arr[0]) - 1;	//结束下标
		
		while (start <= end)
		{
			//2.3起始下标与结束下标数组元素互换
			int temp = arr[start];
			arr[start] = arr[end];
			arr[end] = temp;
			//2.4起始位置++,结束位置--
			start++;
			end--;
		}
		
		//3.打印逆序后的数组
		cout << "数组元素逆序后" << endl;
		for (i = 0; i < sizeof(arr) / sizeof(&arr[0]); i++)
		{
			cout << arr[i] << endl;
		}

	system("pause");
	return 0;
}

5.冒泡排序

#include <iostream>
using namespace std;

int main()
{
	int i;
	int arr[9] = { 4,2,8,0,5,7,1,3,9 };
	cout << "排序前" << endl;
	for (i=0;i<9;i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
	//开始排序
	//总共排序个数为元素个数-1
	for (int j = 0; j < 9 - 1; j++)
	{
		//内层循环对比 次数 = 元素个数 - 当前轮数 -1
		for (int k = 0; k < 9 - j - 1; k++)
		{
			//如果第一个数大于第二个数,两数字交换
			if (arr[k] > arr[k + 1])
			{
				int temp = arr[k];
				arr[k] = arr[k + 1];
				arr[k + 1] = temp;
			}
		}
	}
	cout << "排序后的结果" << endl;
	for (int z = 0; z < 9; z++)
	{
		cout << arr[z] << " ";
	}

	system("pause");
	return 0;
}

6.二维数组的定义

#include <iostream>
using namespace std;

int main()
{
	int i,j;
	int arr1[2][3] = {{1,2,3},{4,5,6} };
	int arr2[2][3] = {1,2,3,4,5,6};
	int arr3[][3] = { 1,2,3,4,5,6 };

	for (i = 0; i < 2; i++)
	{
		for (j = 0; j < 3; j++)
		{
			cout << arr1[i][j] << " ";
		}
		cout << endl;
	}

	system("pause");
	return 0;
}

7.二维数组的数组名
(1)查看二维数组所占内存空间大小
(2)获取二维数组首地址

#include <iostream>
using namespace std;

int main()
{
	int arr[2][3] = { {1,2,3},{4,5,6} };

	cout << "二维数组所占内存空间为" << sizeof(arr) << endl;	//24 = 4*6
	cout << "二维数组第一行所占内存空间为" << sizeof(arr[0]) << endl;	//12 = 4*3
	cout << "二维数组第一个元素所占内存空间为" << sizeof(arr[0][0]) << endl;	//4
	cout << "二维数组的行数为" << sizeof(arr)/sizeof(arr[0]) << endl;	//2
	cout << "二维数组的列数为" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;	//3

	cout << "二维数组的首地址为" << arr << endl;	//008FF780
	cout << "二维数组的第一行首地址为" << arr[0] << endl;	//008FF780
	cout << "二维数组的第一个元素首地址为" << &arr[0][0] << endl;	//008FF780
	cout << "二维数组的第二行首地址为" << arr[1] << endl;	//008FF78C

	system("pause");
	return 0;
}

8.考试成绩统计

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int sum = 0;
	//创建一个二维数组
	int arr[3][3] = { {100,100,100},{90,50,100},{60,70,80} };
	string name[3] = { "张三","李四","王五" };
	//统计每个人的分数总和
	for (int i=0;i<3;i++)
	{
		for (int j=0;j<3;j++)
		{
			//cout << arr[i][j] << " ";
			sum += arr[i][j];
		}
		cout << name[i] << "的总分为:" << sum << endl;
		
	}
	
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值