编译器从上两个列子都是对的,但是放在洛谷上显示结果全是错的,哪里有错

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include<stdio.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;
    }
    getchar();
    int i=0;
    char d[3];
    for(i=0;i<3;i++)
    {
        scanf("%c",&d[i]);
        if(d[i]=='A')
        printf("%d",a);
        else if(d[i]=='B')
        printf("%d",b);
        else if(d[i]=='C')
        printf("%d",c);
        if(i+1!=3)
        printf(" ");
    }
    return 0;
}

三个整数分别为 A,B,CA,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A < B < CA<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

【输入格式】

第一行包含三个正整数 A,B,CA,B,C,不一定是按这个顺序。这三个数字都小于或等于 100100。第二行包含三个大写字母 AA、BB 和 CC(它们之间没有空格)表示所需的顺序。

【输出格式】

在一行中输出 AA,BB 和 CC,用一个 (空格)隔开。

感谢 @smartzzh 提供的翻译

输入输出样例
输入 #1复制
1 5 3
ABC
输出 #1复制
1 3 5
输入 #2复制
6 4 2
CAB
输出 #2复制
6 2 4

供参考:

#include <stdio.h>
int main()
{
    int a[3], i, j, t;
    char ch[4];
    for (i = 0; i < 3; i++)
    {
        scanf("%d", &a[i]);
        if (i > 0)
        {
            for (j = 0; j < i; j++)
            {
                if (a[i] < a[j])
                {
                    t = a[i]; a[i] = a[j]; a[j] = t;
                }
            }
        }
    }
    scanf("%s", ch);
    printf("%d %d %d",a[ch[0]-'A'], a[ch[1]-'A'], a[ch[2]-'A']);
    return 0;
}

发一下题目链接,我测试一下