绝对值比较,总是跑不过怎么办

我不知道哪里还有问题ye

img

img

#include
int main()
{
int a[3] = { 0 };
int b[3] = { 0 };
int c[3] = { 0 };
int max = 0;
int mid = 0;
int min = 0;
int t = 0;

scanf("%d %d %d", &a[0],&a[1],&a[2]);

for (int i = 0; i < 3; i++)
{
    if (a[i] < 0)
        b[i] = -a[i];
    else
        b[i] = a[i];
}
if (b[0] > b[1])
{ t = a[0]; a[0] = a[1]; a[1] = t; } 

if (b[0] > b[2])
{ t = a[0]; a[0] = a[2]; a[2] = t; } 

if (b[1] > b[2]) 
{ t = a[1]; a[1] = a[2]; a[2] = t; } 

if (b[0] > b[1])
{
    t = b[0]; b[0] = b[1]; b[1] = t;
} 

if (b[0] > b[2])
{
    t = b[0]; b[0] = b[2]; b[2] = t;
} 

if (b[1] > b[2])
{
    t = b[1]; b[1] = b[2]; b[2] = t;
} 
if (b[0] == b[1])
{
    if (a[0] > a[1])
    {
        t = a[0]; a[0] = a[1]; a[1] = t;
    }
}
if (b[1] == b[2])
{
    if (a[1] > a[2])
    {
        t = a[1]; a[1] = a[2]; a[2] = t;
    }
}
if (b[0] == b[1] && b[1] == b[2])
{
    if (a[0] > a[1])
    {
        t = a[0]; a[0] = a[1]; a[1] = t;
    }
    if (a[0] > a[2])
    {
        t = a[0]; a[0] = a[2]; a[2] = t;
    } 

    if (a[1] > a[2])
    {
        t = a[1]; a[1] = a[2]; a[2] = t;
    } 

}
for (int i = 0; i < 3; i++)
{
    printf("%d ", a[i]);
    
}

    return 0;

}

img

题主推荐学下冒泡排序哦,这样这题就比较简单了

#include<stdio.h>
int main()
{
    int a[3] = { 0 };
    int b[3] = { 0 };
    int t = 0;
    scanf("%d %d %d", &a[0],&a[1],&a[2]);
    for (int i = 0; i < 3; i++)
    {
        if (a[i] < 0)
            b[i] = -a[i];
        else
            b[i] = a[i];
    }
    //使用冒泡排序
    int mid;
    for(int i = 0;i < 3;i++){
        for(int j = i + 1;j < 3;j++){
            if(b[i] > b[j]){
                mid = a[i];
                a[i] = a[j];
                a[j] = mid;
                mid = b[i];
                b[i] = b[j];
                b[j] = mid;
            }else if(b[i] == b[j]){
                if(a[i] > a[j]){
                    mid = a[i];
                    a[i] = a[j];
                    a[j] = mid;
                    
                    mid = b[i];
                    b[i] = b[j];
                    b[j] = mid;
                }
            }
        }
    } 
    for (int i = 0; i < 3; i++)
    {
        printf("%d ", a[i]);
        
    }
     
        return 0;
}

这代码写的真是又臭又长
你都已经放数组里了,为什么不直接循环一下冒泡排序,为什么要这样一个一个的写死
满眼代码,写着费劲,看着也费劲,调试更费劲