int main() { int a = 10; int b = 5; c = (a + b) / 2; system( pause ); ..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

求平均數(shù)的四種方法

發(fā)布時(shí)間:2020-08-30 20:18:30 來(lái)源:網(wǎng)絡(luò) 閱讀:1275 作者:wx5cb137862d1dd 欄目:編程語(yǔ)言

用c語(yǔ)言求平均數(shù)有四種方法,各有利弊。
1.第一種是最常規(guī)的做法

> int main()
{
    int a = 10;
    int b = 5;
    c = (a + b) / 2;
    system("pause");
    return 0;
}

這種方法有缺陷,如果a和b足夠大,以致于兩數(shù)之和超出了intmax(整型所能代表的最
大值),所以不建議使用這種方法。
2.最常用的方法

> int main()
{
    int a = 10;
    int b = 5;
    c = a+(b-a)/2;
    system("pause");
    return 0;
}

這種優(yōu)于第一種方法,這個(gè)算法c的值永遠(yuǎn)不會(huì)超過(guò)intmax,所以一般這種算法比較常見(jiàn)
3.用位操作表示

> int main()
{
    int a = 10;
    int b = 5;
    c = (a&b) + (a^b)/2;
    system("pause");
    return 0;
}

a&b得到的是a和b的二進(jìn)制里對(duì)應(yīng)位相同的那一位,且為1,a^b得到的是a和b的二進(jìn)制
里對(duì)應(yīng)位不同的那一位留下來(lái),且為1,相同位全部變成0。另外,a與b的和可以理解為
a與b的每個(gè)二進(jìn)制位的權(quán)重之和,可以拆分成a和b相同二進(jìn)制位的和加上不同二進(jìn)制位
的和。所以a&b即為相同的二進(jìn)制的對(duì)應(yīng)位的和除以2,a^b即為不同的二進(jìn)制的對(duì)應(yīng)位
的和。這種算法的缺陷是a和b只能是整數(shù)。
4.也用位操作符表示

> int main()
{
    int a = 10;
    int b = 5;
    c = (a&b) + ((a^b) >> 1);
    system("pause");
    return 0;
}

向右移有除以二的效果

第三種與第四種方法都較難理解透徹, 所以輕易不要嘗試,但如果非要用的話,優(yōu)先
用右移的方法,效率較高。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI