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

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

C测验– 102 | 问题5

简介

本篇是《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};
实现步骤

为了解决这个问题,你可以使用两个指针,分别指向数组的开头和结尾。通过交换指针所指向的元素,然后移动指针,来实现数组倒置。

以下是一个可能的实现步骤:

  1. 创建两个指针 startend,分别指向数组的首元素和尾元素;
  2. 使用一个循环,当 start <= end 时进行迭代;
  3. 在循环中,交换 startend 指针所指向的元素,并使用递增和递减操作向前移动指针;
  4. 继续循环直到 start > end
  5. 完成数组倒置。

以下是一个可能的代码实现:

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》系列。