成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

不使用中間變量交換兩個數(shù).求平均數(shù)考慮溢出

#define _CRT_SECURE_NO_WARNINGS 1

網站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網頁設計、網站建設、微信開發(fā)、小程序制作、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了石屏免費建站歡迎大家使用!

#include<stdio.h>

#include<stdlib.h>

//不使用中間變量交換兩個數(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);//當兩個數(shù)有一個0或者都為0時就不再適用


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

    * b = *a ^*b; //因為這時候*a中保存的是*a和*b的不同位,所以再異或*b就把最初的*a拿出來

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

}

int main()

{

      int a = 0, b = 0;

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

      exchange_num(&a,&b);    //因為形參只是一份臨時拷貝,所以進行“址”傳遞

      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;           

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

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

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

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

   return ret;

//我們知道,十進制的兩個數(shù)求和,等于其對應的二進制求和。a&b:是將a和b的相同位拿出來,a^b是將a和b不同的位拿出來。當我們在求平均值時,兩個二進制相加再除以2就是所求的平均值,而相同的位加起來再除以2相當于沒有改變,所以依然是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;

}

當前題目:不使用中間變量交換兩個數(shù).求平均數(shù)考慮溢出
網址分享:http://jinyejixie.com/article46/jjpjhg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供App設計云服務器、自適應網站、商城網站全網營銷推廣、網站營銷

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
上饶市| 尚义县| 诏安县| 利川市| 开平市| 将乐县| 应用必备| 彩票| 府谷县| 丰城市| 留坝县| 靖江市| 长寿区| 竹北市| 当阳市| 扶风县| 满洲里市| 康定县| 吕梁市| 黄山市| 崇左市| 临洮县| 太仓市| 东宁县| 根河市| 张家口市| 汤原县| 山阴县| 财经| 黄陵县| 蒙自县| 黎平县| 海丰县| 海伦市| 丰原市| 盈江县| 和平县| 科技| 莱芜市| 麦盖提县| 商城县|