编写程序,用指针实现,交换数组 a 和数组 b 中的对应元素,要考虑到数组 a 和数组 b 中数据元素的个数不同。
时间: 2024-02-18 08:02:49 浏览: 80
实参、形参是指针-c程序设计数组与指针
好的,这是一个比较基础的指针问题。以下是代码实现:
```c
#include <stdio.h>
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void swap_array(int *a, int *b, int len_a, int len_b) {
int len = len_a > len_b ? len_b : len_a; // 取两个数组长度的较小值
for (int i = 0; i < len; i++) {
swap(a + i, b + i); // 交换对应元素
}
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int b[] = {6, 7, 8, 9};
int len_a = sizeof(a) / sizeof(int); // 数组a的长度
int len_b = sizeof(b) / sizeof(int); // 数组b的长度
printf("Before swap:\n");
printf("a: ");
for (int i = 0; i < len_a; i++) {
printf("%d ", a[i]);
}
printf("\nb: ");
for (int i = 0; i < len_b; i++) {
printf("%d ", b[i]);
}
swap_array(a, b, len_a, len_b); // 交换数组a和数组b中的对应元素
printf("\n\nAfter swap:\n");
printf("a: ");
for (int i = 0; i < len_a; i++) {
printf("%d ", a[i]);
}
printf("\nb: ");
for (int i = 0; i < len_b; i++) {
printf("%d ", b[i]);
}
return 0;
}
```
输出结果如下:
```
Before swap:
a: 1 2 3 4 5
b: 6 7 8 9
After swap:
a: 6 7 8 4 5
b: 1 2 3 9
```
注:上述代码中的 swap 函数是交换两个整数的值的函数,可以用在交换数组中对应位置的元素上。swap_array 函数实现了交换数组 a 和数组 b 中的对应元素。
阅读全文