永久的守护 发布留言 2008-7-31 18:26
【讨论】如何返回两个数中较大的数
怎样求两个正整数的较大者?
比如:unsigned int Max(unsigned int a, unsigned int b);
要求:
不准在函数体中使用任何比较运算,比如if,for,while等,也不能用与或非,不准调用任何库函数。
据说有很多种答案
大家研究一下blueboy82006 发布留言 2008-7-31 18:52
用 return(max= a>b ? a : b)
可以吧?blueboy82006 发布留言 2008-7-31 18:53
不知道,楼上的问题怎么会这么苛刻啊。。。blueboy82006 发布留言 2008-7-31 18:54
哦,直接这样就行了:return( a>b ? a : b)
上面有些画蛇添足了……永久的守护 发布留言 2008-7-31 19:02
当然不可以了
不允许?:很远的那颗星 发布留言 2008-7-31 19:17
unsigned 啊.
输出a,b.肉眼判断,哈哈..........很远的那颗星 发布留言 2008-7-31 19:25
iostream,stdio.h.......据说也是库函数.blueboy82006 发布留言 2008-7-31 19:29
你又没说不能用……[tk13]
那这个问题就有意思了……blueboy82006 发布留言 2008-7-31 19:30
case 语句也不让用吧?很远的那颗星 发布留言 2008-7-31 19:32
楼主说不可以调用任何库函数的...
用汇编,哈哈.
机器码,更帅...永久的守护 发布留言 2008-7-31 19:42
这个是一个公司的面试题
但是很久很久以前的了 在CSDN上看到的
感觉挺有意思 就又贴到这里了lingluoz 发布留言 2008-7-31 19:44
太复杂了。。。iFreeBSD 发布留言 2008-7-31 19:53
只可以 加减乘除?
[ 本帖最后由 iFreeBSD 于 2008-7-31 19:56 编辑 [/it]]iFreeBSD 发布留言 2008-7-31 19:54
取模预算可以不?
[ 本帖最后由 iFreeBSD 于 2008-7-31 19:57 编辑 [/it]]flyue 发布留言 2008-7-31 19:59
这道题我有个思路:
unsigned int Max(int a, int b)
{
return a / b;
}
void main()
{
printf("%d\n", Max(-10000, 10));//小于等于0表示a=b
}flyue 发布留言 2008-7-31 20:01
此问题关键在于找没有交换率的运算方式
不知道要求里面有没有说不能用汇编?永久的守护 发布留言 2008-7-31 20:01
[un]flyue[/un] 在 2008-7-31 19:59 的发言:[/bo]
这道题我有个思路: unsigned int Max(int a, int b) { return a / b; }
void main() { printf("%d\n", Max(-10000, 10));//小于等于0表示a=b } [/quote] 这个题你来回答正对(我说你人来回答对 不是题答的对) 因为这个题就是一个游戏开发公司招游戏编程人员出的题卧龙孔明 发布留言 2008-7-31 20:05 easy....
int max(int x,int y) { return (((x-y)&(1<<32))>>32)*y + (((y-x)&(1<<32))>>32)*x; }卧龙孔明 发布留言 2008-7-31 20:06 我的位运算
因为,负数的首位为1 通过简单的位运算来做出结论QQ395108605 发布留言 2008-7-31 20:06 学习了啊~!
[1] [2] 下一页 特别说明:如网页特效代码中有引用图片文件等,请自己下载到本地调试! |
|
[] [返回] [打 印] [收 藏] [评 论] |
|
|