MST

星途 面试题库

面试题:C语言多维数组下标访问的复杂操作

给定一个三维数组 `int cube[2][3][4];`,用随机数填充该三维数组(范围1 - 100)。然后编写一个函数,该函数接收这个三维数组及其每一维的大小作为参数,通过下标访问数组元素,找出数组中所有能被3整除且大于50的元素,并将它们按从大到小的顺序存储在一个新的一维数组中返回,同时返回这个新数组的大小。
45.7万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>

// 用随机数填充三维数组
void fillCube(int cube[][3][4], int size1, int size2, int size3) {
    srand(static_cast<unsigned int>(time(nullptr)));
    for (int i = 0; i < size1; ++i) {
        for (int j = 0; j < size2; ++j) {
            for (int k = 0; k < size3; ++k) {
                cube[i][j][k] = rand() % 100 + 1;
            }
        }
    }
}

// 找出符合条件的元素并排序
std::pair<int*, int> findAndSort(int cube[][3][4], int size1, int size2, int size3) {
    int count = 0;
    // 计算符合条件元素的数量
    for (int i = 0; i < size1; ++i) {
        for (int j = 0; j < size2; ++j) {
            for (int k = 0; k < size3; ++k) {
                if (cube[i][j][k] > 50 && cube[i][j][k] % 3 == 0) {
                    ++count;
                }
            }
        }
    }
    int* result = new int[count];
    int index = 0;
    // 填充符合条件的元素到新数组
    for (int i = 0; i < size1; ++i) {
        for (int j = 0; j < size2; ++j) {
            for (int k = 0; k < size3; ++k) {
                if (cube[i][j][k] > 50 && cube[i][j][k] % 3 == 0) {
                    result[index++] = cube[i][j][k];
                }
            }
        }
    }
    // 从大到小排序
    std::sort(result, result + count, [](int a, int b) { return a > b; });

    return {result, count};
}

int main() {
    int cube[2][3][4];
    fillCube(cube, 2, 3, 4);

    auto [result, size] = findAndSort(cube, 2, 3, 4);

    std::cout << "符合条件的元素(从大到小): ";
    for (int i = 0; i < size; ++i) {
        std::cout << result[i] << " ";
    }
    std::cout << std::endl;

    delete[] result;
    return 0;
}

上述代码包含以下几个部分:

  1. 填充函数 fillCube:使用随机数填充三维数组,随机数范围是1到100。
  2. 查找和排序函数 findAndSort:接收三维数组及其每一维大小作为参数,找出能被3整除且大于50的元素,将它们按从大到小顺序存储在新的一维数组中,并返回新数组及其大小。
  3. 主函数 main:测试上述功能,打印出符合条件的元素。