把一个字符串中的所有字符按从小到大排序

问题遇到的现象和发生背景

题目如下:

img

问题相关代码,请勿粘贴截图

#include<stdio.h>
int main()
{
    int i,q,t,y,n=0;
    char a[20],b[20];
    for(i=0;a[i]!='\0';i++)
    {
        scanf("%c",&a[i]);
    }
    y=i+1;
    for(i=0;i<t;i++)
    {
        for(q=i+1;q<t;q++)
        {
            b[n]=a[i];
            if(a[q]<a[i])
            {
                b[n]=a[q];
            }
        }
        n++;
    }
    for(n=0;n<20;n++)
    {printf("%c",b[n]);}
    return 0;
}
运行结果及报错内容 运行出来是乱码
我的解答思路和尝试过的方法

就是想通过循环依次找出最小的数然后排列成一个新的数列输出

我想要达到的结果

最好不要使用sort字符串