求两个数平均值的三种方法
1.使用(m+n)/2,求两个数的平均值
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m, n;
printf("请输入两个整数:");
scanf("%d %d", &m, &n);
printf("两个数的平均值是:%d\n", (m + n) / 2);
system("pause");
return 0;
}
这种方法的缺点是m+n容易出现溢出。
2.使用m+((m-n)>>1)
上述式子类似于m+(m-n)/2=(m+n)/2。所以也是求平均值的一种方式,这种方式出现溢出的情况。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m, n;
printf("请输入两个整数:");
scanf("%d %d", &m, &n);
printf("两个数的平均值是:%d\n", m + ((n - m) >> 1));
system("pause");
return 0;
}
3.使用(m&n)+((m^n)>>1)
m&n得到两个数相同的位,m^n得到两个数不同的位,不同的位需要除以2,然后将两个相加就可以得到平均值了。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m, n;
printf("请输入两个整数:");
scanf("%d %d", &m, &n);
printf("两个数的平均值是:%d\n", (m&n) + ((m^n) >> 1));
system("pause");
return 0;
}