1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。
参考代码:
方法1:
int a=2,b=3,t
t=a//先将a存储到临时变量t中
a=b//将b存储到a中
b=t//将临时变量中的原a值存储到b中
printf("a=%d b=%d\n", a,b )
方法2:
int a=2,b=3,t
a += b //把两数之和存到a中
b= a-b //用两数和减去b可得原a,存储到b中
a= a-b //因为b现在是原a值,所以,用两数和减去b(原a)可得 原b,存储到a中
此方法,还可以用异或运算来实现,原理相同。
方法一:三变量交换。
#include<stdio.h>int main(void)
{
int a,b
scanf("%d%d",&a,&b)
int t=aa=bb=t
printf("%d %d\n",a,b)
return 0
}
方法二:加减交换
#include<stdio.h>int main(void)
{
int a,b
scanf("%d%d",&a,&b)
a=a+b
b=a-b
a=a-b
printf("%d %d\n",a,b)
return 0
}
方法三:异或交换
#include<stdio.h>int main(void)
{
int a,b
scanf("%d%d",&a,&b)
a=a^bb=b^aa=a^b//可写成a^=b^=a^=b
printf("%d %d\n",a,b)
return 0
}
方法四(黑盒测试下):不交换
#include<stdio.h>int main(void)
{
int a,b
scanf("%d%d",&a,&b)
printf("%d %d\n",b,a)
return 0
}