不用(a+b)/2求两数平均值
#include<stdio.h>
#include<stdlib.h>
void average(int a, int b)
{
while (a < b)
{
a = a + 1;
b = b - 1;
}
while (a > b)
{
a = a - 1;
b = b + 1;
}
if (a == b)
printf("平均值为:%d\n", a);
}
int main()
{
int a = 0;
int b = 0;
scanf("%d%d",&a, &b);
average(a,b);
system("pause");
return 0;
}
//以上算法容易产生溢出,用简单的算法即可解决
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0;
int b = 0;
int avg = 0;
printf("请输入要算平均值的数:\n");
scanf("%d%d", &a, &b);
avg = a - (a - b) / 2;//或者avg=a&b+(a^b)>>1;
printf("avg=%d", avg);
system("pause");
return 0;
}
转载于:https://blog.51cto.com/10797127/1711243