要求:將數a、b的值進行交換,並且不使用任何中間變數。
#includevoid swapvalue1(int &a, int &b) //使用中間變數交換資料
void swapvalue2(int &a, int &b)//使用加減運算完成資料交換
void swapvalue3(int &a, int &b) //使用位運算交換資料
int main()
執行結果:
第一種:
使用中間變數來達到交換資料的目的,這是最大眾的方法,當然了不滿足本題的要求。
第二種:
使用簡單的加減操作來達到交換a、b值得目的。
缺點:a+b和a-b時,可能會到導致資料溢位。
第三種:
採用位運算的方法,按位異或運算。(建議採用這種方式)
異或運算:相同的二進位制位異或運算為0,不相同的二進位制位異或運算為1。
關於位運算的知識,參見部落格:
經典面試題 交換變數的三種方式
假設需要交換的變數是a,b method1 使用其他變數 c a a b b c這是最常見的一種解法,使用乙個其他變數來儲存需要交換的值,防止變數丟失 method2 不使用其他變數 a a b b a b a a b首先把a b的值賦給a 然後把a b的值就是原來a的值賦給b,b現在的值就是a,現...
三種數值型資料交換的比較
本文主要介紹三種數值型資料交換方法間的比較 比如要交換的資料分別為a和b 1 方法一 通過新增乙個中間值的方式來交換,如下 a和b為整型資料,定義乙個中間的整型數值temp,temp a a b b temp 2 方法二 define swap a,b a a b b a b a a b 該方法需要...
C 面試題之a和b交換面試題
a和b交換面試題1.cpp there are two int variables a and b,don t use if switch or other judgement statements,find out the biggest one of the two numbers.美國某著名網...