社区
C语言
帖子详情
朗讯面试题
shiaisong
2004-10-25 09:36:50
There are two int variables: a and b, don’t use “if”, “? :”, “switch” or other judgement statements, find out the biggest one of the two numbers.
...全文
1754
86
打赏
收藏
朗讯面试题
There are two int variables: a and b, don’t use “if”, “? :”, “switch” or other judgement statements, find out the biggest one of the two numbers.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
86 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lujianping
2004-11-04
打赏
举报
回复
看看正确结果吧:
a&~((a-b)>>31))+(b&~((b-a)>>31)
绝对没有任何的比较函数,没有除0问题,整数负数都没问题,我用100分担保。
Aylazhang
2004-10-30
打赏
举报
回复
化繁为简!
hy1080
2004-10-30
打赏
举报
回复
crystaldn(crystaldn) ( ) 的方法显然不正确
Q_Qwert
2004-10-29
打赏
举报
回复
don’t use “if”, “? :”, “switch” or other judgement statements,
->所以最后的答案应该是: return (int)(a>b)*a + (int)(a<=b)*b;
->pmax = p[a<b];
这有几个判断了?!。。。
ra3
2004-10-29
打赏
举报
回复
好贴,收藏!
牛人真多。 :)
cber
2004-10-29
打赏
举报
回复
晕,写个程序错了那么多,看来最近写程序确实是少了
to 三角猫:
你可以把上面的逻辑操作用相应的位操作替换就可以了,如'||'换成'|','&&'换成'&'试一试
我实在是没有精力再测试了
cber
2004-10-29
打赏
举报
回复
晕,还是写错了
应该是:
int get_sign_symbol(int val)
{
int tmp = val;
tmp >>= (sizeof(val) * CHAR_BIT - 1);
tmp &= 0x1;
return tmp;
}
deltacat
2004-10-29
打赏
举报
回复
其实我觉得用移位比较好。
另外,题面上虽说是judgement statements,出题的意思应该是不作比较而得出。所以题目的意思应该是逻辑操作都是不能用的。
cber
2004-10-29
打赏
举报
回复
ft,这个函数写错了,应该是
int get_sign_symbol(int val)
{
return val >> (sizeof(val) * CHAR_BITS - 1);
}
cber
2004-10-29
打赏
举报
回复
#include <iostream>
using namespace std;
int get_sign_symbol(int val)
{
return val >> (sizeof(val) - 1);
}
int is_not_zero(int val)
{
val <<= 2;
val /= (val - 1);
val &= 0x1;
return val;
}
int main()
{
int a = 5, b = 4;
int nums[2];
nums[0] = a;
nums[1] = b;
int c, d, e, f, g, h, i;
c = a << 1;
d = b << 1;
e = a & 0x1;
f = b & 0x1;
g = c - d;
h = get_sign_symbol(c - d);
i = get_sign_symbol(e - f);
// if h == 1 (a < b) return nums[1];
// if h == 0 && is_not_zero(g) return nums[0]
// if h == 0 && ^is_not_zero(g) return nums[i]
cout << nums[h || ((is_not_zero(g) ^ 0x1) && i)];
return 0;
}
刚刚写的,充分考虑了溢出问题
Kenny_Glacier
2004-10-29
打赏
举报
回复
#include<stdio.h>
main()
{
int a,b,k;
char *strs[2] = {"a","b"},ch;
scanf("%d%d",&a,&b);
k=a-b;
k=k>>31;
k=k&1;
printf("max=%s",strs[k]);
}
看看这个行吗?? 我不知道怎么说它们相等。
cuikai01
2004-10-29
打赏
举报
回复
int i = (int)pow(2, a-b);//2的a-b次方
for(;i;)
return a;
return b;
crystaldn
2004-10-29
打赏
举报
回复
max = ((a+b)+sqrt((a-b)*(a-b)) / 2
顶
hy1080
2004-10-29
打赏
举报
回复
fallhunter(不乖) ( )的方法在BCB下也通过了
a=0;
b=0;
a=5;
b=4;
a=4;
b=5;
没有用跳转指令,
汗阿,还好题上只说不许判断没说不许比较
to colin310(别问我是谁) ( )
a<b显然是一个逻辑判断。
apple3_cx
2004-10-28
打赏
举报
回复
血精灵的不错!支持!呵呵
colin310
2004-10-28
打赏
举报
回复
对不起啊,我是新手,pmax = p[a<b];是什么意思啊
双杯献酒
2004-10-28
打赏
举报
回复
fallhunter(不乖)
的方法不错。
wzq1979
2004-10-28
打赏
举报
回复
fallhunter(不乖) 的方法,高。
fallhunter
2004-10-28
打赏
举报
回复
更正:
int * p[2]={&a,&b};
int * pmax;
pmax = p[a<b];
刚在VC试了,OK
fallhunter
2004-10-28
打赏
举报
回复
更正:
int * p[2]={&a,&b};
int * pmax;
pmax = p[a<b];
刚在VC试了,OK
加载更多回复(66)
朗讯
面试题
(至09年)
朗讯
面试题
总结,包括最新09年前N轮的题目
朗讯
笔试
面试题
大全
朗讯
笔试
面试题
大全,包含近几年招聘的笔试
面试题
,物超所值
各大IT公司的笔试
面试题
包括联想 网易 华为
朗讯
IBM 百度 google 腾讯 普天 阿里巴巴 贝尔 思科 微软 网易 大唐
本人珍藏 各大IT公司的笔试
面试题
包括联想 网易 华为
朗讯
IBM 百度 google 腾讯 普天 阿里巴巴 贝尔 思科 微软 网易 大唐 绝对值得一看
2008年几大公司笔试
面试题
我参加的几家公司的笔试
面试题
,自己总结的一点经验,抛砖引玉
收藏的各大IT公司的笔试
面试题
一些
面试题
各大IT公司的笔试
面试题
包括联想 网易 华为
朗讯
IBM 百度 google 腾讯 普天 阿里巴巴 贝尔 思科 微软 网易 大唐
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章