MST

星途 面试题库

面试题:C语言指针表达式与函数指针的复杂应用

编写一个函数 `void operate(int *arr, int size, int (*func)(int))`,其中 `func` 是一个函数指针,该函数接受一个 `int` 类型参数并返回 `int` 类型值。`operate` 函数需要对 `arr` 数组的每个元素应用 `func` 函数,并将结果保存在原数组位置。另外,实现两个 `func` 类型的函数,一个是求平方 `int square(int num)`,另一个是求立方 `int cube(int num)`。在 `main` 函数中初始化一个 `int` 数组,并分别调用 `operate` 函数,使用 `square` 和 `cube` 函数对数组元素进行操作并输出结果。
27.7万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 求平方函数
int square(int num) {
    return num * num;
}

// 求立方函数
int cube(int num) {
    return num * num * num;
}

// 操作数组函数
void operate(int *arr, int size, int (*func)(int)) {
    for (int i = 0; i < size; i++) {
        arr[i] = func(arr[i]);
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);

    // 使用square函数操作数组
    operate(arr, size, square);
    printf("使用square函数操作后的数组: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    // 重新初始化数组
    int arr2[] = {1, 2, 3, 4, 5};
    operate(arr2, size, cube);
    printf("使用cube函数操作后的数组: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr2[i]);
    }
    printf("\n");

    return 0;
}