想请教一下,为什么只有一个输出值?怎么更改呀

void swap(int *a,int *b,int *c){
int t;
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;
}
}
int main(int argc, char *argv[]) {
int a,b,c,i;
char d[3];
scanf("%d %d %d",&a,&b,&c);
scanf("%c %c %c",&d[0],&d[1],&d[2]);
swap(&a,&b,&c);
for(i=0;i<3;i++){
if(d[i] == 'A')
printf("%d",a);
if(d[i] == 'B')
printf("%d",b);
if(d[i] == 'C')
printf("%d",c);
}

return 0;

}

想请教一下,为什么只有一个输出值?怎么更改呀
我的思路是,先给输入的值排序,然后再根据输入的字母输出,

img

img


题目要求:

img

你在%d后面加一个\n换行或者加个空格

修改见注释,供参考:

#include <stdio.h>
void swap(int* a, int* b, int* c) {
    int t;
    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;
    }
}
int main(int argc, char* argv[]) {
    int a, b, c, i;
    char d[3];
    scanf("%d %d %d", &a, &b, &c);
    scanf(" %c%c%c", &d[0], &d[1], &d[2]); //修改
    swap(&a, &b, &c);
    for (i = 0; i < 3; i++) {
        if (d[i] == 'A')
            printf(i == 2 ? "%d" : "%d ", a);//修改
        if (d[i] == 'B')
            printf(i == 2 ? "%d" : "%d ", b);//修改
        if (d[i] == 'C')
            printf(i == 2 ? "%d" : "%d ", c);//修改
    }
    return 0;
}