C++讲解——数组入门(1)

数组

首先,我们简单的了解一下什么是数组。

数组是一种用于存储多个相同类型数据的集合类型。在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啦
}

另外注意,数组之间不可以简单的复制,只能一个个的进行元素复制。
错误的复制
正确的复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值