c語言中經典變量交換法


1.臨時變量法(最實用)

方法解釋:采用臨時變量的方法,作為中間過渡,這是最簡單也是大家最容易想到的方法,此法在各種場合應用極多,應該熟練掌握。

#include

int main(void)

{

int a=1,b=2,tmp;

tmp =a;

a=b;

b=tmp;

printf("%d %d",a,b);

return 0;

}

2.加減交換法

方法解釋:顧名思義,使用數學中的加減法進行交換,先把a+b的結果暫時先保存在變量a中,然后通過這改變后的a和原始的b進行減法就可以得到交換后的b,缺點是a+b的結果可能越界。

#include

int main(void)

{

int a=1,b=2;

a = a + b;

b = a - b;

a = a - b;

printf("%d %d",a,b);

return 0;

}

3.乘除交換法

方法解釋:該方法與加減法類似,就是把加減替換為乘除,缺點是因為采用了乘法,因此比加法更容易越界,使用時應謹慎。

#include

int main(void)

{

int a=1,b=2;

a = a * b;

b = a / b;

a = a / b;

printf("%d %d",a,b);

return 0;

}

4.異或交換法

方法解釋:巧妙使用異或運算來進行交換,這種方法主要利用了異或的特性a^b的值先保存到a,因為a^b^b=a所以可以順利完成交換,這種方法是很完美的,不存在越界的問題。

#include

int main(void)

{

int a=1,b=2;

a = a ^ b;

b = a ^ b;

a = a ^ b;

printf("%d %d",a,b);

return 0;

}

5.移位交換法

方法解釋:這種方法不太常用,原理是把原來的int類型的a的值拆分成高16位和低16位,相當於多了16位的暫存空間可以周轉,缺點是如果a或者b超過了16位,這種方法就會出錯,此方法較復雜且容易出錯,因此不建議大家使用。

#include

int main(void)

{

int a=1,b=2;

a <<= 16;

a |= b;

b = a >> 16;

a = a & 0xffff;

printf("%d %d",a,b);

return 0;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM