本示例使用 C 语言函数实现数组折半交换,通过指针操作完成元素位置交换。首先定义一个指针指向数组,并将其指向数组的中间位置。然后使用两个指针,一个指向数组的第一个元素,另一个指向中间位置指针,依次交换它们的值,直到指针指向数组的最后一个元素。

参考代码:

#include <stdio.h>

void fun(int *p, int n) {
    int *q = p;
    int *r = p + n / 2;
    int temp;
    while (r < p + n) {
        temp = *q;
        *q = *r;
        *r = temp;
        q++;
        r++;
    }
}

int main() {
    int a[10], n;
    int *p = a;
    printf("请输入数组大小 n:");
    scanf("%d", &n);
    printf("请输入 %d 个数组元素:", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    fun(p, n);
    printf("交换后的数组为:");
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}

代码解析:

  1. fun(int *p, int n) 函数:

    • p 指向数组的第一个元素。
    • n 是数组的大小。
    • 函数内部使用两个指针 qr,分别指向数组的开头和中间位置。
    • 使用循环交换 qr 指针所指向的元素,直到 r 指针指向数组的最后一个元素。
  2. main 函数:

    • 定义数组 a 和变量 n,以及指向数组的指针 p
    • 从用户输入数组大小和元素。
    • 调用 fun 函数进行数组折半交换。
    • 输出交换后的数组。

示例输入:

5
1 2 3 4 5

示例输出:

5 4 3 2 1

说明:

本示例代码仅供参考,可根据具体需求进行修改。例如,可以将 fun 函数改成返回交换后的数组,或者使用其他方法实现折半交换。

C语言实现数组折半交换:指针应用示例

原文地址: https://www.cveoy.top/t/topic/odzM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录