不使用(a+b)2这种方式,求两个数的平均值。

    xiaoxiao2025-08-18  17

    问题描述:

    不使用(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; }

    小结:

            方法一很容易想到;方法二是跟好朋友一起探讨的时候学会的新技能,交流的过程中总会学到意想不到的东西,知识这东西还是得分享,会分享的人往往得到的更多。在这再次感谢好朋友?。  

    最新回复(0)