#include <stdio.h>
void reverseArray(int arr[], int size) {
int temp; //保存中间值
int start = 0; // 开始索引
int end = size - 1; // 结束索引
// 使用两个指针,一个从头开始,一个从尾开始,交换元素直到相遇
while (start < end) {
// 保存开始索引处的值
temp = arr[start];
// 将结束索引处的值放到开始索引处
arr[start] = arr[end];
// 将保存的开始索引处的值放到结束索引处
arr[end] = temp;
// 移动开始和结束索引以处理下一个元素对
start++;
end--;
}
}
int main() {
int arr[5] = {8, 6, 5, 4, 1}; // 初始化数组
int i;
printf("原始数组: ");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]); // 打印原始数组的值
}
printf("\n");
reverseArray(arr, 5); // 调用逆序函数
printf("逆序后的数组: ");
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]); // 打印逆序后的数组的值
}
printf("\n");
return 0;
}
代码解释:
-
reverseArray
函数负责逆序数组。它接受一个整数数组arr
和数组的大小size
作为参数。 -
在
reverseArray
函数中,我们定义了两个指针start
和end
,分别指向数组的第一个和最后一个元素。 -
while
循环确保start
指针始终在end
指针的左边,这样我们就不会交换相同的元素或越界。 -
在循环中,我们使用一个临时变量
temp
来保存start
指针所指向的元素的值,然后将end
指针所指向的元素的值赋给start
指针所指向的位置,最后将temp
的值赋给end
指针所指向的位置,这样就完成了两个元素的交换。 -
在每次交换后,
start
指针向右移动一个位置,end
指针向左移动一个位置,直到start
不再小于end
。 -
在
main
函数中,我们初始化了一个包含5个元素的数组arr
,并打印其原始值。 -
调用
reverseArray
函数来逆序数组。 -
再次遍历数组并打印逆序后的值。
运行结果如下: