请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 15:07:48
请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?
x͒JA_Ep,Ջ^#Y$FzͭV"m>]qe^ D]t53|D1f:. NU$4^I" N_$J!ĔuGp{T3>ZTk©'"sq'{5 OT#Amط5Q){.ZX :YZ| {8xCrG- ,b2h'6G ~`tnʌ1ydXVT-YN&Hbdyz7 OZ#1yf/ AZWx/$U:Kx i=ͶJ̇Ǘ:{bb@}njqZU]:1Oz`~2t:w(^;]

请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?
请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?
那实现两数交换的方法总共有几种呢?

请问C语言中:a=a-b;b=a+b;a=b-a能实现两数据的交换吗?为什么?那实现两数交换的方法总共有几种呢?
如果不借助其它中间变量,比较简单的方法有以下三个,当然假设a+b不会溢出
1.int a=5,b=10;
a=a-b;
b=a+b;
a=b-a;
printf("a=%d,b=%d\n",a,b);
2.a=5,b=10;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%d\n",a,b);
3.a=5,b=10;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d\n",a,b);
就像楼上说的:要是调用函数交换有很多,这里就无法一一列举了