本帖最后由 godlike 于 2014-5-14 13:57 编辑
学习任何语言基础时,两个数值得交换是必须掌握的,下面是3种不同的方式(c语言) 方法一:利用数学的计算技巧 - #include <stdio.h>
- int main()
- {
-
- int a =10, b = 20;
-
- printf("交换前a=%d, b=%d\n", a, b);
-
- a = a - b;
- b = a + b;
- a = b - a;
-
- printf("交换后a=%d, b=%d\n", a, b);
-
- return 0;
- }
复制代码
这种方法的写法不唯一,对于a,b;只要先给其中一个先赋予a-b,其他的自己算一下就能写出来; 方法二:第三方变量,也是最常用,可读性最好的 - #include <stdlib.h>
- #include <stdio.h>
- int main()
- {
- int a =10, b = 20;
- printf("交换前a=%d, b=%d\n", a, b);
-
- int temp = a;//先定义一个临时变量
- a = b;
- b = temp;
-
- printf("交换后a=%d, b=%d\n", a, b);
-
- return 0;
- }
复制代码
方法三:位运算,利用^异或运算的特点:a^b^a = a^a^b = 0^b = b,交换律,相同数值异或为0,0和任何数异或为任何数 - #include <stdio.h>
- int main()
- {
- int a =10, b = 20;
- printf("交换前a=%d, b=%d\n", a, b);
-
- a = a^b;
- b = b^a;
- a = a^b;
-
- printf("交换后a=%d, b=%d\n", a, b);
-
- return 0;
- }
复制代码
|