一、中间变量法(入门)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;//交换a,b的值
scanf("%d%d",&a,&b);
c=a;//把a的值保存在c中
a=b;
b=c;
printf("%d %d",a,b);//依次输出经交换后a,b的值
return 0;
}
此方法会浪费c的储存空间,故而小编不予推荐。
二、按位异或法(进阶)
我们先来介绍一下什么是按位异或。
异或,英文为exclusive OR,缩写成xor
异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。(以上内容引自百度百科)
这里,我们使用了按位异或的自反性对a,b的值进行了交换 :即a ⊕ b ⊕ a=b.
下面我们展示出具体的代码实现:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;//交换a,b的值
scanf("%d%d",&a,&b);
a=a^b;
b=a^b;
a=a^b;
printf("%d %d",a,b);//依次输出经交换后a,b的值
return 0;
}
. 此方法不用额外引入中间变量,效率更高。
(注意:浮点数不能进行异或运算!)
如果看官们觉得以上的内容有所帮助的话,欢迎联系小编~