C++基础(4)——数组

这篇博客介绍了C++中一维数组的基本操作,包括找出最大值、元素逆置和冒泡排序。还展示了如何使用二维数组,并给出了一个考试成绩统计的案例。通过这些实例,读者可以更好地理解C++中数组的运用和排序算法的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.一维数组

1.1数组案例

五个小猪称体重:

#include<iostream>
using namespace std;

void main() {
	int arr[] = { 300,350,200,400,250 };
	int max_weight = arr[0];
	for (int i = 1; i <= 5; i++) {
		if (arr[i] > max_weight) {
			max_weight = arr[i];
		}	
	}
	cout <<"最重的小猪是:"<< max_weight;
}

1.2.数组元素逆置

       逆置即为首位互换。

       c++中没有直接提供获取数组长度的函数,我们可以首先计算整个数组所占的字节数再除以一个数组元素所占的字节就是数组的长度。即为:int length=sizeof(arr)/(arr[0]).对于数组的下标:

首位数组元素下标为:int start=0;末尾元素下标为:int end=sizeof(arr)/(arr[0])-1

        那么我们要想实现数组的逆置只需要将首位数组下标与末尾的数组下面首尾互换即可。当然我们还需要借助一个容器temp来临时存储需要交换的数组元素,防止在交换的过程中被覆盖,

#include<iostream>
using namespace std;

void main() {
	int arr[] = { 1,3,2,5,4 };
	cout << "数组逆置前的结果"<<endl;
	for (int i = 0; i < 5; i++) {
		cout << arr[i] << endl;
	}
	//实现逆置;需要记录起始下标的位置和结束下标位置,然后起始下标与结束下标互换,再起始++,结束--
	int start = 0;
	int end = sizeof(arr) / sizeof(arr[0]) - 1;
	while (start < end) {
		int temp = arr[start];
		arr[start] = arr[end];
		arr[end] = temp;
		//下标更新
		start++;
		end--;
	}
	cout << "数组逆置后的结果:" << endl;
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
		cout << arr[i] << endl;
	}
}

 1.3.冒泡排序

#include<iostream>
using namespace std;

void main() {
	int arr[] = { 4,2,8,0,5,7,1,3,9 };
	cout << "排序前:" << endl;
	for (int i = 0; i < 9; i++) {
		cout << arr[i] << endl;
	}
	//排序的总轮数=元素个数-1;
	//每轮对比数=元素个数-排序轮数-1;
	for (int i = 0; i < 9 - 1; i++) {//这是外层循环要排序的轮数
		for (int j = 0; j < 9 - i - 1; j++) {//内存循环每轮对比数=元素个数-排序轮数-1;
			if (arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j + 1] = temp;

			}
		}
	}
	//排序后
	cout << "排序后:" << endl;
	for (int i = 0; i < 9; i++) {
		cout << arr[i] << endl;
	}

}

2.二维数组

#include<iostream>
using namespace std;

void main() {
	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;

	//外层循环打印行数,内存循环打印列数
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 3; j++) {
			cout << arr[i][j]<< endl;
		}
	}

}

 考试成绩统计案例:

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

void main() {
	//案例:考试成绩统计
	//1.创建数组
	int scores[3][3] = {
		{100,100,100},
		{90,50,100},
		{60,70,80}
	};

	string names[3] = { "张三","李四","王五" };
	//2.统计每个热的总和分数
	for (int i = 0; i < 3; i++) {
		int sum = 0;//统计分数总和变量
		for (int j = 0; j < 3; j++) {
			sum += scores[i][j];
			//cout<< scores[i][j] << "  ";
		}
		cout << names[i] << "的总分为" << sum << endl;
	}

}

 

 

 

在这个问题中,用户提供了两段代码,分别是引用\[1\]和引用\[2\]。这两段代码都是用来在一个数组中查找指定数的位置。 引用\[1\]是一个C++代码示例,它使用了iostream和stdio.h头文件,并使用了命名空间std。代码中使用了一个while循环来不断读取输入的n值,然后创建一个大小为n的整型数组a,并通过for循环读取数组的元素。接下来,代码读取了一个整数m,并使用for循环遍历数组a,查找是否有与m相等的元素。如果找到了相等的元素,则将其位置赋值给变量t,并跳出循环。最后,根据t的值输出结果。 引用\[2\]是另一个C代码示例,它使用了stdio.h头文件。代码中同样使用了一个while循环来不断读取输入的n值,然后创建一个大小为n的整型数组a,并通过for循环读取数组的元素。接下来,代码读取了一个整数m,并使用for循环遍历数组a,查找是否有与m相等的元素。如果找到了相等的元素,则将其位置赋值给变量count,并将flag设置为1,表示找到了。最后,根据flag的值输出结果。 综上所述,这两段代码都是用来在一个数组中查找指定数的位置。它们的实现方式略有不同,但都能达到相同的目的。 #### 引用[.reference_title] - *1* [1143: 零起点学算法50——数组中查找数](https://blog.youkuaiyun.com/weixin_43965597/article/details/113104995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [问题 C: 零起点学算法82——数组中查找数](https://blog.youkuaiyun.com/chenhannan0024/article/details/127568844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI炮灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值