交換倆個數

2021-07-15 17:49:17 字數 930 閱讀 4880

首先來看下面一段**:

#include //傳值呼叫

#include

void swap(int x, int y)

int main()

結果:

他並沒有交換a和b的值,原因是,形式引數只是實際引數的臨時拷貝,實參與形參位址是不一樣的,實參的值傳遞給形參,在函式中形參的值交換了,但是在函式返回過程期間形參值已經銷毀,不能傳遞給實參,達不到交換的效果。

所以想要通過函式改變實參的值,要進行位址傳遞,使實參與形參的位址一樣,讓此位址 所存的數字發生改變,也就是改變了實際引數的值。

#include //傳址呼叫

#include

void swap(int

*x, int

*y)int main()

#include 

#include

int main()

採用這種方式不建立臨時變數也能達到效果,但是a太大,會造成溢位的問題。

#include 

#include

int main()

這種方法雖然不會溢位,但是當b=0的時候是不可以的。

#include 

#include

int main()

採用這種方式就不用擔心溢位還有分母為0 的問題了!!

不用中間變數實現倆個數交換

第一類方法也是常用的方法,通過多次的數值計算來完成交換,到現在知道的有下面三種 1 加減法。a a b b a b a a b 該方法可以交換整型和浮點型數值的變數,但在處理浮點型的時候有可能出現精度的損失,例如對資料 a 3.123456 b 1234567.000000 交換後各變數值變為 a ...

將倆個陣列的內容交換

我們之前做過倆個變數的值的交換,這次的題目是將倆個陣列的內容交換,其本質是一樣的。眾所周知,陣列中的值是不可以通過賦值來交換的。不同在於我們需要遍歷陣列,將陣列1與陣列2中的內容一一進行交換。和之前一樣,我們有倆種方法。因為我們倆種方法的主函式是一致的,這樣我們就可以根據倆個方法建立倆個函式,在主函...

輸出倆個數的和

此處僅僅是靈活運用一下學過的,並沒什麼用,暫時學會七種方法 因為迴圈下只有乙個語句,省略了 當然不推薦這樣寫,只是為了縮短 而已。1.一般寫法 是位運算,它是將資料在記憶體中的每一位 當然是二進位制 取反。1在記憶體中所有位全部為1,1 0,即對 1取非就是0,就會跳出迴圈。從下面的 可以看到,如果...