📅  最后修改于: 2023-12-03 15:00:12.444000             🧑  作者: Mango
本篇是《C测验– 102》系列的第5个问题。本系列旨在帮助程序员提升自己的C语言技能和知识。问题5旨在测试你对C语言数组的理解和使用。
给定一个具有 n 个元素的整数数组 arr,编写一个函数 reverse_array,将数组中的元素倒置存储。要求原地修改数组,不使用额外的空间。
函数原型如下:
void reverse_array(int arr[], int n);
int arr[] = {1, 2, 3, 4, 5};
int n = 5;
reverse_array(arr, n);
arr = {5, 4, 3, 2, 1};
为了解决这个问题,你可以使用两个指针,分别指向数组的开头和结尾。通过交换指针所指向的元素,然后移动指针,来实现数组倒置。
以下是一个可能的实现步骤:
start
和 end
,分别指向数组的首元素和尾元素;start
<= end
时进行迭代;start
和 end
指针所指向的元素,并使用递增和递减操作向前移动指针;start
> end
;以下是一个可能的代码实现:
void reverse_array(int arr[], int n) {
int start = 0;
int end = n - 1;
while (start <= end) {
// 交换 start 和 end 指针所指向的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
本题旨在测试你对C语言数组的操作和指针的理解。通过倒置数组中的元素,你可以更好地理解指针和数组的使用。
希望这个问题能够帮助你进一步提升你的C语言技能和知识!如果你想了解更多类似的问题,请继续关注《C测验– 102》系列。