注册 登录
编程论坛 C语言论坛

新手来请教各位大侠

BlueTom 发布于 2020-05-20 21:21, 2041 次点击
大家好,我是新手,正在入门C语言。今天,我遇到个问题:我想把四个数字由大到小排列。于是,我:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a,b,c,d,t;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if (a<b)
    {
        t=a;
        a=b;
        b=t;
    }
    if (b<c)
    {
        t=b;
        b=c;
        c=t;
    }
    if (c<d)
    {
        t=c;
        c=d;
        d=t;
    }
    if (a<d)
    {
        t=d;
        a=d;
        d=t;
    }
    printf("%d%d%d%d",a,b,c,d);
    system("pause");
    return 0;
}

可是运行的时候,比如把100,101,102,103进行排列就出现了这个情况:


101 102 103 100

请问是哪里出问题了?谢谢。
6 回复
#2
forever742020-05-20 21:51
没出问题呀,你把数代入进去它就应该是这个结果。
你可以搜索学习一下排序算法。
#3
吕孟伟2020-05-20 22:32
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a,b,c,d,t=0;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if (a<b)
    {
        t=a;
        a=b;
        b=t;
    }
    if (a<c)
    {
        t=a;
        a=c;
        c=t;
    }
    if (a<d)
    {
        t=a;
        a=d;
        d=t;
    }
    if (b<c)
    {
        t=b;
        b=c;
        c=t;
    }
    if (b<d)
    {
        t=b;
        b=d;
        d=t;
    }
    if (c<d)
    {
        t=c;
        c=d;
        d=t;
    }
   
    printf("%d%d%d%d",a,b,c,d);
    system("pause");
    return 0;
}
#4
BlueTom2020-05-21 08:25
回复 2楼 forever74
我当时打的代码,比如把100,101,102,103排序,输出的结果是100 101 103 102

所以有问题
#5
BlueTom2020-05-21 08:26
回复 3楼 吕孟伟
谢谢解答。

请教一下,int a,b,c,d,t=0中的t=0是什么意思呢?
#6
吕孟伟2020-05-21 09:10
回复 5楼 BlueTom
先初始化一下,以防垃圾值。
#7
BlueTom2020-05-21 17:54
回复 6楼 吕孟伟
哦,原来如此,谢谢。
1