C 面試題 三種數值交換方法

2021-07-13 11:48:03 字數 657 閱讀 3124

要求:將數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.美國某著名網...