CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

一道面试的题目(求最大值)

楼主zl911skysky()2004-09-02 22:08:13 在 C/C++ / C++ 语言 提问

哪为高手能帮帮我,  
  在不使用if,while,do~~while等语句,不使用关系运算符,不使用MAX(),MIN()的情况下,怎样比较输入的a,b两个数的大小。(注:实现并不知道输入的数的大小) 问题点数:0、回复次数:59Top

1 楼PPower(月亮光光,照地堂)回复于 2004-09-02 22:30:31 得分 0

return   bool(a-b);Top

2 楼snow810211(阳光)回复于 2004-09-02 22:31:37 得分 0

好怪~我也关注中Top

3 楼PPower(月亮光光,照地堂)回复于 2004-09-02 22:31:56 得分 0

return   a-b   ;    
  這樣才行,返回正數,表示a   >   b   ,   負數表示   a   <   b   , 0表示 a   ==   b   。  
  Top

4 楼PPower(月亮光光,照地堂)回复于 2004-09-02 22:34:39 得分 0

template   <class   T>  
  T   Compare(T   &a,   T   &b)  
  {   return   inta-b   ;   }Top

5 楼ma100()回复于 2004-09-02 22:36:16 得分 0

MAX(int   a,int   b)  
  {  
          return   a   -b   ?   a:b;  
  }Top

6 楼hcj2002(流浪者·躬自厚而薄责于人 )回复于 2004-09-02 23:11:56 得分 0

template   <class   T>  
  T   Compare(T   &a,   T   &b)  
  {   return   int   (a-b)   ;   }  
  Top

7 楼Vigorcsdn(混分来滴~)回复于 2004-09-02 23:19:21 得分 0

return   a-b   ?   a:b;  
  Top

8 楼alever513(戴帽子的(落脚杭州))回复于 2004-09-02 23:31:26 得分 0

?:   这个不是关系运算符~  
  --  
  所以可以这样:  
    return   (a-b   >   0.0)   ?   a:b;Top

9 楼ftkghost(小鹏)回复于 2004-09-02 23:43:12 得分 0

Max=a>b?a:b  
  Min=a+b-MAxTop

10 楼InToTheSea(编程浪子)回复于 2004-09-02 23:47:04 得分 0

return   (a-b   >   0.0)   ?   a:b;  
  还是用了关系运算符啊Top

11 楼ftkghost(小鹏)回复于 2004-09-03 09:27:48 得分 0

如果能不用关系运算符把a-b转化为2进制,符号位为1代表负数即a<b  
  符号位为0则a>b  
  二进制值为0则a=b  
   
  不知道行不行?问题在于什么函数是把一个整数转换为2进制的  
  还有就是当a>0     b<0的时候a-b会不会超过整型变量表示的数值范围,超出后的值有可能会改变符号  
   
  请高手指点啊~~想不出来了~Top

12 楼improgrammer(无忌)回复于 2004-09-03 10:05:32 得分 0

 
  既然你没有限制我用什么形式把我的判断告诉你,那我只用编码的方式把结果返回给你(A-B),告诉你我返回一个整数,如大于0则A大于B,小于0则B大于A,否则A==B。怎么使用这个结果,就是你的事了,反正我没有使用if。  
   
  问题是连if都不用,你最终怎么使用这个结果呢?哦,使用汇编吧?不要说连实现if的那几条机器指令都不许用!  
   
  我怀疑你的问题本身是否提得准确。  
  Top

13 楼oCplus(C++)回复于 2004-09-03 11:03:50 得分 0

map<int>   mp;  
  mp.Insert(a);  
  mp.Insert(b);  
  mp.Sort();Top

14 楼diandian82(点点(nothing))回复于 2004-09-03 13:53:44 得分 0

这不是神经病么?本来挺简单的问题考虑那么复杂干什么?不要说这是测试我们的思维能力!Top

15 楼elegantboy(杰)回复于 2004-09-03 14:01:39 得分 0

用   ?   :   语句  
  Top

16 楼ntxs(别人加薪我加班,数钱数到心发酸T_T)回复于 2004-09-03 17:35:15 得分 0

哈哈     三目运算符啊  
   
  int   a,   b;  
  cin>>a>>b;  
   
  return   (a-b)>0   ?   a   :   b;Top

17 楼wwwooowww(熔点)回复于 2004-09-03 19:09:36 得分 0

学习ing  
  Top

18 楼languagec(各有所求)回复于 2004-09-03 20:11:29 得分 0

 
   
            int(a/b)  
             
            这个怎么样?      
   
  Top

19 楼languagec(各有所求)回复于 2004-09-03 20:15:24 得分 0

这个能判断两个正数的大小,负数的不知道Top

20 楼xteaj(半桶水)回复于 2004-09-03 20:23:31 得分 0

max   =   a>b?a:b;  
  min   =   a<b?a:b;Top

21 楼lark3(海鸥)回复于 2004-09-03 20:44:28 得分 0

ding  
  Top

22 楼rwdx(忆)回复于 2004-09-03 21:16:58 得分 0

languagec(各有所求.神志不清.重病!)   (   )   信誉:100    
   
            int(a/b)  
             
            这个怎么样?      
   
  a   =   1   b   =0   会怎样Top

23 楼mahongxi(烤鸡翅膀)(色摸)回复于 2004-09-03 21:26:22 得分 0

(a-b)   >>   31  
  ----------------test   prog-----------  
   
  #include   <stdio.h>  
  int   main(int   argc,char   **   argv)  
  {  
      int   a,b;  
      printf("enter   numbers(a,b):");  
      scanf("%d,%d",&a,&b);  
      int   c   =   (a-b)   >>   31;  
      printf("c=%d",c);    
      if(c)  
          printf("\n%d<%d",a,b);  
      else  
          printf("\n%d>=%d",a,b);  
  }  
  Top

24 楼codekid(codekid)回复于 2004-09-03 21:40:35 得分 0

可能就是用三目吧   我也不太清楚Top

25 楼FreeFice(庄鱼)回复于 2004-09-03 22:44:43 得分 0

int   Letter(int   a,int   b)  
  {  
        return   (a-b)&0x80000000;  
  }  
   
  int   Bigger(int   a,int   b)  
  {  
        return   !((a-b)&0x80000000);  
  }Top

26 楼somedummy(某人马甲)回复于 2004-09-03 23:40:28 得分 0

楼上的在干什么?简直就是不知所云  
   
  到目前为止所有采用?:操作符的要不就是根本得不到正确答案(大部分是无法表达正确的意义,譬如  
  MAX(int   a,int   b)  
  {  
          return   a   -b   ?   a:b;  
  }  
  这个只有在a==b的时候才会返回b,否则都是返回a),要不就是不符合题意(使用了关系判断)Top

27 楼sea373(菜鸟都不是)回复于 2004-09-04 00:10:39 得分 0

关注中......Top

28 楼heksn(佳宁)回复于 2004-09-04 18:42:01 得分 0

学习Top

29 楼JianZhiZG(健之)回复于 2004-09-04 20:48:21 得分 0

#include   <stdio.h>  
  void   main()  
  {  
  int   a,b,c;  
  scanf("%d%d",&a,&b);  
  c=a-b;  
  printf("%d\n",c   &   0x8000   ?   b:a);  
  }Top

30 楼cchuocp(井底之蛙)回复于 2004-09-04 22:10:15 得分 0

mahongxi(烤鸡翅膀)(色摸)   的方法非常好  
  (a-b)   >>   31  
   
  如果a大于等于b,则a-b为0或正数,最高位为0,否则为负数,最高位为1。  
  Top

31 楼xteaj(半桶水)回复于 2004-09-04 22:22:07 得分 0

max(float   a,float   b)  
  {  
        float   t1,t2;  
        t1   =   a   +   b;  
        t2   =   fabs(a-b);  
        return   (t1   +   t2)/2;Top

32 楼xteaj(半桶水)回复于 2004-09-04 22:23:32 得分 0

max(float   a,float   b)  
  {  
        float   t1,t2;  
        t1   =   a   +   b;  
        t2   =   sqrt((a-b)*(a-b));//免得你说fabs中也用了判断语句  
        return   (t1   +   t2)/2;  
  }Top

33 楼xiaopeng_e(pp)回复于 2004-09-05 16:04:06 得分 0

int   max   =   (a   -   b)   &   (0x80000000)   ?   b:a;  
  Top

34 楼wwwtony110(小风风)回复于 2004-09-05 16:10:46 得分 0

#include   <iostream.h>  
  int   main;  
  {  
  int   a,b,c;  
  cin>>a;  
  cin>>b;  
  c=a-b;  
  cout<<c;  
  c为负~~~就B大~~~正就A大  
  Top

35 楼xteaj(半桶水)回复于 2004-09-05 16:11:37 得分 0

哥们,好像楼主没说是整数Top

36 楼FreeFice(庄鱼)回复于 2004-09-05 21:07:00 得分 0

int   Letter(int   a,int   b)  
  {  
        return   (a-b)&0x80000000;  
  }  
   
  int   Bigger(int   a,int   b)  
  {  
        return   !((a-b)&0x80000000);  
  }  
       
  int   Max(int   a,int   b)  
  {  
        return   Bigger(a,b)?a:b;  
  }    
  Top

37 楼Squall1009(钰枫)(找工作ing)回复于 2004-09-05 22:05:43 得分 0

感觉蛮无聊的.........Top

38 楼iicup(双杯献酒)回复于 2004-09-06 00:52:51 得分 0

(1)题目不清楚,  
  没有规定比较后的大小怎么表示。  
   
  (2)题目的一些限制是毫无必要的,  
  没有任何理由需要这种限制,  
  因此,只能说“浪费脑力”。  
   
  Top

39 楼iicup(双杯献酒)回复于 2004-09-06 00:57:17 得分 0

对了,  
  如果这是面试题,规定不能用MAX,MIN可以理解,  
  但不能用比较运算符没有任何理由。  
  因此,标准答案是:  
   
  “为什么不用比较运算苻?”Top

40 楼xiaopeng_e(pp)回复于 2004-09-07 10:49:03 得分 0

很多面试题都会这样限制,比如处理字符串不允许自己开辟buffer之类的,否则也太简单了。Top

41 楼forfoo(清风,迎晨)回复于 2004-09-07 12:36:08 得分 0

a+b+a-b,只要(a-b)是最大值和最小值的差就可以补足两倍最大值,除以2就可以了Top

42 楼forfoo(清风,迎晨)回复于 2004-09-07 12:38:21 得分 0

有人用了,   就是xteaj()   (   )   的方法Top

43 楼MaxDD(激活)回复于 2004-09-07 13:19:41 得分 0

xteaj()   的方法好啊。  
  学习学习。Top

44 楼socrazylee(我爱我的爸爸妈妈)(还我山河)回复于 2004-09-07 13:24:54 得分 0

这么无聊.浪费时间.1+1=2难道还非要证明出来吗?一看你面试的公司就是一个耍小聪明,没有效率的公司.现成的不用,不是有病就是脑袋积水Top

45 楼zhangyu666(咖啡)回复于 2004-09-07 16:58:25 得分 0

没有印度软件业发达就是这个道理,小聪明Top

46 楼nicewinds(伯伯)回复于 2004-09-07 17:09:01 得分 0

判断正负还是要用关系运算符,应该是要求把a或b输出来  
    mahongxi(烤鸡翅膀)(色摸)   用到if了Top

47 楼simonjp(学习学习)回复于 2004-09-09 15:06:11 得分 0

xteaj()   的方法好Top

48 楼demo001(给分是我最大的快乐)回复于 2004-09-09 15:43:17 得分 0

呵呵,学习ing....Top

49 楼dfwzy(小源)回复于 2004-09-09 16:12:47 得分 0

学习一下吧Top

50 楼NoSurrender(爱上编程)回复于 2004-09-09 16:27:36 得分 0

觉得如果用是模板的话,更有普遍性~Top

51 楼sunyolaw()回复于 2004-09-09 16:36:37 得分 0

用三目运算Top

52 楼tiemuzh777(初始化)回复于 2004-09-09 16:41:25 得分 0

这是一道中学的的代数题目,以前就已经解答过,当时的代数就没有逻辑概念,所以还是大家的一个基础问题。  
  学语言还是应该有比较强的数学基础。Top

53 楼angiec0313(安吉)回复于 2004-09-09 16:44:37 得分 0

return   (a-b   >   0.0)   ?   a:b;Top

54 楼soyer2001(疯人院の炽阳)回复于 2004-09-09 16:44:48 得分 0

好奇怪,用三目运算符不就可以了吗?  
  三目运算符   的   实质就是一个    
  if(a>b)  
        return   a;  
  else  
        return   b;  
  Top

55 楼pigja(朱健安)回复于 2004-09-09 17:36:53 得分 0

好象都没考虑溢出的问题Top

56 楼zhengguoshan(坚持-决不放弃)回复于 2004-09-09 21:27:16 得分 0

return   a-b   ?   a:b;Top

57 楼CITABC(晨风1)回复于 2004-09-09 22:56:01 得分 0

学习ing  
  Top

58 楼66766(毁人不倦)回复于 2004-09-09 23:34:40 得分 0

如果是整数取(a-b)的符号位,用位操作运算,浮点数也是这个思路Top

59 楼goonhl(icebarg)回复于 2004-09-10 03:24:30 得分 0

 
   
  同:PPower(月亮光光,照地堂)!Top

相关问题

  • 一道面试题目
  • 今天面试的一道题目
  • 一道面试题目,找错误?
  • 一道面试题目 !~请进
  • 老师面试的一道题目
  • 面试题目……
  • 面试题目
  • 面试题目
  • 面试题目
  • 取最大值?

关键词

  • 运算符
  • x80000000
  • max
  • cin
  • float
  • mp
  • 关系
  • 返回
  • 就是
  • printf

得分解答快速导航

  • 帖主:zl911skysky

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo