交換兩個數是在編程中經常會用到的,當然我們可以用很常見的方式來實現,也可以各種稀奇古怪的方法來做。這裡我們用三種比較常規的方式來做,太過古怪的方法個人覺得沒有太大必要。實例代碼上傳至:https://github.com/chenyufeng1991/SwapFunction
(1)使用指針
實現如下:
// // main.c // SwapFunc // // Created by chenyufeng on 16/2/3. // Copyright © 2016年 chenyufengweb. All rights reserved. // #include(2)不借用第三個數void swap01(int *a,int *b); int main(int argc, const char * argv[]) { int a = 1; int b = 2; printf("交換前:a = %d,b = %d\n",a,b); swap01(&a, &b); printf("交換後:a = %d,b = %d\n",a,b); return 0; } //最常規的交換; void swap01(int *a,int *b){ int temp; temp = *a; *a = *b; *b = temp; }
// // main.c // SwapFunc // // Created by chenyufeng on 16/2/3. // Copyright © 2016年 chenyufengweb. All rights reserved. // #includevoid swap02(int *a,int *b); int main(int argc, const char * argv[]) { int a = 1; int b = 2; printf("交換前:a = %d,b = %d\n",a,b); swap02(&a, &b); printf("交換後:a = %d,b = %d\n",a,b); return 0; } //不用第三個數; void swap02(int *a,int *b){ *a = *a + *b; *b = *a - *b; *a = *a - *b; }
(3)異或
// // main.c // SwapFunc // // Created by chenyufeng on 16/2/3. // Copyright © 2016年 chenyufengweb. All rights reserved. // #include上面三種實現大家應該是應該閉著眼睛都能寫出來的,也是能夠完全理解的。/** * 由於我這裡用的是C語言,所以不能使用引用。C++中可以使用引用。 引用的函數定義: void swap04(int &a,int &b){ ... } */ void swap03(int *a,int *b); int main(int argc, const char * argv[]) { int a = 1; int b = 2; printf("交換前:a = %d,b = %d\n",a,b); swap03(&a, &b); printf("交換後:a = %d,b = %d\n",a,b); return 0; } //異或,使用二進制位進行計算; void swap03(int *a,int *b){ *a = *a ^ *b; *b = *b ^ *a; *a = *a ^ *b; }