📜  C测验– 104 |问题5(1)

📅  最后修改于: 2023-12-03 15:00:12.484000             🧑  作者: Mango

C测验– 104 | 问题5

简介

问题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的实现思路比较简单,可以使用两个指针分别指向数组的首元素和尾元素,然后分别向中心移动,交换两个指针指向的元素,直到两个指针相遇。

构思步骤
  1. 定义两个指针 startend,分别指向数组的首元素和尾元素。
  2. 使用一个循环,当 start 小于 end 时执行以下步骤:
    • 交换 startend 指向的元素。
    • 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语言中关于数组逆序存储的基础知识有所帮助。