为什么输入三个数从大到小排序,输出结果是这样啊,哪里出问题了吗

img

img


为什么输入三个数从大到小排序,输出结果是这样啊,哪里出问题了吗

printf后面的a b c不用加&

打印的时候就不需要 & 了

【以下回答由 GPT 生成】

问题的原因在于你的代码中对于大小关系的判断条件有误。在第一个if语句中,你判断了a是否小于b,如果成立,就交换a和b的值。接着在第二个if语句中,你判断了a是否小于c,如果成立,就交换a和c的值。这两个if语句是正确的。然而,在第三个if语句中,你判断了b是否小于c,如果成立,就交换b和c的值。这是错误的,因为在前两个if语句中,a和b的值已经发生了交换。所以,在第三个if语句中,应该判断交换后的b是否小于c,而不是原始的b。

下面是修复后的代码:

#include<stdio.h>
#include<stdlib.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 (b<c){
        t = b;
        b = c;
        c = t;
    }
    printf("%d %d %d", a, b, c);
    system("pause");
    return 0;
}

在最后的printf语句中,我还添加了空格,以便输出的数值更易读。

此时,代码就能够正确地将输入的三个数从大到小排序,并且按照预期的顺序输出了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^