数组
首先,我们简单的了解一下什么是数组。
数组是一种用于存储多个相同类型数据的集合类型。在C++中,数组的大小在定义时必须确定,并且在程序运行期间不能改变。
1. 数组的定义和初始化:
int arr0[5];
//类型 数组名[数组大小];
int arr1[5] = {1, 2, 3, 4, 5};
//初始化数组
int arr2[5] = {1, 2};
// arr[0] = 1, arr[1] = 2, arr[2] = 0, arr[3] = 0, arr[4] = 0
// 如果初始化列表中的元素少于数组的大小,剩下的元素将被自动初始化为0.
2. 访问数组元素
通过数组索引来访问数组中的元素,索引从0开始:
int firstElement = arr[0];
int secondElement = arr[1];
3. 修改数组元素
同样可以通过索引来修改数组中的元素:
arr[0] = 10;
4. 获取数组的长度
可以使用sizeof运算符来获取数组的大小(以字节为单位),然后除以单个元素的大小来得到数组的长度:
int length = sizeof(arr) / sizeof(arr[0]);
5. 遍历数组
可以使用循环来遍历数组中的每个元素:
for (int i = 0; i < length; i++) {
cout << arr[i] << " ";
}
6. 使用数组计算平均成绩
好,了解完基本信息后,我们就可以看一个例子了,使用数组计算平均成绩:
如果我们不用数组的话,最基本的实现是这样的:
// 读入5个人的分数并显示总分和平均分
#include <iostream>
using namespace std;
int main()
{
int wangming, liyang, zhanghong, zhaogang, zhouyan; // 分数
int sum = 0; // 总分
cout << "计算5个人的总分和平均分\n";
cout << "第1个人的分数:"; cin >> wangming; sum += wangming;
cout << "第2个人的分数:"; cin >> liyang; sum += liyang;
cout << "第3个人的分数:"; cin >> zhanghong; sum += zhanghong;
cout << "第4个人的分数:"; cin >> zhaogang; sum += zhaogang;
cout << "第5个人的分数:"; cin >> zhouyan; sum += zhouyan;
cout << "总分为" << sum << "。\n";
cout << "平均分为" << static_cast<double>(sum) / 5 << "。\n";//转换数据类型,确保得分准确性
return 0;
}
这段代码定义了5个单独的变量来存储每个人的分数,使用了sum变量累加每个人的分数;
如果改成通过数组实现这个功能:
// 读入number个人的分数并显示总分和平均分
#include <iostream>
using namespace std;
int main()
{
const int number = 5; // 人数
int score[number]; // number个人的分数
int sum = 0; // 总分
cout << "计算" << number << "个人的总分和平均分。\n";
for (int i = 0; i < number; i++) {
cout << "第" << i + 1 << "个人的分数 :";
cin >> score[i]; // 读入score[i]
sum += score[i]; // 把score[i]加到sum上
}
cout << "总分为" << sum << "。\n";
cout << "平均分为" << static_cast<double>(sum) / number << "。\n";
return 0;
}
这段代码使用了一个数组score来存储5个人的分数,数组的大小由常量number决定。并且使用for循环来读取每个人的分数并累加到sum变量中。如果需要计算更多人的分数,只需修改number的值即可,而不需要添加更多的变量和输入语句。
7. 将数组中的元素进行逆序排列
接着再看一个复杂的实现:将数组中的元素进行逆序排列
先分析一下我们要实现的功能步骤如下图所示:
这里总共有7个元素,如果按 0, 1,… 递增变量 i 的值,则要交换值的两个元素的下标如下所示。
// 将数组元素逆序排列并显示
#include <ctime>
#include <cstdlib>
//新面孔:头文件<cstdlib>:提供 srand() 和 rand() 函数,用于生成随机数。
#include <iostream>
using namespace std;
int main()
{
const int n = 7; // 数组 a 的元素个数
int a[n];
srand(time(NULL)); // 初始化随机数种子
for (int i = 0; i < n; i++) {
a[i] = rand() % 100;//// 生成 0 到 99 的随机数
cout << "a[" << i << "] = " << a[i] << '\n';
}
for (int i = 0; i < n / 2; i++) {
int t = a[i]; //使用变量t中转数据
a[i] = a[n - i - 1];
a[n - i - 1] = t;
}//使用 for 循环,从数组的开头向中间遍历。经过 n/2 次交换,数组就被逆序排列了。
cout << "将元素逆序排列。\n";
for (int i = 0; i < n; i++)
cout << "a[" << i << "] = " << a[i] << '\n';
return 0;//程序ending啦
}
另外注意,数组之间不可以简单的复制,只能一个个的进行元素复制。