求平均数的四种方法-创新互联

用c语言求平均数有四种方法,各有利弊。
1.第一种是最常规的做法

10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有杂多免费网站建设让你可以放心的选择与我们合作。
> int main()
{
    int a = 10;
    int b = 5;
    c = (a + b) / 2;
    system("pause");
    return 0;
}

这种方法有缺陷,如果a和b足够大,以致于两数之和超出了intmax(整型所能代表的最
大值),所以不建议使用这种方法。
2.最常用的方法

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

这种优于第一种方法,这个算法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的二进制里对应位相同的那一位,且为1,a^b得到的是a和b的二进制
里对应位不同的那一位留下来,且为1,相同位全部变成0。另外,a与b的和可以理解为
a与b的每个二进制位的权重之和,可以拆分成a和b相同二进制位的和加上不同二进制位
的和。所以a&b即为相同的二进制的对应位的和除以2,a^b即为不同的二进制的对应位
的和。这种算法的缺陷是a和b只能是整数。
4.也用位操作符表示

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

向右移有除以二的效果

第三种与第四种方法都较难理解透彻, 所以轻易不要尝试,但如果非要用的话,优先
用右移的方法,效率较高。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:求平均数的四种方法-创新互联
文章起源:http://azwzsj.com/article/dgopih.html