数组(array)

数组(array)

C++ 数组入门:给初学者的指南

你好!欢迎学习C++编程。今天我们要认识一个非常有用的小伙伴——数组 (Array)

1. 理解数组:为什么需要它?

想象一下,你们班有5个同学,老师想记录下每个同学的数学期末考试成绩。

  • 不用数组的笨方法:你可能需要创建5个不同的变量,比如:

    int score1;
    int score2;
    int score3;
    int score4;
    int score5;

    如果班上有50个同学呢?那得写50行!太麻烦了,对吧?

  • 数组来帮忙:数组就像一个带编号的储物柜或者一排连在一起的盒子。你可以用一个名字来管理一整排盒子,每个盒子里存放相同类型的东西(比如都是整数成绩,或者都是同学的名字)。

    下面是一个用文本字符画出的数组示意图,展示了一个名为 scores 的数组,它能存储5个整数:

       数组名: scores
      +----+----+----+----+----+
      │ 85 │ 92 │ 78 │ 90 │ 88 │  <-- 存储在数组中的值 (元素)
      +----+----+----+----+----+
        0    1    2    3    4     <-- 每个元素的索引 (编号)

    (这个文本图展示了:数组有一个名字 scores,它包含多个盒子(元素),每个盒子有自己的值,并且可以通过从0开始的索引/编号来找到特定的盒子。)

数组的关键点:

  1. 集合:它能一次性存储多个数据。
  2. 同类型:所有存入数组的数据,它们的类型必须完全相同(比如,一个 int 数组只能放整数,不能一会儿放整数一会儿放字母)。
  3. 固定大小:在创建数组时,通常需要指定它能装多少个东西(盒子数量),这个数量一般是固定的。
  4. 编号(索引):每个“盒子”都有一个唯一的编号,叫做索引 (Index)。这个编号非常重要,它能帮你准确地找到或放入数据。 特别注意:在C++(以及很多编程语言)里,编号是从 0 开始的!也就是说,第一个盒子的编号是 0,第二个是 1,第三个是 2,以此类推。如果数组有5个元素(就像上图那样),它们的索引就是 0, 1, 2, 3, 4。

简单来说,数组就是一个名字,代表了一串连续的、相同类型的存储空间,你可以通过从0开始的索引来访问里面的每一个元素。

2. 样例代码:动手试试看!

让我们用代码来看看数组怎么用。记住,我们要使用 using namespace std; 风格。

#include <iostream> // 这是C++的标准输入输出库,让我们能用 cin 和 cout

// 使用 std 命名空间,这样就不用在 cin, cout 前面写 std:: 了
using namespace std;

int main() { // main 函数是程序的入口点
    // --- 声明和初始化数组 ---

    // 声明一个可以存放 5 个整数的数组,名叫 scores
    // 想象一下,我们预定了 5 个连续的整数储物柜,并给这排柜子起了个名字叫 scores
    int scores[5];

    // --- 给数组赋值 ---
    // 通过索引(从0开始)给每个“盒子”赋值
    scores[0] = 85; // 第一个元素(索引为0)赋值为 85
    scores[1] = 92; // 第二个元素(索引为1)赋值为 92
    scores[2] = 78;
    scores[3] = 90;
    scores[4] = 88; // 第五个元素(索引为4)赋值为 88

    // 注意:数组大小是 5,所以有效的索引是 0, 1, 2, 3, 4。
    // 千万不要尝试访问 scores[5],这会超出范围,导致错误!

    // --- 访问和打印数组元素 ---
    cout << "第一个同学的分数是: " << scores[0] << endl; // endl 表示换行
    cout << "第三个同学的分数是: " << scores[2] << endl;

    // --- 使用循环遍历数组 ---
    // 如果想打印所有分数,一个个写太麻烦,可以用循环!
    cout << "\n所有同学的分数是: " << endl; // \n 也是换行的意思
    for (int i = 0; i < 5; ++i) { // i 从 0 开始,每次加 1,直到 i 不小于 5 时停止
        // 循环体内,i 的值会依次是 0, 1, 2, 3, 4
        cout << "同学 " << i + 1 << " (索引 " << i << ") 的分数: " << scores[i] << endl;
    }

    // --- 声明时直接初始化数组 ---
    // 你也可以在创建数组的时候就直接填好值
    cout << "\n另一组数字:" << endl;
    int numbers[] = {10, 20, 30, 40}; // C++可以自动计算大小为4
    int size_of_numbers = 4; // 我们知道它的大小是4

    for (int i = 0; i < size_of_numbers; ++i) {
        cout << numbers[i] << " "; // 在一行内打印,用空格隔开
    }
    cout << endl; // 最后换个行

    return 0; // main 函数返回 0 表示程序成功结束
}

代码解释:

  • #include <iostream>: 引入输入输出功能。
  • using namespace std;: 简化代码,不用写 std::cout 等。
  • int main(): 程序从这里开始执行。
  • int scores[5];: 声明一个能装5个 int(整数)的数组,名字叫 scores
  • scores[0] = 85;: 把值 85 存入 scores 数组的第一个位置(索引为0)。
  • cout << scores[1];: 取出 scores 数组的第二个位置(索引为1)的值并打印出来。
  • for (int i = 0; i < 5; ++i): 这是一个 for 循环
    • int i = 0: 创建一个整数变量 i,初始值为0(作为我们的索引)。
    • i < 5: 循环继续的条件,只要 i 小于 5 就一直循环。
    • ++i: 每次循环结束后,把 i 的值增加 1。
    • 循环体 cout << ... << scores[i] << endl; 会被执行5次,i 的值分别是 0, 1, 2, 3, 4,正好对应数组的所有索引。
  • int numbers[] = {10, 20, 30, 40};: 声明数组时直接初始化,大括号 {} 里写上初始值,用逗号隔开。编译器会自动根据你提供的值的数量确定数组大小(这里是4)。

3. 小问题:学以致用

现在,轮到你来挑战一下啦!

问题描述: 请编写一个程序,做以下事情:

  1. 创建一个能存放 4 个 double 类型数字(可以带小数)的数组,用来存储一周中连续 4 天的每日最高气温。
  2. 提示用户依次输入这 4 天的最高气温,并将输入的值存入数组。
  3. 计算这 4 天的平均最高气温。
  4. 打印出这 4 天的平均最高气温。

提示:

  • 你需要用 cin 来读取用户输入。
  • 平均气温 = (第1天气温 + 第2天气温 + 第3天气温 + 第4天气温) / 4。
  • 记得使用 double 类型来存储气温和平均值,因为气温和平均值可能不是整数。

4. 参考答案代码

在你尝试自己解决问题后,可以看看下面的参考答案。

#include <iostream>

using namespace std;

int main() {
    // 1. 创建一个能存放 4 个 double 类型数字的数组
    double temperatures[4]; // 用 double 类型存储气温,可以有小数

    double sum = 0.0; // 用来累加气温总和,初始化为 0.0

    // 2. 提示用户输入 4 天的气温并存入数组
    cout << "请输入连续 4 天的每日最高气温 (℃):" << endl;
    for (int i = 0; i < 4; ++i) {
        cout << "第 " << i + 1 << " 天的气温: ";
        cin >> temperatures[i]; // 读取用户输入,存入数组的第 i 个位置

        // 顺便在循环里就把总和算出来
        sum = sum + temperatures[i]; // 或者写成 sum += temperatures[i];
    }

    // 3. 计算平均最高气温
    // 注意:因为 sum 和 4 都是数值,直接相除可能得到整数结果(如果 sum 恰好是 4 的倍数)
    // 为了确保得到精确的浮点数结果,最好进行浮点数除法
    // 这里因为 sum 本身就是 double,所以 sum / 4 结果自然是 double
    double average_temp = sum / 4.0; // 或者 sum / 4,因为sum是double

    // 4. 打印平均气温
    cout << "\n这 4 天的平均最高气温是: " << average_temp << " ℃" << endl;

    // (可选) 打印用户输入的所有气温,确认一下
    cout << "您输入的气温分别是: ";
    for (int i = 0; i < 4; ++i) {
        cout << temperatures[i] << "℃ ";
    }
    cout << endl;


    return 0;
}

运行这个程序时,它会:

  1. 提示你输入第1天的气温,你输入后按回车。
  2. 提示你输入第2天的气温,你输入后按回车。
  3. …依此类推,直到输入第4天的气温。
  4. 然后它会计算并打印出这4天气的平均最高温度。

很棒!你已经了解了C++数组的基本概念和用法。数组是编程中非常有力的工具,可以帮你处理大量相关的数据。多练习,你就会越来越熟练!继续加油!