交換兩個變數的值,不使用第三個變數的一種思路

2021-10-12 07:14:46 字數 708 閱讀 7817

(要求不能使用第三個變數)

定義兩個整形變數,如a和b,並賦值,在不使用第三個變數的條件下,將兩個變數的值互換。

先上**,後邊有思路

//定義變數並賦值

int a, b;

a =1

;b =2;

//交換變數的值

a = a+b;

//a = 3

b = a-b;

//b = 1

a = a-b;

//a = 2

作者個人經常使用的交換變數值的方法是引入第三個變數,以此問題為背景,**如下

//宣告變數並賦值

int a, b;

a =1

;b =2;

//交換兩個變數的值

int t;

t = a;

a = b;

b = t;

該解決方法的思路為先將a的值儲存在第三個變數中(因為給a賦b的值時a原本的值就會丟失),因此需要先將a的值存起來。

那麼,根據這個思路,現在沒有第三個變數來儲存a(或b)的值了,應該通過什麼手段儲存這個值。

作者的解決方法是使用a和b的和將兩者的值儲存起來賦給a,這時候的a中體現了a和b的儲存值,然後再通過減去b即可得到a原本的值1,此時b中儲存了a原本的值,a中儲存了原本a和b的和,再將a減去b的值賦給a,a即可得到b原本的值。

交換兩個變數的值,不使用第三個變數

通常我們的做法是 尤其是在學習階段 定義乙個新的變數,借助它完成交換。如下 int a,b a 10 b 15 int t t a a b b t 這種演算法易於理解,特別適合幫助初學者了解電腦程式的特點,是賦值語句的經典應用。在實際軟體開發當中,此演算法簡單明瞭,不會產生歧義,便於程式設計師之間的...

不使用第三個變數交換兩個數值。

上班時間,閒來無事,寫個小演算法消遣下。題目來自某.net面試題集錦。相信很多看官也耳熟能詳。也頗為簡單,不會者學,會者繞道。題目如下 不用第三個變數,交換兩個數值。心得 1.時刻注意現在的i,j是最原始的i,j的什麼組合。2.out 原來必須要初始化才能用地。class program j i,j...

Java不使用第三個變數交換兩個變數的資料

變數 儲存資料的空間 資料 文字和符號的表示 資料的分類 數字 byte short int long float double 非數字 char boolean author siggy public class vardemo 第一種加減法,當a或b為int型別的最大值時會越界,產生bug 第二...