常见数组操作
本课属于 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;挑战
简单创建一个名为 calculateStats 的函数,接收一个双精度浮点数数组和数组的大小作为输入,并执行以下操作:
- 计算数组中所有元素的总和。
- 计算数组中元素的平均值。
- 查找数组中的最大元素。
- 查找数组中的最小元素。
函数应返回一个双精度浮点数数组,依次包含总和、平均值、最大值和最小值。
重要说明:
- 使用
size参数控制循环:不要使用std::size()。 - 初始化
max和min时,将它们设为arr[0]。即使数组中只有负数,这样做也能正确处理。 - 预先编写的
main()代码已经使用new分配了动态数组,并使用delete[]释放它。你只需要在函数中使用new double[4]分配结果数组并返回它。注意:指针和使用new管理动态内存,会在后续单元中深入介绍。现在你只需要遵循这里展示的new double[4]模式。
建议步骤:
- 初始化
sum = 0、max = arr[0]和min = arr[0]。 - 从
i = 0循环到i < size,累加总和,并根据需要更新 max/min。 - 使用
sum / size计算平均值。 - 使用
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;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: C++ 在线编译器