祝行远 2022-10-10 15:47 采纳率: 75%
浏览 33
已结题

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

我不知道哪里还有问题ye

img

img

#include<stdio.h>
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

  • 写回答

3条回答 默认 最新

  • lzl2040 新星创作者: 人工智能技术领域 2022-10-10 15:58
    关注

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

    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 创建了问题 10月10日