跃2.0 2016-12-31 08:08 采纳率: 25%
浏览 2231
已采纳

大神解惑。C语言里字符比较大小,有个题目根据asc码表对输入的三个字符进行从小到大排序,

这个题目我已经做出来了,但是我不能理解为什么不能直接用比较大小进行排序,比如
scanf("%c%c%c",a,b,c);if(a>b>c) printf("%c %c%c",c,b,a),如果我这样写就会没有输出,想知道为什么,

  • 写回答

10条回答 默认 最新

  • 跃2.0 2016-12-31 09:53
    关注

    终于知道为什么啦,因为每次输入加了空格,空格也是字符,所以我以为我代码错了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • threenewbee 2016-12-31 08:11
    关注
     if (a>b && b > c)
    不能连写
    
    评论
  • threenewbee 2016-12-31 08:13
    关注
     你那么写也是可以的,但是要这么写
    if (a>=b && b >= c) printf("%c %c%c",c,b,a);
    if (b>=a && b >= c) printf("%c %c%c",c,a,b);
    if (c>=a && a >= b) printf("%c %c%c",b,a,c);
    ...
    一共写6行,才能把所有情况都考虑
    
    评论
  • 跃2.0 2016-12-31 08:14
    关注

    请忽略到我没有取&,这个不是重点,我取了&也是不能比较

    评论
  • 企鹅爱吃方便面 2016-12-31 08:14
    关注

    你的scanf读数据的时候为什么没有加 & 取址符呢

    评论
  • threenewbee 2016-12-31 08:15
    关注

    如果是4个数字,那么就是4x3x2=24行
    如果是5个数字,就是5!行
    所以你那么写太呆了。


    #请注意,你的结贴率太低,如果回答你的问题解决,请点下我回答右边的采纳,谢谢。

    评论
  • threenewbee 2016-12-31 08:21
    关注
     所以最好的办法是用标准的排序算法
    if (a > b) 交换ab
    if (b > c) 交换bc
    if (a > b) 交换ab //注意这个调用2次
    此时a b c就是从小到大了
    
    评论
  • 跃2.0 2016-12-31 08:24
    关注

    还是不对啊,我当时先做了个假设只比较两个字符,但是也不能得出正确答案。
    scanf("%c%c",&a,&b);
    if(a>b) printf("%c",a);
    else printf("%c",b);
    头文件我就不写了,这个代码还是错的

    评论
  • Eid 2016-12-31 09:30
    关注

    你在输入a和b之间加入了空格,系统自动把b赋值成了空格。

    评论
  • 企鹅爱吃方便面 2016-12-31 08:12
    关注

    另外,谁说的if能同时比较三个数据的?应该用if……else……嵌套。

    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
  • ¥15 人脸识别相关算法 YOLO,AI等
  • ¥15 spark问题方便加V17675797079
  • ¥15 Python代码不打印的原因
  • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
  • ¥15 数学问题也不知道那种类型的问题
  • ¥15 R作图的时候,文本框重叠了怎么办?
  • ¥15 用python重建流场
  • ¥15 stm32 调试舵机pwm输出异常
  • ¥15 单片机led闪烁3秒后急速闪烁后停止