在學習c語言的時候,涉及到兩個變數值的交換,其中用到臨時變數。
類似於:
temp=a;
a=b;
b=temp;
這樣的語句,如果在沒有臨時變數的情況下,該如何做呢?
網路上的人們給出了兩種方法:
一、異或法
a=a^b;
b=b^a;
a=a^b;
二、加減法
a = a + b;
b = a - b;
a = a - b;
其實我們看加減法更容易理解,也有許多人用這種方法,雖然這些方法可能用不到,但是了解下還是有必要的,至少要讀懂別人的**是吧。
其實兩個方法都類似,我們沒有臨時變數,就自己用乙個來做臨時變數(相當於臨時變數)來完成我們的交換。
char型別的同理
【**】
不用臨時變數交換兩個數的值
就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...
不用臨時變數交換兩個數的值
就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...
從「交換兩個變數而不用臨時變數」談起
問題 寫乙個函式,實現交換兩個變數,但不能用臨時變數?分析 交換兩個變數的這一功能,我們用的比較多,也可以很容易的寫出乙個出來,但是題目要求的是不能用臨時變數。並且題目也沒有說明變數是什麼型別,它是int,char,double,還是自定義的結構體,或者是類型別,雖然可以用模板從某種程度上解決這一些...