【C语言】平均数N种境界

致读者:

平均数 平均数是指在一组数据中所有数据之和再除以数据的个数。平均数是表示一组数据集中趋势的量数,它是反映数据集中趋势的一项指标。解答平均数应用题的关键在于确定“总数量”以及和总数量对应的总份数。在统计工作中,平均数(均值)和标准差是描述...

【方法一】:

这种方法最为简单,弊端是如果a和b非常大的话,a+b的值可能超过了整型的储存范围(最大值为2147483647),导致溢出,得到错误的结果.

#include <stdio.h>
int main()
{
int a=10;  
  
int b=20;  
  
int avg=0;  
  
avg=(a+b)/2;//平局值  
  
//或者  
  
avg=(a+b)>>1://右移表示除2,左移表示乘2  
return 0;
}

【方法二】:

用一个较大值减去另一个较小值得到二者之差,将差除2后加上较小值即得到了二者平均值,可有效防止溢出的情况的出现。


#include <stdio.h>
int main()
{
int a=10; 
 
int b=20;  
  
int avg=0;  
  
avg=b+(a-b)/2;//平均值  
  
//或者  
  
avg=b+(a-b)>>1://右移表示除2,左移表示乘2  
return 0;
}

【方法三】:

1000        10&12可得到

0010+0100     10^12可得到

计算a与b的平均值C语言表达式:

avg = (a&b)  + (a^b)>>1;

#include <stdio.h>
int main()
{
int a=10;  
  
int b=20;  
  
int avg=0;  
  
avg = (a&b)  + (a^b)>>1;  
  
//或者  
  
avg = (a&b)  + (a^b)/2;  

return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_41035588/article/details/80158447