交换两个长度一样的数组的内容

交换两个数组的内容,也就是将两个数组内的各个元素对应交换,可以将两个数组一一遍历,如果下标相等,则交换,否则不交换,具体代码实现如下
#include<stdio.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;
}

下面是对上面的代码做了一点点优化,即使用一个循环,数组的下标都是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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值