将数组A中的内容和数组B中的内容进行交换。(数组一样大)

问题描述:

将数组A中的内容和数组B中的内容进行交换。(数组一样大)

问题分析:

数组内容交换实质上与两个数进行交换一样,方法可以用很多种,这里我只用两种办法来解决这类问题,其他方法可参考之前写的博客,这里将链接附上:

https://blog.csdn.net/lexiaoyao_0000/article/details/90116017

方法一:采用中间变量法

tmp = a[i];

a[i] = b[i];

b[i] = a[i];

方法二:采用异或法(不使用中间变量)

a[i] ^=b[i];

b[i] ^= a[i];

a[i] ^= b[i]; 

源代码:

方法一:中间变量法

#include <stdio.h>
#include <windows.h>


int main()//中间变量法
{
	int i = 0;
	int j = 0;
	int a[5] = { 1, 2, 3, 4, 5 };
	int b[5] = { 6, 7, 8, 9, 0 };
	printf("交换前a[5]:\n");
	for (i; i < 5; i++)//交换前
	{
		printf("%d   ", a[i]);
	}
	printf("\n");
	printf("交换前b[5]:\n");
	for (j; j < 5; j++)
	{
		printf("%d   ", b[j]);
	}
	printf("\n");
	for (i = 0; i < 5; i++)//交换中
	{
		int tmp = a[i];
		a[i] = b[i];
		b[i] = tmp;
	}
	printf("交换后a[5]:\n");
	for (i=0; i < 5; i++)//交换后
	{
		printf("%d   ", a[i]);
	}
	printf("\n");
	printf("交换后b[5]:\n");
	for (j=0; j < 5; j++)
	{
		printf("%d   ", b[j]);
	}
	printf("\n");
	system("pause");
	return 0;
}

方法二:异或法

#include <stdio.h>
#include <windows.h>


int main()//异或法
{
	int i = 0;
	int j = 0;
	int a[5] = { 1, 2, 3, 4, 5 };
	int b[5] = { 6, 7, 8, 9, 0 };
	printf("交换前a[5]:\n");
	for (i; i < 5; i++)//交换前
	{
		printf("%d   ", a[i]);
	}
	printf("\n");
	printf("交换前b[5]:\n");
	for (j; j < 5; j++)
	{
		printf("%d   ", b[j]);
	}
	printf("\n");
	for (i = 0; i < 5; i++)//交换中
	{
		a[i] ^= b[i];
		b[i] ^= a[i];
		a[i] ^= b[i];
	}
	printf("交换后a[5]:\n");
	for (i=0; i < 5; i++)//交换后
	{
		printf("%d   ", a[i]);
	}
	printf("\n");
	printf("交换后b[5]:\n");
	for (j=0; j < 5; j++)
	{
		printf("%d   ", b[j]);
	}
	printf("\n");
	system("pause");
	return 0;
}

别看代码很长,只是为了格式好看,核心代码只有“交换中”那几行代码。 

运行结果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值