面试题答案
一键面试#include <stdio.h>
// 定义对数组元素进行操作的函数
void multiplyByTwo(int *num) {
*num *= 2;
}
// 接受函数指针的函数,对数组每个元素进行操作
void processArray(int arr[], int size, void (*operation)(int *)) {
for (int i = 0; i < size; i++) {
operation(&arr[i]);
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
processArray(arr, size, multiplyByTwo);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
#include <iostream>
#include <vector>
// 定义对数组元素进行操作的函数
void multiplyByTwo(int &num) {
num *= 2;
}
// 接受函数指针的函数,对数组每个元素进行操作
void processArray(std::vector<int>& arr, void (*operation)(int&)) {
for (auto& num : arr) {
operation(num);
}
}
int main() {
std::vector<int> arr = {1, 2, 3, 4, 5};
processArray(arr, multiplyByTwo);
for (int num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
def multiplyByTwo(num):
return num * 2
def processArray(arr, operation):
return list(map(operation, arr))
if __name__ == "__main__":
arr = [1, 2, 3, 4, 5]
result = processArray(arr, multiplyByTwo)
print(result)
以上分别为C、C++、Python语言实现,通过函数指针或类似机制,对数组每个元素执行指定操作并输出结果。
- C语言:
- 定义
multiplyByTwo
函数对单个整数乘以2。 processArray
函数接受数组、数组大小和函数指针,遍历数组调用指定函数。main
函数定义数组,调用processArray
处理数组并输出。
- 定义
- C++语言:
multiplyByTwo
函数对整数引用乘以2。processArray
函数接受std::vector
和函数指针,使用范围遍历调用指定函数。main
函数定义std::vector
,调用processArray
处理并输出。
- Python语言:
multiplyByTwo
函数返回整数乘以2的结果。processArray
函数使用map
函数对列表元素应用指定函数并返回新列表。if __name__ == "__main__"
块中定义列表,调用processArray
处理并输出。