交换两个数的方法

示例代码如下:

 1 #include <iostream>
 2 using  namespace std;
 3 
 4 /*
 5  * 指针法(中间变量1)
 6  */
 7 void swap1(int *pa, int *pb)
 8 {
 9     int temp = *pa;
10     *pa = *pb;
11     *pb = temp;
12 }
13 
14 /*
15  * 引用法(中间变量2)
16  */
17 void swap2(int &ra, int &rb)
18 {
19     int temp = ra;
20     ra = rb;
21     rb = temp;
22 }
23 
24 /*
25  * 相互加减法
26  */
27 void swap3(int &a, int &b)
28 {
29     a = a + b;  // 可能会溢出
30     b = a - b;
31     a = a - b;
32 }
33 
34 /*
35  * 异或法
36  */
37 void swap4(int &a, int &b)
38 {
39     a ^= b;
40     b ^= a;
41     a ^= b;
42 }
43 
44 void print(int &a, int &b)
45 {
46     cout <<"a = "<< a << "  " <<"b = "<< b << endl;
47 }
48 
49 void main(int argc, char* argv[])
50 {
51     int a =100, b = 200;
52     print(a, b);
53     // 指针法(中间变量1)
54     swap1(&a, &b);
55     print(a, b);
56     // 引用法(中间变量2)
57     swap2(a, b);
58     print(a, b);
59     // 相互加减法
60     swap3(a, b);
61     print(a, b);
62     // 异或法
63     swap4(a, b);
64     print(a, b);
65 
66     system("pause");
67 }
68 
69 // run out:
70 /*
71 a = 100  b = 200
72 a = 200  b = 100
73 a = 100  b = 200
74 a = 200  b = 100
75 a = 100  b = 200
76 请按任意键继续. . .
77 */

以上四种交换方法,各有利弊。

Good Good Study, Day Day Up.

顺序  选择  循环  坚持

 

作者:kaizen
声明:本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此声明,且在文章明显位置给出本文链接,否则保留追究法律责任的权利。
签名:顺序 选择 循环
原文地址:https://www.cnblogs.com/Braveliu/p/2847447.html