語句實現方法】
方法1:不使用中間變數
●利用位運算子
a = a^b; b = a^b; a = a^b; → a^= b^ = a^ = b;(不用考慮越界問題)
【解釋】: 對於a^a =0, a^0 =a
a = a^b
b = a^b =( a^b) ^b =a^(b ^b) = a^0 = a(交換律)
a = a^b = (a^b) ^a = a^a^b = b; (結合律,並且有a = a^b,a = b)
●不使用位運算子
a= a + b; b = a - b;a = a – b; (需要考慮越界問題)
方法2:使用中間變數
temp= a; a = b; b = temp;
【巨集定義方法】
方法1:
#define swap(a,b) \
a= a^b;\
b= a^b;\
a= a^b;
方法2:
#define swap(a,b) \
a= a + b ;\
b= a - b;\
a= a - b;
【函式實現方法】
方法1:利用指標
intswap(int *p,int*q)
int temp;
temp = *p;
*p = *q;
*q = temp;
方法2:利用引用
intswap(int &a,int&b)
int temp;
temp = a;
a = b;
b = temp;
交換兩個數
問題 如果要求不使用臨時變數,應該如何交換兩個變數的值?解決這個題的方式有好幾種,第一種當然就是使用系統自帶的swap 函式了。不過,這種抖機靈的做法一般人很難欣賞,而且說不定它內部實現使用了臨時變數也說不定 這是使用臨時變數的做法,也是我們在c語言中常用的做法 func swap1 a inout...
兩個數交換值得實現
include using namespace std void f int m,int n void fun int m,int n int main 第乙個交換函式是利用的指標的方式,用這種方式直接從位址層面講原本a的位址指向了b,b的位址指向了a,從而實現了兩個數的交換 第二種方式是利用引用的...
兩個數的交換
一般思路 建立乙個臨時變數,以這個臨時變數為中間變數,利用賦值來完成兩個數的內容的相互交換。如下 include int main 優化方案 1.上述方法中需要另外建立乙個變數,略微有些麻煩,若是要求不能建立臨時變數,則可以採用數學上的加法來進行一些變通。如下 include int main 2....