怎么排序结果会是这样的呀?

img


怎么排序结果会是这样的呀?有些排序是正常的,有些数字重复乱到离谱,是哪个代码写错了吗

你的if语句都没有加括号啊,if语句如果后面不加括号,那么只有if语句下面的第一句属于if语句,其它的不属于if语句。
在你的代码中,只有t = a;这一句if(a>b)这个if语句。a=b;b=t;则不属于if(a>b)。
如果想让a=b;b=t;也属于if(a>b),就需要加{}。如下:

if (a > b)
    {
        t = a;
        a = b;
        b = t;
    }

加上{}后,就表示{}中的所有语句都属于if(a>b)这个if语句。
代码整体修改如下:

#include <stdio.h>
int main()
{
    int a, b, c, t;
    scanf_s("%d,%d,%d", &a, &b, &c);
    if (a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    if (a > c)
    {
        t = a;
        a = c;
        c = t;
    }
    if (b > c)
    {
        t = b;
        b = c;
        c = t;
    }
    printf("%d,%d,%d", a, b, c);
    return 0;
}


最后一个 if 也是要判 a>b,然后交换

 
#include<stdio.h>
#include<string.h>
int main()
{
    int a, b, c, t;

    scanf("%d,%d,%d", &a, &b, &c);

    if (a > b) { t = a; a = b; b = t;}
    if (a > c) { t = a; a = c; c = t;}
    if (a > b) { t = a; a = b; b = t;}

    printf("%d,%d,%d", a, b, c);

    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632