绝对经典的程序
来源:互联网 发布:机器人朗读软件 编辑:程序博客网 时间:2024/04/29 08:11
很久都没有写过技术方面的文章了,最近觉得还是把自己觉得不错的东西写出来供大家分享。
在一道面试题中,看到题目要求不使用比较运算符,不实用if...else,不使用switch,不使用for,不使用三目运算符,不使用系统函数实现得到两个数中较大的一个数。
刚开始一看这还不简单,结果仔细一想,确实这个题不简单,首先能用的东西太少了。
然后开始思考数学里面的那些公式,最后想到了一个表达式:
int a,b;
c=((a+b)+|a-b|)/2;
这样就可以得到a,b中较大的一个数,看来学数学就是好,我刚好是学数学的,嘿嘿。
接下来就是要如何解决绝对值这个问题,也许平时写一个代码实现绝对值的功能太容易了,但是这里要求实在是太苛刻了。不过还是可以实现的
实现如下:
int myabs(int a)
{
int arr[2]={0};
arr[0]=a;
arr[1]=-a;
int ind=(a>>31)&1; //根据最高位来判断这个数是负数还是正数。
return arr[ind];
}
在这个函数里面通过数组的方式实现了一个不求绝对值的函数.
当然比较得到两个数中较大的那个函数实现如下:
int max(int a,int b)
{
return (a+b+myabs(a-b))/2;
}
觉得这个代码很经典,供大家分享
- 绝对经典的程序
- 绝对经典的C程序
- 经典绝对的短信
- 绝对经典的笑话
- 绝对经典的入侵例子
- 绝对经典的javascript诠释
- 绝对经典的javascript诠释
- Hibernate的范型基类---绝对经典!
- 不可不读的绝对英文经典(绝对经典)
- 经典SQL语句大全(绝对的经典)
- 经典SQL语句大全(绝对的经典)
- 经典SQL语句大全(绝对的经典)
- 经典SQL语句大全(绝对的经典)
- 经典SQL语句大全(绝对的经典)
- 经典SQL语句大全(绝对的经典)
- 仅三行代码的按键扫描程序,绝对够经典(秒杀郭天祥讲解的按键扫描)
- 使用Java RTP传输声音和视频的程序(绝对经典)
- 绝对经典
- 深入浅出JavaScript(2)—ECMAScript
- WebKit技巧:如何用GDB进行调试
- linux各种队列
- Hibernate执行访问步骤及增删改查
- 如何更改XP管理员账户的名
- 绝对经典的程序
- 构建ARM-PC无线局域网->Tp-link wn321G无线网卡(Rt73)驱动+wireless_tools for Kernel 2.6
- 机器学习与计算机视觉大牛族谱
- Xcode4自动生成注释和开发文档
- JExcelApi
- Android的ExecutorService线程池
- C结构体中位段的使用
- persist 和 save区别 缓存
- Emergency text system goes live 英国:紧急短信服务