方法一:传统 使用第三个变量进行交换 #include <stdio.h> int main(){ int a=0,b=0; printf("a=%d,b=%d\n",a,b); printf("正在交换ab两个数的值,请等待-----\n"); int temp; temp=a; a=b; b=temp; printf("交换成功:a=%d,b=%d\n nice!!\n",a,b);
return 0; }
方法二 只用两个变量 (减法)
#include <stdio.h> int main(){ int a=8,b=10; 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; }
总结:凡是互为逆运算的都可以实现
比如:
#include <stdio.h> int main(){ int a=8,b=10; 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; }
以下这两个方法: 按位或,按位异或,这个有点问题,有时候不准,(如果两个变量是8和10 ,,交换后两变量的值不对,但是若两个变量的值是15和18就可以)还不知道问题在哪,有待思考
#include <stdio.h> int main(){ int a=8,b=10; 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; }
#include <stdio.h> int main(){ int a=8,b=10; 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; }
|