C语言实现数组折半交换:指针应用示例
本示例使用 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;
}
代码解析:
-
fun(int *p, int n)函数:p指向数组的第一个元素。n是数组的大小。- 函数内部使用两个指针
q和r,分别指向数组的开头和中间位置。 - 使用循环交换
q和r指针所指向的元素,直到r指针指向数组的最后一个元素。
-
main函数:- 定义数组
a和变量n,以及指向数组的指针p。 - 从用户输入数组大小和元素。
- 调用
fun函数进行数组折半交换。 - 输出交换后的数组。
- 定义数组
示例输入:
5
1 2 3 4 5
示例输出:
5 4 3 2 1
说明:
本示例代码仅供参考,可根据具体需求进行修改。例如,可以将 fun 函数改成返回交换后的数组,或者使用其他方法实现折半交换。
原文地址: https://www.cveoy.top/t/topic/odzM 著作权归作者所有。请勿转载和采集!