一、思路
1)个人思路:初步分析,可以使用差值来进行互换。
2)更优思路:此题可使用按位异或操作符解决。
二、代码实现
a、个人思路实现如下:
#include<stdio.h>
int main()
{
int a=0;
int b=0;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("a=%d b=%d\n",a,b);
a=a-b;
b=b+a;
a=b-a;
printf("a=%d b=%d\n",a,b);
}
return 0;
}
b、更优思路实现如下:
#include<stdio.h>
int main()
{
int a=0;
int b=0;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("a=%d b=%d\n",a,b);
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
}
return 0;
}
三、个人思路的优缺点
难度:简单
个人代码的优点与缺点:
优点:相对于异或,利用差值实现交换比较容易理解。
缺点:相比于异或,如果输入两个较大值容易出现溢出,最终导致交换后结果不对,然而使用按位异或就不会出现此问题。