求2个整数的平均值很简单?没几个人能写对!
时间:2020-05-28
本文章向大家介绍求2个整数的平均值很简单?没几个人能写对!,主要包括求2个整数的平均值很简单?没几个人能写对!使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
谭浩强C程序设计(第五版)课后答案-视频讲解:求2个整数的平均值
这个题目很多时候是直接求2个整数的平均值。
那这个题目就很简单了,请看如下代码:
//代码1
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int average = (a + b) / 2;
printf("avg = %d\n", average);
return 0;
}
这个是一般的实现方式,请看测试结果:
测试结果1:
测试结果2:
测试结果1是正确的,但是测试结果2是错误的。
这里我们发现,代码1还是有一定的问题的!
问题就是:如果求平均数的两个数比较大,如果他们的和超过了整形能表示的最大值,这样就产生了溢出,溢出之后得到的结果也就不是和,不是和就不能求得平均值。
那么此时如果在面试,面试官就会追问,那怎么解决呢?
这里请看一张图:
看完这张图,我们应该就能明白了,原来代码可以这样写:
#include <stdio.h>
#include <limits.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int average = a + (b - a) / 2;
printf("avg = %d\n", average);
return 0;
}
看测试结果:
看,问题解决了,这就好多了。
升级班
如果面试官这个时候,我们这里不能使用除2的方式呢,代码改怎么改进呢?
其实也不要害怕,我们现在给出代码的2种实现。
实现1:
#include <stdio.h>
#include <limits.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
//右移一位有除2的效果
int average = a + ((b - a) >> 1);
printf("avg = %d\n", average);
return 0;
}
实现2:
#include <stdio.h>
#include <limits.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int average = a&b + ((a^b) >> 1);
printf("avg = %d\n", average);
return 0;
}
以上2种实现,不是很明白,这里我录制了一个视频,请参考:
好了,这篇文章就讲解到这里,没有提到的,咱们评论区见!
下一篇:【白嫖】IT笔试面试真题讲解系列文章+视频-持续更新中
更多学习资料领取:学习资料
原文地址:https://www.cnblogs.com/bitzhidu/p/tanhaoqiang_kehoudaan.html
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (中)
- li浮动时ul高度为0,解决ul自适应高度的几种方法
- 使用正则表达式求完整路径中的文件名
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
- Centos下SFTP双机高可用环境部署记录
- as3:Function以及call,apply
- centos6下redis cluster集群部署过程
- centos6下ActiveMQ+Zookeeper消息中间件集群部署记录
- 发布一个轻量级的滑块控件
- as3:sprite作为容器使用时,最好不要指定width,height
- openssl版本升级操作记录
- 清除浮动(clearfix hack)
- Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
- 小程序火爆的因素
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android RecyclerView设置下拉刷新的实现方法
- Android 动态添加view或item并获取数据的实例
- Centos7实现MySQL基于日志还原数据的示例代码
- Android 三种延迟操作的实现方法
- 基于Android在布局中动态添加view的两种方法(总结)
- Android向node.js编写的服务器发送数据并接收请求
- Android startActivityForResult和setResult的区别
- Linux系统使用Fuser命令的方法
- Android实现地理定位功能
- Android实现在ServiceManager中加入自定义服务的方法详解
- Android studio so库找不到问题解决办法
- Android使用ViewPager实现屏幕滑动效果
- Android 自定义view实现进度条加载效果实例代码
- Android电池电量监听的示例代码
- Android 解决ScrollView嵌套CridView显示问题