1 //交换算法
2
3 #include "swap.h"
4 #include <stdio.h>
5 #include <iostream>
6
7
8 using namespace std;
9 #define swap_m(x,y,t) ((t)=(x),(x)=(y),(y)=(t)) // #define后面不要加 分号;
10 void swap(int x,int y);
11 void swap_p(int *px,int *py);
12 void swap_r(int &rx,int &ry);
13
14 int main()
15 {
16 int a,b,temp;
17 a=1;
18 b=10;
19 printf("交换前:a=%d,b=%d\n\n\n",a,b);
20
21 //方法1
22 printf("通过临时变量交换---->完成值传递交换\n");
23 temp=a;
24 a=b;
25 b=temp;
26 printf("交换后:a=%d,b=%d\n\n\n",a,b);
27
28 //方法2
29 a=1;
30 b=10;
31 swap(a,b);
32 printf("交换后:a=%d,b=%d\n\n\n",a,b);
33
34 //方法3
35 a=1;
36 b=10;
37 swap_p(&a,&b);//不要忘记&符号
38 printf("交换后:a=%d,b=%d\n\n\n",a,b);
39
40 //方法4
41 printf("通过define宏交换---->完成值传递交换\n");
42 a=1;
43 b=10;
44 swap_m(a,b,temp);
45 printf("交换后:a=%d,b=%d\n\n\n",a,b);
46
47
48 //方法5 printf("通过引用交换----->完成实参交换\n\n\n");
49 a=1;
50 b=10;
51 swap_r(a,b);
52 printf("交换后:a=%d,b=%d\n\n\n",a,b);
53
54 //方法6
55 printf("实用C++模板\n");
56 a=1;
57 b=10;
58 std::swap(a,b);
59 printf("交换后:a=%d,b=%d\n\n\n",a,b);
60
61 printf("hello world...\n");
62 system("pause");
63 return 0;
64 }
65
66 //默认按值传递,所以只会传a,b的拷贝,不会修改a,b本身
67 void swap(int x,int y)
68 {
69 int temp;
70 temp = x;
71 x = y;
72 y =temp;
73 printf("拷贝---->完成值传递交换\n");
74 }
75
76
77 //指针也是值传递,只不过形参和实参指向的都是同一个内存地址,所以才能够修改实参的值...记住了哦
78 void swap_p(int *px,int *py)
79 {
80 int temp;
81 temp = *px;
82 *px = *py;
83 *py = temp;
84 printf("指针---->完成值传递交换\n");
85 }
86
87
88 //引用,可以直接修改实参的数据
89 void swap_r(int &rx,int &ry)
90 {
91
92 int temp;
93 temp=rx;
94 rx = ry;
95 ry=temp;
96 printf("引用---->可以直接修改实参的数据\n");
97
98
99 return;
100 }