真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言如何交換兩個(gè)數(shù)的值-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)c語(yǔ)言如何交換兩個(gè)數(shù)的值,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)是專(zhuān)業(yè)的津南網(wǎng)站建設(shè)公司,津南接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行津南網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

c語(yǔ)言交換兩個(gè)數(shù)的值

程序中有兩個(gè)數(shù)a,b,其中a=4,b=5,現(xiàn)在希望交換兩個(gè)數(shù)的值,使得a=5,b=4.

推薦課程:C語(yǔ)言教程

方法1: 使用一個(gè)臨時(shí)變量來(lái)進(jìn)行保存,這應(yīng)該也是大家最容易想到的方法

參考代碼:

#include 
int main()
{
    int a = 4;
    int b = 5;
    int nTemp;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    nTemp = a;
    a = b;
    b = nTemp;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

運(yùn)行結(jié)果:

c語(yǔ)言如何交換兩個(gè)數(shù)的值

方法2:使用加減法來(lái)進(jìn)行交換,這種方法實(shí)際上就是先把a(bǔ)+b的結(jié)果暫時(shí)先保存在變量a中,然后通過(guò)這改變后的a和原始的b進(jìn)行減法就可以得到交換后的b,但是這種方法有一個(gè)缺陷,就是a和b都是int類(lèi)型,a+b的結(jié)果可以越界。

參考代碼:

#include 
int main()
{
    int a = 4;
    int b = 5;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a + b;
    b = a - b;
    a = a - b;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

運(yùn)行結(jié)果:

c語(yǔ)言如何交換兩個(gè)數(shù)的值

方法3:使用乘除法來(lái)進(jìn)行交換,這種方法和方法2類(lèi)似,只是用a*b代替a+b放在a中暫存,后面思路一樣,這種方法有著和方法2一樣的缺陷,就是越界問(wèn)題,而且更加容易越界。

參考代碼:

#include 
int main()
{
    int a = 4;
    int b = 5;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a * b;
    b = a / b;
    a = a / b;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

方法4:使用異或的方法來(lái)進(jìn)行交換,這種方法不存在之前越界的缺陷,是一種很完美的方法,這種方法主要利用了異或的特性a^b的值先保存到a,因?yàn)閍^b^b=a所以可以順利完成交換。

參考代碼:

#include 
int main()
{
    int a = 4;
    int b = 5;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

方法5:使用移位的方法,把原來(lái)的int類(lèi)型的a,把a(bǔ)的值拆分成高16位和低16位,相當(dāng)于多了16位的暫存空間可以周轉(zhuǎn),但是此方法的缺陷也顯而易見(jiàn),就是如果被賦值的a或者b超過(guò)了16位,這種方法就會(huì)發(fā)生錯(cuò)誤。

參考代碼:

#include 
int main()
{
    int a = 32123;
    int b = 12345;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a <<= 16;
    a |= b;
    b = a >> 16;
    a = a & 0xffff;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

運(yùn)行結(jié)果:

c語(yǔ)言如何交換兩個(gè)數(shù)的值

關(guān)于c語(yǔ)言如何交換兩個(gè)數(shù)的值就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。


分享題目:c語(yǔ)言如何交換兩個(gè)數(shù)的值-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/dodoid.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部