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

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

不使用中間變量交換兩個數(shù).求平均數(shù)考慮溢出-創(chuàng)新互聯(lián)

#define _CRT_SECURE_NO_WARNINGS 1

成都創(chuàng)新互聯(lián)是一家專業(yè)提供東遼企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站設(shè)計H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為東遼眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

#include

#include

//不使用中間變量交換兩個數(shù)的值

void exchange_num(int *a, int *b)

{

  ①* a =*a + *b;   //適用范圍廣

  * b = *a -* b;

  * a =* a - *b;

  ②* a = (*a )*(*b);

  * b = (*a )/(*b);

  * a = (*a ) / (*b);//當(dāng)兩個數(shù)有一個0或者都為0時就不再適用

  ③* a = *a ^*b; //把*a和*b中所有的不同位拿出來

  * b = *a ^*b; //因?yàn)檫@時候*a中保存的是*a和*b的不同位,所以再異或*b就把最初的*a拿出來

  * a = *a ^*b;//同理,因?yàn)?b已經(jīng)是最初的*a,所以兩個數(shù)不同位再異或*b就將最初*b拿出來了

}

int main()

{

   int a = 0, b = 0;

   scanf( "%d%d" , &a, &b);

   exchange_num(&a,&b);   //因?yàn)樾螀⒅皇且环菖R時拷貝,所以進(jìn)行“址”傳遞

   printf( "a=%d,b=%d" , a, b);

   system( "pause" );

   return 0;

}

//求兩個數(shù)的平均值,考慮溢出

int average(int a, int b)

{

  int ret = 0;

  ① ret = ( a + b )>>1;

//當(dāng)a,b都特別大的時候,a+b有可能會產(chǎn)生溢出的危險,所以一般我們用下面這三種方法,來求兩個數(shù)的平均數(shù)

   ②ret = a + (b - a)>> 1;

  ③ret = b + (a - b)>>1;

  ④ret = ( a &b )+((a^b)>>1);

  return ret;

//我們知道,十進(jìn)制的兩個數(shù)求和,等于其對應(yīng)的二進(jìn)制求和。a&b:是將a和b的相同位拿出來,a^b是將a和b不同的位拿出來。當(dāng)我們在求平均值時,兩個二進(jìn)制相加再除以2就是所求的平均值,而相同的位加起來再除以2相當(dāng)于沒有改變,所以依然是a&b,相異的位加起來要除以2所以是(a^b)/2.

}

int main()

{

   int a = 0, b = 0;

  scanf( "%d%d" , &a, &b);

   int ret = average(a,b);

  printf( "%d\n" , ret);

  system( "pause" );

   return 0;

}

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


分享標(biāo)題:不使用中間變量交換兩個數(shù).求平均數(shù)考慮溢出-創(chuàng)新互聯(lián)
新聞來源:http://weahome.cn/article/dogsgh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部