C 系列 交換兩個數字

2022-04-29 11:33:09 字數 838 閱讀 8742

1. 建立中間變數

這是最快也是最簡單的辦法,例如:

#include

int main()

2.呼叫函式交換兩個數的值

#include

void swap(int *p1,int *p2)

int main()

3.用加減或乘除運算來交換

#include

int main()

我這裡寫的是用加減法實現,很顯然成功了,乘除法是類似的,大家可以自己試試。可以看到一來,省去了建立中間變數,看起來也不算複雜。

不過,這種方法可能會產生使數值溢位的問題。

所以這種方法是有缺陷的,那有沒有類似的不溢位的方法呢? 答案是肯定的,有。下面就來看這種不溢位的方法。

4.用異或交換

#include

int main()

掌握這種方法,就要知道什麼叫異或。異或:一般是針對二進位制數來說的,它的規則就是如果兩個二進位制數不相同,則異或結果為1;否則,異或結果為0。

這種方法看著和第三種很類似,但卻比它更嚴謹。為什麼這麼說,因為上面說了,加減乘除這種方法很能會產生溢位錯誤,而異或卻完全不會。因為兩個二進位制數異或的結果只能是0或1,不會產生進製或借位,不會超出變數的表示範圍。

5.用位運算交換

#include

int main()

整個語句的意思:先把a強制轉化為64位整型變數,然後把它左移32位後與(a=b)按位或,把整個結果再強制轉換為64位整型變數,然後右移32位得到b的值。其實,求b的值沒必要有|(a=b)這部分,但因為想同時把b的值賦給a,且把|(a=b)放在這兒不會影響到b最終的值,所以寫成這樣。這兒就採用移位的方法避免了用中間變數。

交換兩個數

問題 如果要求不使用臨時變數,應該如何交換兩個變數的值?解決這個題的方式有好幾種,第一種當然就是使用系統自帶的swap 函式了。不過,這種抖機靈的做法一般人很難欣賞,而且說不定它內部實現使用了臨時變數也說不定 這是使用臨時變數的做法,也是我們在c語言中常用的做法 func swap1 a inout...

357,交換兩個數字的值

1,臨時變數實現 一般情況下交換兩個數字的值,我們都會使用乙個臨時變數,像下面這樣 private void swap int array,int i,int j 當然這段 非常簡單,哪怕是剛接觸過程式設計的同學也都能看的懂,我們今天要講的肯定不是上面這段 這麼簡單。那麼除了上面這種方法還有沒有其他...

C 交換兩個數的值

需要臨時變數 1 使用引用 引用即別名 void swap1 int a,int b 函式時的格式 swap1 x,y 2 指標 void swap2 int a,int b 呼叫該函式時的格式 swap2 x,y 2.不需要臨時變數 1 假如 a 3,b 4。想將a和b的值互換,可以用一下賦值語句...