C語言中交換兩個數的5種方法

2021-09-14 05:23:46 字數 842 閱讀 6370

程式中有兩個數a,b,其中a=4,b=5,現在希望交換兩個數的值,使得a=5,b=4.

使用乙個臨時變數來進行儲存

temp = a;

a = b;

b = temp;

使用加減法來進行交換,這種方法實際上就是先把a+b的結果暫時先儲存在變數a中,然後通過這改變後的a和原始的b進行減法就可以得到交換後的b,但是這種方法有乙個缺陷,就是a和b都是int型別,a+b的結果可以越界。

a = a + b;

b = a - b;

a = a - b;

使用乘除法來進行交換,這種方法和方法2類似,只是用a*b代替a+b放在a中暫存,後面思路一樣,這種方法有著和方法2一樣的缺陷,就是越界問題,而且更加容易越界。

a = a * b;

b = a / b;

a = a / b;

使用異或的方法來進行交換,這種方法不存在之前越界的缺陷,是一種很完美的方法,這種方法主要利用了異或的特性a^b的值先儲存到a,因為a^b^b=a所以可以順利完成交換。

a = a ^ b;

b = a ^ b;

a = a ^ b;

使用移位的方法,把原來的int型別的a,把a的值拆分成高16位和低16位,相當於多了16位的暫存空間可以周轉,但是此方法的缺陷也顯而易見,就是如果被賦值的a或者b超過了16位,這種方法就會發生錯誤。

a <<= 16;

a |= b;

b = a >> 16;

a = a & 0xffff;

C語言中交換兩個數的方法總結

temp a a b b temp 這種方法實際上就是先把a b的結果暫時先儲存在變數a中,然後通過這改變後的a和原始的b進行減法就可以得到交換後的b,但是這種方法有乙個缺陷,就是a和b都是int型別,a b的結果可以越界。a a b b a b a a b 這種方法和方法2類似,只是用a b代替a...

c語言 多種方法實現兩個數的交換

交換兩個數的內容是c語言中常見的問題,所以在此總結一下我所學到的幾種方法。首先,舉乙個例子,假設a 10,b 20.第一種方法,借助乙個臨時變數來進行儲存,這是最容易也是最直觀的方法。如下 int a,b,t a 10 b 20 printf a d b d a,b t a a b b t prin...

交換兩個數的三種方法

1.使用臨時變數 public static void main string args throws exception2.不使用臨時變數 加減法 注意int範圍 public static void main string args throws exception3.不適用臨時變數 使用位運算...