面试题答案
一键面试#include <iostream>
// 函数声明
double calculateAverage(int (*cube)[3][4], int dim1, int dim2, int dim3);
int main() {
int cube[2][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};
double average = calculateAverage(cube, 2, 3, 4);
std::cout << "平均值: " << average << std::endl;
return 0;
}
// 函数定义
double calculateAverage(int (*cube)[3][4], int dim1, int dim2, int dim3) {
int sum = 0;
int totalElements = dim1 * dim2 * dim3;
// 遍历三维数组
for (int i = 0; i < dim1; ++i) {
for (int j = 0; j < dim2; ++j) {
for (int k = 0; k < dim3; ++k) {
sum += cube[i][j][k];
}
}
}
return static_cast<double>(sum) / totalElements;
}
- 函数声明部分:
double calculateAverage(int (*cube)[3][4], int dim1, int dim2, int dim3);
:声明了一个函数calculateAverage
,它接受一个指向三维数组int [3][4]
的指针cube
,以及三个表示数组各维度大小的整数dim1
、dim2
、dim3
,返回值类型为double
,即平均值。
main
函数部分:- 定义了一个三维数组
cube
并初始化。 - 调用
calculateAverage
函数计算平均值,并输出结果。
- 定义了一个三维数组
- 函数定义部分:
double calculateAverage(int (*cube)[3][4], int dim1, int dim2, int dim3)
:函数实现。int sum = 0;
:用于累加数组元素的值。int totalElements = dim1 * dim2 * dim3;
:计算数组元素的总数。- 通过三层嵌套循环遍历三维数组,累加每个元素的值到
sum
中。 - 最后返回
sum
除以元素总数的结果,转换为double
类型。
在C++中,三维数组在内存中是按行优先顺序存储的,这意味着最内层的维度(这里是4
)先变化,然后是中间层维度(这里是3
),最外层维度(这里是2
)最后变化。上述代码通过指针和循环正确地处理了这种内存布局来计算平均值。