用c語言求平均數(shù)有四種方法,各有利弊。
1.第一種是最常規(guī)的做法
例
在武岡等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),武岡網(wǎng)站建設(shè)費用合理。
> 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)于第一種方法,這個算法c的值永遠不會超過intmax,所以一般這種算法比較常見
3.用位操作表示
例
> int main()
{
int a = 10;
int b = 5;
c = (a&b) + (a^b)/2;
system("pause");
return 0;
}
a&b得到的是a和b的二進制里對應(yīng)位相同的那一位,且為1,a^b得到的是a和b的二進制
里對應(yīng)位不同的那一位留下來,且為1,相同位全部變成0。另外,a與b的和可以理解為
a與b的每個二進制位的權(quán)重之和,可以拆分成a和b相同二進制位的和加上不同二進制位
的和。所以a&b即為相同的二進制的對應(yīng)位的和除以2,a^b即為不同的二進制的對應(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)先
用右移的方法,效率較高。