如何不建立臨時變數,交換兩個數的內容

2021-10-12 05:02:45 字數 828 閱讀 2909

一、程式內容

c語言中,一般可以使用建立臨時變數的方式,交換兩個數字,但是使用其他的方法,我們可以鍛鍊演算法思維,更好地理解**,本次用到了三種方法,按位異或的方法是最完美的。

二、程式要點

1、利用加法實現功能,原理是先把數字合併起來賦值給其中乙個數字,然後分別按順序減去兩個數字。(容易導致資料溢位,並不完美)

#include

intmain()

2、利用乘法實現功能,原理和加法類似,先把數字乘起來賦值給另乙個數字,然後分別按順序除兩個數字。(容易導致資料溢位,並不完美)

#include

intmain()

3、按位異或實現(利用了集合的思想,完美解決這個問題)

理解按位異或的意義

對兩個二進位制數異或表示,兩個二進位制數字相同則為0,不同則為1,

0^0=0

1^0=0

0^1=1

1^1=0

對二進位制**按位異或後,有三個特點:

1、0異或任何數=任何數

2、1異或任何數 = 任何數取反

3、任何數異或其本身=0

按位異或常用於

(1)將二進位制數字某幾個特定的位置翻轉,只需要將該數字與乙個特定位置為1,其他位置為0的數字按位異或。例如:

10011011第一第二位翻轉,則將它和00000011按位異或,得到10011000

(2)實現兩個值交換,利用按位異或的性質,**如下

#include

intmain()

不建立臨時變數,交換兩個數的內容

不建立臨時變數,交換兩個數的內容 方法一 加減法 define crt secure no warnings include int main 程式設計思路 首先從鍵盤鍵入兩個整數 其次是交換兩個數的內容 不採用中間變數,我們可以選擇加減法,首先把a b的值賦給a,再把新的a減掉b,即實現b的值變為...

不建立臨時變數,交換兩個數的值

交換兩個數的值是一道很基本的題,通常我們都會建立乙個臨時變數來進行兩個數值的交換。但是現在,我們不建立臨時變數去將兩個數的值進行交換。這裡我們要用到二進位制相關知識 按位與 按位或 按位異或 取反 左移 右移 以上是二進位制裡面的一些操作,不過我們重點來說 在這裡的作用 按位異或 兩數對應的二進位制...

知識積累 如何不用額外變數交換兩個數

package com.example.demo.algorithm description 如何不用額外變數交換兩個數 普通公式 異或運算 相同為0,不同為1 同或運算 相同為1,不同為0 超級公式 異或運算 無進製相加 異或運算的性質 1 0 n n n n 0 2 異或運算滿 換律和結合律 a...