prayyy
2019-11-07 23:02
采纳率: 100%
浏览 554

C语言三个数大小排序,为什么第三个数就乱码?

#include<stdio.h>
int main()
{
    double a, b, c,temp;
    scanf("%lf%lf%lf", &a, &b, &c);
    if (a < b) temp = a; a = b; b = temp;
    if (a < c) temp = a; a = c; c = temp;
    if (b < c) temp = b; b=c; c = temp;
    printf("%f %f %f\n", a, b, c);
    return 0;
}
```![图片说明](https://img-ask.csdn.net/upload/201911/07/1573138943_363912.png)
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • wangergang2010 2019-11-08 17:21
    已采纳

    大括号啊哥,if后面不加大括号能行吗,前面几位在说什么。。。

    #include
    int main()
    {
    double a, b, c,temp;
    scanf("%lf%lf%lf", &a, &b, &c);
    if (a < b){temp = a; a = b; b = temp;}
    if (a < c){temp = a; a = c; c = temp;}
    if (b < c){temp = b; b = c; c = temp;}
    printf("%f %f %f\n", a, b, c);
    return 0;
    }

    已采纳该答案
    打赏 评论
  • console.log( ) 2019-11-08 08:58

    你这是4变成0了,
    原因根据我推算应该是在判断 if(a<b)那一行

    因为a=4 b=3 所以判断条件不成立 temp不等于a

    但是此行后面 a=b;b=temp仍会执行 此时a=3 b=temp=0 因为你初始没有给temp赋值,默认为0
    出现这个是因为if判断下 ;代表结束

    我也忘记具体规范了 你自己改下试试吧
    if (a < b) temp = a a = b b = temp;
    if (a < b) {temp = a; a = b; b = temp;}
    if (a < b){
    temp = a
    a = b
    b = temp
    }

    打赏 评论
  • threenewbee 2019-11-08 09:05
    printf("%f %f %f\n", a, b, c);
    这里是 %lf,因为你的double
    
    三次交换,应该首先a和b,然后b和c,此时c肯定是最大的,然后再a和b交换
    
    f (b < c) temp = b; b=c; c = temp; 这里应该交换a b
    
    
    打赏 评论
  • Sy_Faker 2019-11-08 23:22

    不是啊上面的,我记得输入double类型数据时用lf,输出时用f的,参考https://blog.csdn.net/u011415955/article/details/37322587

    打赏 评论

相关推荐 更多相似问题