编写一程序,交换两个不同长度数组中的所有元素,要求使用指针完成,数组中元素个数最大为10。
时间: 2024-10-22 21:14:39 浏览: 14
为了编写一个使用指针交换两个不同长度数组元素的程序,我们可以创建两个指向各自数组首元素的指针,并在遍历过程中逐个交换它们所指向的值。这里假设我们有两个数组`arr1`和`arr2`,并且我们知道它们的最大长度都是10。
```c
#include <stdio.h>
void swapArrayElements(int* arr1, int* arr2, int len1, int len2) {
int* ptr1 = arr1;
int* ptr2 = arr2;
// 遍历较短的数组
for (int i = 0; i < min(len1, len2); ++i) {
// 交换元素
int temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
// 指向下一个元素
ptr1++;
ptr2++;
}
// 如果第一个数组较长,再将剩余部分互换
if (len1 > len2) {
while (ptr2 != arr2 + len2) {
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
ptr1++;
ptr2++;
}
} else if (len2 > len1) {
while (ptr1 != arr1 + len1) {
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
ptr1++;
ptr2++;
}
}
}
// 示例数组
int arr1[] = {1, 2, 3};
int arr2[] = {4, 5, 6, 7, 8};
int main() {
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int len2 = sizeof(arr2) / sizeof(arr2[0]);
printf("Before swapping:\n");
for (int i : arr1) {
printf("%d ", i);
}
printf("\n");
swapArrayElements(arr1, arr2, len1, len2);
printf("After swapping:\n");
for (int i : arr1) {
printf("%d ", i);
}
printf("\n");
return 0;
}
```
这个程序首先检查两个数组的长度,然后分别处理长度较小的那个。如果其中一个数组比另一个长,它会继续交换直到两个指针相遇。运行此程序后,`arr1`和`arr2`中的元素会被对调。
阅读全文