面试题答案
一键面试#include <iostream>
// 计算满足条件的元素之和
int sumElements(int (*cube)[3][4]) {
int sum = 0;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 4; ++k) {
if ((i + j + k) % 2 == 0 && cube[i][j][k] > 10) {
sum += cube[i][j][k];
}
}
}
}
return sum;
}
在处理多维数组下标时:
- 多维数组下标理解:多维数组可以看作是嵌套的数组结构。例如
int cube[2][3][4]
,可以理解为cube
是一个包含2个元素的数组,每个元素又是一个包含3个元素的数组,而这3个元素中的每一个又是包含4个int
类型元素的数组。从逻辑上,它构建了一个三维空间的矩阵模型。 - 使用技巧:
- 遍历:通过多层嵌套循环来访问多维数组的每一个元素。最外层循环控制最高维度的下标变化,内层循环依次控制较低维度的下标变化。例如在上述代码中,最外层
for (int i = 0; i < 2; ++i)
控制第一维度的下标i
,中间层for (int j = 0; j < 3; ++j)
控制第二维度的下标j
,最内层for (int k = 0; k < 4; ++k)
控制第三维度的下标k
。这样就可以遍历到cube
数组中的每一个元素。 - 条件判断:可以利用下标的组合来实现各种条件筛选。比如本题中利用
(i + j + k) % 2 == 0
判断三个下标的和是否为偶数,结合cube[i][j][k] > 10
筛选出满足条件的元素。
- 遍历:通过多层嵌套循环来访问多维数组的每一个元素。最外层循环控制最高维度的下标变化,内层循环依次控制较低维度的下标变化。例如在上述代码中,最外层