C语言:不使用(a+b)/2这种方式(会溢出),求两个数的平均值

原创 2016年05月30日 17:13:44
#include<stdio.h>

int average(int x,int y)
{
 
     int ret=x-(x-y)/2;
     return ret;
}


int main()
{
     int a=0;
     int b=0;
     int ret=0;
     scanf("%d%d",&a,&b);
     ret=average(a,b);
     printf("%d",ret); 
     return 0;
}

 

 

这样会有效防止溢出

 

wKiom1YrCP7wG0NxAAC8X22rePA465.jpg

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

求平均值 防溢出方法

int avg(int x, int y) { return (x & y) + ((x ^ y) >> 1); } 解释:X+Y= (X^Y)+((X&Y) SO: (X+Y)...

c++自增自减运算汇总(经典)

c++自增自減問題  在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。变量i被称为“计数器”,用来记录完成某一操作的次数。C语言为这种计数器操作提供了两个更为简洁的运算符,...

唉,栽在了a+b上,注意两个int型相加可能溢出

小明A+B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su...

C语言:三种基础方法求2个数的最大公约数。

这次用了常见的三种方法求2个数的最大公约数:辗转相除法,更相减损法,穷举法。 主要不足的地方是:①流程图不够简洁明了;②输入判断条件中没有针对字符,汉字等的判断。若用户输的不是数字则程序会崩溃;③没...

1.将数组A中的内容和数组B中的内容进行交换。(数组一样大) 2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。 3.将三个数按从大到小输出。 4.求两个数的最大公约数。

#define _CRT_SECURE_NO_WARNINGS 1 #include #include //1.将数组A中的内容和数组B中的内容进行交换。(数组一样大) //void swap...

在不使用*、/、+、-、%操作符的情况下,如何求一个数的1/3?(更新了一些解释,用C语言实)

方法是:http://stackoverflow.com/questions/11694546/divide-a-number-by-3-without-using-operators这里的,我对其进...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)