交換兩個數的值是比較基礎也比較常用的演算法,比如在氣泡排序法中,從第一數開始比較,如後乙個數比其小則交換兩數的值。
一般在交換兩數的值是,最簡單的方法適用的方法就是用中間變數暫存乙個數。例如,要交換a,b的值,可使用中間變數c暫存其中的乙個數。
核心**如下:
c=b;
b=a;
a=b;
當然也可以不使用中間變數的方法,如以下幾種方法。
1、加法:
核心**如下:
a=a+b;
b=a-b;
a=a-b;
這種演算法先將a和b的值賦給a,之後b等於a-b,這是b的值就變成了原來的a,最後a=a-b,a的值變為原來的b.
這種方法適用於整形和浮點型的數,但是用於浮點型時可能在減法後,資料可能會出現精度損失。
2、乘法:
核心**如下:
a=a*b;
b=a/b;
a=a/b;
這個方法的基本思想和上一種加法很像,只是這個演算法在b=0時出錯,因為分子不能等於0。
3、異或法:
核心**如下:
a=a^b;
b=a^b;
a=a^b;
關於異或的演算法,簡單說就是兩數相同結果為0,兩數不同結果為1。
- 1、任何數與0異或的結果為它本身。
- 2、兩個相同的數異或的結果為0。
基於以上兩點,上述的**可以變形為:
a=a^b;
b=a^b=a^b^b=a^0=a
;a=a^b=a^b^a=b^0=b;
這樣就和容易理解了,第一步a=a^b;
的值沒有意義,這是乙個邏輯運算的值,這只是乙個代換,用於後面兩個語句進行邏輯運算。 不使用中間變數交換兩個數
在交換兩個數的值時,最經常使用的方法是借助於乙個中間變數來進行交換。temp a a b b temp 通過巧妙的加法與減法運算來實現兩個數的交換。a a b b a b a a b 使用位運算 異或 來交換兩個數。a a b b a b a a b 其正確性是因為異或運算滿足 交換律和 結合律。證...
不使用中間變數交換兩個數
在交換兩個數的值時,最經常使用的方法是借助於乙個中間變數來進行交換。temp a a b b temp 通過巧妙的加法與減法運算來實現兩個數的交換。a a b b a b a a b 使用位運算 異或 來交換兩個數。a a b b a b a a b 其正確性是因為異或運算滿足 交換律和 結合律。證...
不使用中間變數交換變數a b變數
這是一道經典題目,很基礎,但是經常考。題目描述 不用任何變數交換a b兩個變數。分析 交換兩個變數的問題在c語言入門書籍中都有所涉及。在講解c語言的函式的時候老師都會告訴我們,實參和形參的問題,下面的函式是不能完成交換兩個變數的 void swap int a,int b int temp temp...