交换两个数组的内容,也就是将两个数组内的各个元素对应交换,可以将两个数组一一遍历,如果下标相等,则交换,否则不交换,具体代码实现如下
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
int main()
{
int arr1[] = { 1,3,4 };
int arr2[] = { 2,5,6 };
int i = 0;
int j = 0;
int n = 0;
int m = 0;
for (i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++) //数组1
{
for (j = 0; j < sizeof(arr2) / sizeof(arr2[0]); j++) //数组2
{
if (i == j) //判断两个数组下标是否相等,若相等则交换
{
arr1[i] = arr1[i] ^ arr2[j];
arr2[j] = arr1[i] ^ arr2[j];
arr1[i] = arr1[i] ^ arr2[j];
}
}
}
printf("arr1[]=");
for (m = 0; m < sizeof(arr1) / sizeof(arr1[0]); m++) //打印输出第一个数组
{
printf("%d ", arr1[m]);
}
printf("\narr2[]=");
for (n = 0; n < sizeof(arr2) / sizeof(arr2[0]); n++) //打印输出第二个数组
{
printf("%d ", arr2[n]);
}
system("pause");
return 0;
}
{
int arr1[] = { 1,3,4 };
int arr2[] = { 2,5,6 };
int i = 0;
int j = 0;
int n = 0;
int m = 0;
for (i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++) //数组1
{
for (j = 0; j < sizeof(arr2) / sizeof(arr2[0]); j++) //数组2
{
if (i == j) //判断两个数组下标是否相等,若相等则交换
{
arr1[i] = arr1[i] ^ arr2[j];
arr2[j] = arr1[i] ^ arr2[j];
arr1[i] = arr1[i] ^ arr2[j];
}
}
}
printf("arr1[]=");
for (m = 0; m < sizeof(arr1) / sizeof(arr1[0]); m++) //打印输出第一个数组
{
printf("%d ", arr1[m]);
}
printf("\narr2[]=");
for (n = 0; n < sizeof(arr2) / sizeof(arr2[0]); n++) //打印输出第二个数组
{
printf("%d ", arr2[n]);
}
system("pause");
return 0;
}
下面是对上面的代码做了一点点优化,即使用一个循环,数组的下标都是i时进行交换,这样就确保了当数组下标一样时交换元素,具体实现代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr1[] = { 1, 2, 3, 4, 5 };
int arr2[] = { 6, 7, 8, 9, 10 };
int tmp = 0; //用于元素交换的中间变量
int i = 0;
int j = 0;
int size = sizeof(arr1) / sizeof(arr1[0]);
for (i = 0; i < size; i++)
{
tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
for (i = 0; i < size; i++) //输出打印交换后的数组1
{
printf("%d ", arr1[i]);
}
printf("\n");
for (j = 0; j < size; j++) //输出打印交换后的数组2
{
printf("%d ", arr2[j]);
}
system("pause");
return 0;
}
{
int arr1[] = { 1, 2, 3, 4, 5 };
int arr2[] = { 6, 7, 8, 9, 10 };
int tmp = 0; //用于元素交换的中间变量
int i = 0;
int j = 0;
int size = sizeof(arr1) / sizeof(arr1[0]);
for (i = 0; i < size; i++)
{
tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
for (i = 0; i < size; i++) //输出打印交换后的数组1
{
printf("%d ", arr1[i]);
}
printf("\n");
for (j = 0; j < size; j++) //输出打印交换后的数组2
{
printf("%d ", arr2[j]);
}
system("pause");
return 0;
}