从小到大输出三个数字,运行结果不对

img

主要问题是没有加括号问题导致的,如果不加括号,默认情况下,if下面的第一条程序会在if语句中,后面的会在if外面执行,所以,就会出现与你预期结果不符。
当if中有多条语句的时候,花括号是不能够忽略的。

#include <stdio.h>
#include <stdlib.h>

int main() {

    int x,y,z,t;
    scanf("%d%d%d",&x,&y,&z);
    if(x>y) {
        t=x;
        x=y;
        y=t;
    }

    if(x>z) {
        t=z;
        z=x;
        x=t;
    }
    if(y>z) {
        t=y;
        y=z;
        z=t;
    }
    printf("%d %d %d",x,y,z);


    return 0;

}



你把if后面的语句用大括号括起来看看

if后面如果不加大括号的话,默认第一句是if的执行语句,所以你这题应该在if后加大括号