使用多种方法求两个数的平均数
2016-10-22 10:59
423 查看
在求平均数的方法中,大家最喜欢用的就是先求两个数的和,然后再除以2,得到的结果即为两个数的平均数,实现的代码如下:
若不使用(a+b)/2,若学过移位的童鞋会使用右移的方法,右移一位就相当于除以2,。
但是这种方法又过于繁琐,经过深思熟虑之后,我又想到了一种方法:
然后要是有人想问,还有没有其他的方法,答案是:当然还有啦!
<pre name="code" class="cpp">#include<stdio.h> #include<Windows.h> #pragma warning(disable:4996) int main() { int a = 0; int b = 0; printf("Please inter a,b:"); scanf("%d %d", &a, &b); printf("%d and %d average is %d\n", a, b, (a + b) / 2); system("pause"); return 0; }
若不使用(a+b)/2,若学过移位的童鞋会使用右移的方法,右移一位就相当于除以2,。
int main() { int a = 0; int b = 0; printf("Please inter a,b:"); scanf("%d %d", &a, &b); printf("%d and %d average is %d\n", a, b, (a + b) >> 1); system("pause"); return 0; }前两种方法都有可能会导致数据的溢出,因此,我们可以将两个数分别右移再相加。
int main() { int a = 0; int b = 0; printf("Please inter a,b:"); scanf("%d %d", &a, &b); printf("%d and %d average is %d\n", a, b, (a >> 1)+( b >> 1)); system("pause"); return 0; }若两数均为奇数,该方法出现错误,于是我们就分情况实现。
int main() { int a = 0; int b = 0; printf("Please inter a,b:"); scanf("%d %d", &a, &b); if ((a % 2 == 1) && (b % 2 == 1)) { printf("%d and %d average is %d\n", a, b,1 + (a >> 1) + (b >> 1)); } else { printf("%d and %d average is %d\n", a, b, (a >> 1) + (b >> 1)); } system("pause"); return 0; }
但是这种方法又过于繁琐,经过深思熟虑之后,我又想到了一种方法:
int main() { int a = 0; int b = 0; printf("Please inter a,b:"); scanf("%d %d", &a, &b); printf("%d and %d average is %d\n", a, b, a + (b - a) / 2); system("pause"); return 0; }这种方法既好理解,又简介,还不易出错。
然后要是有人想问,还有没有其他的方法,答案是:当然还有啦!
int main() { int a = 0; int b = 0; printf("Please inter a,b:"); scanf("%d %d", &a, &b); printf("%d and %d average is %d\n", a, b, (a&b) + ((a^b) >> 1)); system("pause"); return 0; }但是最后这种方法不是很好理解,个人建议呢,使用倒数第二种方法。
相关文章推荐
- C# @符号的多种使用方法
- C# @符号的多种使用方法
- Linux下卸载ORACLE的多种方法(参考使用)
- C# winForm中直接使用网站JS函数的快捷方法,可执行多种JS函数
- Android支持多种设备的方法及资源文件的使用
- asp使用组件在线发邮件的多种方法
- 使用多种方法安装第二台域控制器
- 怎样在heatmap中使用多种cluster方法
- Sql Update语句使用表别名的方法(多种方法,经典)
- 2.创建一个抽象类A,该类中包含一个求两个数之和抽象方法。创建一个子类B,在B中重写求和方法,且使用方法重载使得方法可以分别计算整数、双精度、字符串
- 使用javascript打开链接的多种方法
- 使用javascript打开链接的多种方法
- 玩玩小技巧(1)_三种方法不使用临时变量交换两个数的值
- Sql Update语句使用表别名的方法(多种方法,经典)
- C# WinForm 使用多种方法实现 图片的切割和拼接
- C# @符号的多种使用方法
- ASP中COOKIES有效期的多种使用方法
- C# @符号的多种使用方法
- Internet Explorer 已经阻止此站点以不安全的方式使用ActiveX控件(多种解决方法)
- android使用Messenger绑定Service的多种实现方法