📅  最后修改于: 2023-12-03 15:00:12.484000             🧑  作者: Mango
问题5是C测验104中的一个问题,旨在测试C编程语言中关于数组的基础知识。该问题要求编写一个函数,将一个整型数组中的所有元素逆序存储。该函数会修改传入的数组,并不返回任何值。
编写一个函数 reverse_array
,接受以下参数:
arr
:一个整型数组size
:数组的长度要求将数组中的所有元素逆序存储,即第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,以此类推。函数应该在原地修改数组,不需要返回任何值。
void reverse_array(int arr[], int size);
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original Array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
reverse_array(arr, size);
printf("Reversed Array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
问题5的实现思路比较简单,可以使用两个指针分别指向数组的首元素和尾元素,然后分别向中心移动,交换两个指针指向的元素,直到两个指针相遇。
start
和 end
,分别指向数组的首元素和尾元素。start
小于 end
时执行以下步骤:start
和 end
指向的元素。start
向后移动一位。end
向前移动一位。void reverse_array(int arr[], int size) {
int start = 0;
int end = size - 1;
while (start < end) {
// 交换 start 和 end 指向的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// 移动指针
start++;
end--;
}
}
Original Array: 1 2 3 4 5
Reversed Array: 5 4 3 2 1
以上是对C测验104中问题5的介绍,希望能对你理解和掌握C语言中关于数组逆序存储的基础知识有所帮助。