如何实现一个int型函数来逆序存储一个整数数组,例如输入数组 [8, 6, 5, 4, 1],并返回逆序后的新数组,即 [1, 4, 5, 6, 8]?
时间: 2024-12-11 07:34:51 浏览: 1
要实现一个 C 语言函数来逆序存储一个整数数组,你可以定义一个接受整数数组、其长度以及指向结果数组的指针的函数。下面是一个示例:
```c
#include <stdio.h>
// 函数声明
void reverseArray(int arr[], int len, int result[], int *result_len);
// 主函数演示
int main() {
int input[] = {8, 6, 5, 4, 1};
int reversed[5]; // 假设最大元素数量不超过5(实际可以根据输入数组动态分配)
int inputLength = sizeof(input) / sizeof(input[0]);
// 调用逆序函数
reverseArray(input, inputLength, reversed, &inputLength);
// 输出逆序后的数组
printf("Reversed array: ");
for (int i = 0; i < inputLength; i++) {
printf("%d ", reversed[i]);
}
return 0;
}
// 逆序数组函数
void reverseArray(int arr[], int len, int result[], int *result_len) {
int temp;
*result_len = 0;
for (int i = 0; i < len / 2; i++) {
temp = arr[i];
arr[i] = arr[len - 1 - i]; // 交换元素
arr[len - 1 - i] = temp;
(*result_len)++;
}
// 将反转后的数组复制到result数组
if (result != NULL && *result_len > 0) {
for (int i = 0; i < *result_len; i++) {
result[i] = arr[i];
}
}
}
```
这个程序首先定义了一个 `reverseArray` 函数,该函数接受输入数组 `arr`、数组长度 `len` 和结果数组 `result` 的指针。然后,它遍历输入数组的一半,每次迭代都将数组两端的元素交换。同时,更新 `result_len` 参数记录已放置在新数组中的元素数量。
主函数展示了如何调用 `reverseArray` 并输出逆序后的数组。如果你希望逆序操作直接在原数组上进行,无需额外的结果数组,只需去掉 `reversed` 和 `result_len` 参数即可。
阅读全文