Menu
CoddyTech

常见数组操作

本课属于 Coddy C++ 学习旅程的“基础知识”单元。第 66 课,共 74 课。

以下是一些常见的数组操作:

  • 求数组中所有元素的总和:
int numbers[] = {1, 2, 3, 4, 5};
int sum = 0;
for (int number : numbers) {
    sum += number;
}
std::cout << "Sum: " << sum;
  • 求数组中元素的平均值:
int numbers[] = {1, 2, 3, 4, 5};
double sum = 0;
for (int number : numbers) {
    sum += number;
}
double average = sum / std::size(numbers);
std::cout << "Average: " << average;
  • 查找数组中的最大值元素:
int numbers[] = {1, 5, 2, 9, 3};
int max = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] > max) {
        max = numbers[i];
    }
}
std::cout << "Max: " << max;
  • 查找数组中的最小值元素:
int numbers[] = {1, 5, 2, 9, 3};
int min = numbers[0];
for (int i = 1; i < std::size(numbers); i++) {
    if (numbers[i] < min) {
        min = numbers[i];
    }
}
std::cout << "Min: " << min;
challenge icon

挑战

简单

创建一个名为 calculateStats 的函数,接收一个双精度浮点数数组和数组的大小作为输入,并执行以下操作:

  1. 计算数组中所有元素的总和。
  2. 计算数组中元素的平均值。
  3. 查找数组中的最大元素。
  4. 查找数组中的最小元素。

函数应返回一个双精度浮点数数组,依次包含总和、平均值、最大值和最小值。


重要说明:
  • 使用 size 参数控制循环:不要使用 std::size()。
  • 初始化 max 和 min 时,将它们设为 arr[0]。即使数组中只有负数,这样做也能正确处理。
  • 预先编写的 main() 代码已经使用 new 分配了动态数组,并使用 delete[] 释放它。你只需要在函数中使用 new double[4] 分配结果数组并返回它。注意:指针和使用 new 管理动态内存,会在后续单元中深入介绍。现在你只需要遵循这里展示的 new double[4] 模式。

建议步骤:
  1. 初始化 sum = 0、max = arr[0] 和 min = arr[0]。
  2. 从 i = 0 循环到 i < size,累加总和,并根据需要更新 max/min。
  3. 使用 sum / size 计算平均值。
  4. 使用 new double[4] 分配一个新数组,按顺序存储四个结果,然后返回该数组。

亲手试试

#include <iostream>

double* calculateStats(double arr[], int size) {
    // 将 4 个值存入 newArr 前,你需要先计算出它们
    // 初始化 sum、max 和 min 变量:sum 从 0 开始,max 和 min 都从 arr[0] 开始
    // 用 for 循环遍历数组
    // 在循环中:
    //   将每个元素加到 sum 中
    //   将每个元素与 max 比较,如果更大,就更新 max
    //   将每个元素与 min 比较,如果更小,就更新 min
    // 循环结束后,计算 average = sum / size
    

    double* newArr = new double[4];
    newArr[0] = sum;
    newArr[1] = average;
    newArr[2] = max;
    newArr[3] = min;

    return newArr;
}

int main() {
    int n;

    std::cin >> n;
    std::cin.ignore();
    double arr[n];

    for (int i = 0; i < n; i++) {
        double val;
        std::cin >> val;
        arr[i] = val;
    }

    double* stats = calculateStats(arr, n);
    std::cout << "Sum: " << stats[0] << std::endl;
    std::cout << "Average: " << stats[1] << std::endl;
    std::cout << "Maximum: " << stats[2] << std::endl;
    std::cout << "Minimum: " << stats[3] << std::endl;
    delete[] stats;
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: C++ 在线编译器