交換兩個數的三種方法以及應用

2021-09-02 13:52:41 字數 1476 閱讀 9185

交換兩個數的三種方法以及應用

當聽到交換兩個數時,大多數人的第一想法建立乙個新的變數,然後將兩個數進行交換。**如下所示:

#define _crt_secure_no_warnings

#include

int main()

建立第三個變數就要重新開闢一塊記憶體儲存該變數,如果不建立第三個變數,怎麼交換兩個數呢?我們舉個例子,假如兩個變數分別是a=10;b=20。那麼a+b=30,將他們的和儲存在a中(也可以儲存在b中,這裡以a為例),則a=a+b=30;用他們的和a減去b的值,即a-b=30-20=10,這是之前a中的值,將它賦值給b,即b=a-b=10,這樣b就交換了,然後用他們的和減去a的值就是b的值,現在a的值已經賦值給b了,因此a=a-b,這樣就實現了兩個數的交換。實現**如下:

#define _crt_secure_no_warnings

#include

#include

int main()

不建立變數交換兩個數,除了上述方法之外還有一種方法,就是異或,實現**如下:

#define _crt_secure_no_warnings

#include

#include

int main()

交換兩個數的方法有三種,這三種之間有什麼優缺點呢?

第一種方法需要建立第三個變數,多開闢了一塊空間;第二種方法可能會造成溢位的問題;第三種方法目前還沒有發現什麼問題。

下面舉兩個關於交換兩個數的應用:

(1)將三個數按從大到小輸出。

#define _crt_secure_no_warnings

#include

#include

int main()

if (a < c)

if (b < c)

printf(「從小到大排序後的三個數為:%d %d %d\n」, a, b, c);

system(「pause」);

return 0;

}這裡使用了建立第三個變數交換兩個數,使用另外兩種方法是完全可以的。

(2)交換兩個陣列中的內容(陣列大小相同)

#define _crt_secure_no_warnings

#include

#include

int main()

printf(「請輸入b陣列中的10個數:」);

for (i = 0; i < 10; i++)

for (i = 0; i < 10; i++)

printf(「請輸出交換後a陣列中的10個數:」);

for (i = 0; i < 10; i++)

printf(」\n");

printf(「請輸出交換後b陣列中的10個數:」);

for (i = 0; i < 10; i++)

printf(」\n");

system(「pause」);

return 0;

}

交換兩個數的三種方法

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

交換兩個數的值的方法 三種

採用中間變數c,來承接a的值,再將a的值設定為b,最後將中間變臉c的值設定到b中。int a 10 int b 20 int c a a b b c system.out.println a a system.out.println b b 輸出結果為 a 20 b 10原理 為了方面說明,將a,b...

交換兩個變數的三種方法

public static void main string args num1 2,num2 1前提 兩個變數相加的值不能溢位 public static void main string args num3 20,num4 10異或 1.任意乙個變數x與其自身進行異或運算,結果為0,即x x 0...