C语言 输入一个数组,长度为n,编写一个fun函数,要求如果输入n=1,使这个数组的每个元素变成原来的平方,如果输入n=2,使这个数组的每个元素变成原来的立方,使用指针作fun函数的参数,这个函数指针指向平方函数或立方函数
时间: 2023-06-26 08:05:20 浏览: 94
下面是一个可能的解法:
```c
#include <stdio.h>
void square(int *arr, int n) {
for (int i = 0; i < n; i++) {
arr[i] = arr[i] * arr[i];
}
}
void cube(int *arr, int n) {
for (int i = 0; i < n; i++) {
arr[i] = arr[i] * arr[i] * arr[i];
}
}
void fun(int *arr, int n, void (*f)(int *, int)) {
(*f)(arr, n);
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printf("Original array: ");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
fun(arr, 1, square);
printf("Squared array: ");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
fun(arr, 2, cube);
printf("Cubed array: ");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序定义了两个函数 `square` 和 `cube`,分别用于计算数组元素的平方和立方。然后定义了一个 `fun` 函数,这个函数接收一个指向整型数组的指针 `arr`,一个整数 `n`,以及一个函数指针 `f`,这个函数指针指向一个参数为整型数组指针和整数的函数。`fun` 函数的作用是将指向的整型数组 `arr` 中的元素传递给函数指针 `f` 指向的函数进行处理。
在 `main` 函数中,我们先打印出原始的数组,然后分别调用 `fun` 函数,将 `n` 分别设置为 1 和 2,以及不同的函数指针 `square` 和 `cube`,来计算数组中元素的平方和立方。最后再次打印出处理后的数组。
需要注意的是,在调用函数指针时,需要使用 `(*f)(arr, n)` 的形式来调用函数,而不能使用 `f(arr, n)`,因为函数指针不是函数本身,而是指向函数的指针。
阅读全文