计算两数字平均数的三种方法

方法一:

#include<stdio.h>

Int a,b,c

    int main()

    {  

         a = 10;

         b = 20;

         c = (a + b) / 2;

        //int aver = (a + b) >> 1;

        //右移一位相当于除以二

        printf("c=%d\n", c);

        return 0;

}

缺点:a+b有可能爆整型

方法二(解决爆整型问题)

大数减去小的数字取平均再加上小的数字

 int main()

    {

        int a = 10;

        int b = 20;

        int c = a + (b - a) / 2;

        //int c = a + (b - a) >> 1;

        //右移一位相当于除以二

        printf("c=%d\n", c);

        return 0;

}

方法三:利用二进制运算求平均数:‘

总体思路也是找相同与不相同,相同加不相同除以2

利用按位与求出相同部分的平均数,然后再用异或求出不同部分的平均数,加起来就是两个数的平均数

#include<stdio.h>

    int main()

    {

        int a = 10;

        int b = 20;

        int c = (a&b) + ((a^b) >> 1);

        printf("c=%d\n", c);

        return 0;

    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值