數(shù)據(jù)類型范圍 1:編程實(shí)現(xiàn)由鍵盤輸入兩個(gè)整數(shù),將其賦給變量x和y并輸出,交換x和y的值后再輸出,用函數(shù)輸出?
1:編程實(shí)現(xiàn)由鍵盤輸入兩個(gè)整數(shù),將其賦給變量x和y并輸出,交換x和y的值后再輸出,用函數(shù)輸出?可以使用以下三種方法:1。方法1:[中間變量]通過(guò)設(shè)置一個(gè)變量來(lái)交換兩個(gè)值。這個(gè)方法最直接,也最容易理解(
1:編程實(shí)現(xiàn)由鍵盤輸入兩個(gè)整數(shù),將其賦給變量x和y并輸出,交換x和y的值后再輸出,用函數(shù)輸出?
可以使用以下三種方法:1。方法1:[中間變量]通過(guò)設(shè)置一個(gè)變量來(lái)交換兩個(gè)值。這個(gè)方法最直接,也最容易理解(為了代碼可讀性,建議使用這個(gè)方法),但是有一個(gè)臨時(shí)變量。如果不想創(chuàng)建臨時(shí)變量,可以使用以下方法。2方法二:通過(guò)加減法實(shí)現(xiàn)價(jià)值交換。具體代碼如下:3。方法3:[異或運(yùn)算]。關(guān)于XOR有幾個(gè)屬性:1。任何變量x和它本身的異或結(jié)果是0,即x^x=0。2任何變量x和0的異或結(jié)果不變,即x^0=x.3。異或運(yùn)算可以組合,即a^B^C=(a^B)^C=a^(B^C)。4異或運(yùn)算是可交換的,即a^B=B^a。實(shí)現(xiàn)過(guò)程如下:第一步是a=a^B,變量的結(jié)果是a^B。第二步是B=a^B的右邊等號(hào)是(a^B)^B=a^(B^B)=a^0=a。經(jīng)過(guò)計(jì)算,B中的值是a。第三步是a=a^B。此時(shí),賦值號(hào)右側(cè)a的值仍然是a^B,賦值號(hào)右側(cè)B的值是原始a,即a^B=(a^B)^a=a^B^a=(a^a)^B=0^B=B在等號(hào)右側(cè)。此值分配給a,即a=B。代碼如下:
如何不使用第三個(gè)變量來(lái)交換兩個(gè)數(shù)的值?
算術(shù)運(yùn)算;指針地址運(yùn)算;位運(yùn)算;堆棧實(shí)現(xiàn)。具體操作如下:其原理是:以A、B為軸上的點(diǎn)數(shù),圍繞兩點(diǎn)之間的距離來(lái)計(jì)算。具體流程:第一句“a=B-a”計(jì)算AB兩點(diǎn)之間的距離,保存在a中;第二句“B=B-a”計(jì)算a到原點(diǎn)的距離(B到原點(diǎn)的距離與AB的距離之差),保存在B中;第三句話“a=ba”計(jì)算從B到原點(diǎn)的距離(從a到原點(diǎn)的距離和從ab到原點(diǎn)的距離之和),并將其保存在a中。完成交換。與標(biāo)準(zhǔn)算法相比,該算法增加了三個(gè)計(jì)算過(guò)程,但不需要臨時(shí)變量的幫助。(以下簡(jiǎn)稱算術(shù)算法)缺點(diǎn):只能用于數(shù)字型,不能用于字符串型。A和B可能溢出(超出int的范圍)。溢出是相對(duì)的。如果溢出來(lái)了,回來(lái)就好了。所以不溢出也沒關(guān)系,就是不安全。因?yàn)榈刂返倪\(yùn)算實(shí)際上是一個(gè)整數(shù)運(yùn)算,例如:將兩個(gè)地址相減得到一個(gè)整數(shù),表示內(nèi)存中兩個(gè)變量的存儲(chǔ)位置之間分隔了多少字節(jié);地址和整數(shù)相加,即“a 10”表示最后10個(gè)a型數(shù)據(jù)單元的地址a作為基址。因此,在理論上,我們可以通過(guò)類似于算術(shù)算法的運(yùn)算來(lái)完成地址交換,從而達(dá)到交換變量的目的。該算法的實(shí)現(xiàn)取決于異或運(yùn)算的特點(diǎn)。通過(guò)異或操作,數(shù)據(jù)中的某些位可以翻轉(zhuǎn),而其他位保持不變。這意味著任何數(shù)字和任何給定值都是XOR的兩倍,并且該值保持不變。上述算法都實(shí)現(xiàn)了兩個(gè)變量值的交換,而不需要其他變量的幫助。相對(duì)而言,算術(shù)算法和位算法的計(jì)算量是相同的。地址算法中的計(jì)算比較復(fù)雜,但很容易實(shí)現(xiàn)大類型(如自定義類或結(jié)構(gòu))的交換。而前兩者只能進(jìn)行整形數(shù)據(jù)的交換(理論上,重載“^”運(yùn)算符,也可以實(shí)現(xiàn)),現(xiàn)在需要進(jìn)行任意結(jié)構(gòu)的交換。
異或有什么用?
異或用于二進(jìn)制數(shù)的運(yùn)算,可以反轉(zhuǎn)每個(gè)二進(jìn)制位