不使用(a+b)/2这种方式,求两个数的平均值。
方法一:
1、最容易想到的一种办法: 可以使用减法:x -(x - y)/ 2 ;
方法二:
1、使用位移运算法,对一个二进制数左移一位相当于对其乘以2,相反,右移一位相当于除以2;
2、表达式:(x + y)>> 1;
方法一:
#include<stdio.h> #include<windows.h> #pragma warning (disable:4996) 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; printf("Please enter two numbers:"); scanf("%d %d", &a, &b); ret = average(a, b); printf("The result = %d\n", ret); system("pause"); return 0; }方法二:
#include<stdio.h> #include<windows.h> #pragma warning (disable:4996) int average(int x, int y) { int ret = (x + y) >> 1; return ret; } int main() { int a = 0; int b = 0; int ret = 0; printf("Please enter two numbers:"); scanf("%d %d", &a, &b); ret = average(a, b); printf("The result = %d\n", ret); system("pause"); return 0; }方法一很容易想到;方法二是跟好朋友一起探讨的时候学会的新技能,交流的过程中总会学到意想不到的东西,知识这东西还是得分享,会分享的人往往得到的更多。在这再次感谢好朋友?。