在两个数字的平均数的时候,通常都是先求和,再除以2
#include<stdio.h>
#inclue<stdib.h>
int average(int a, int b)
{
int sum = 0;
sum = a + b;
return sum / 2.0;
}
int main()
{
int a,b;
double result = 0.0;
scanf("%d%d",a,b);
result = average(a,b);
printf("%lf\n",result);
exit(0);
}
/*
jukay@jukay-desktop:/blgo/blgo_1$ ./test_1
2147483647
10
-1073741819.500000
jukay@jukay-desktop:/blgo/blgo_1$
*/
这么做是不恰当的,因为不能保证求和永远不溢出,也就是说存在整数益处的风险!
最好的方法是:两数想减(谁减谁无所谓),差除以2后加上小数。
#include<stdio.h>
#include<stdlib.h>
double average(int a, int b)
{
return (a -b)/2.0 + b;
}
int main()
{
int a,b;
double result;
scanf("%d%d",&a,&b);
result = average(a,b);
printf("%lf",result);
exit(0);
}
/*jukay@jukay-desktop:/blgo/blgo_1$ ./test
2147483647
10
1073741828.500000jukay@jukay-desktop:/blgo/blgo_1$
*/