请问输出结果的解决办法

请教输出结果的解决方法
#include <stdio.h>
int sequence_size(int sequence_array[],int length);

int main(void)
{
    //定义一个字符变量
    char ch;
    int sumaa = 0,sumbb = 0,sumcc = 0,sumdd = 0;
    //输入一个字符串
    //判断是否存在A,B,C,D
    while ((ch = getchar()) != '\n')
    {
    if (ch == 'A')
        //如果存在指定字符,则放进一个变量里存储
        sumaa = sumaa + 1;
        
    else if (ch == 'B')
        //如果存在指定字符,则放进一个变量里存储
        sumbb = sumbb + 1;
    else if (ch == 'C')
        //如果存在指定字符,则放进一个变量里存储
        sumcc = sumcc + 1;
    else if (ch == 'D')
        //如果存在指定字符,则放进一个变量里存储
        sumdd = sumdd + 1;
    }
    //定义一个新的数组,并调用出A-D的输入次数,赋值到数组的元素中
    int sequence_array[4] = {sumaa,sumbb,sumcc,sumdd};
    //计算出数组的总长度
    int length = sizeof(sequence_array)/sizeof(int);
    //定义一个新的函数,使用冒泡算法对数组元素的大小值进行排序
    sequence_size(sequence_array,length);
    //遍历数组所有元素
    for (int count = 0;count < length;count++)
    {
        printf ("%c = %d\n",alpha,sequence_array[count]);

    }
    return 0;
    
}


//使用冒泡算法对数组元素进行比较并按照从小到大进行排序
int sequence_size(int sequence_array[],int length)
{
    int i,j,k;
    //根据main函数里定义的数组:遍历遍历数组
    for (j = 1;j < length;j++)
    {
        //逐个循环遍历相邻的两个数
        for (i = 0;i < length - j;i++)
        {
            //比较相邻两个数值的大小并进行交换
            if (sequence_array[i] > sequence_array[i + 1])
            {
                k = sequence_array[i];
                sequence_array[i] = sequence_array[i + 1];
                sequence_array[i + 1] = k;
            }
        }
    }
        
    
}


该程序首先是要求用户输入A,B,C,D  四个字母进行统计各个字母输入的数量,然后再进行从小到大排序。 这两个功能以上代码都已经实现了,现在关键是:排序出来只有各字母的数量,没有对应哪个字母数量是谁的

例如运行该程序,输入:AAAABBBDDC

结果输出:
1
2
3
4

现在我需要输出结果对应的数量,是哪个字母的?  刚刚接触函数和数组,想了很久,不知道怎么样输出数字的同时,也可以输出字母。好像函数只能返回一个值的
麻烦大家帮帮忙,谢谢了
------解决思路----------------------
建议定义一个结构体映射,比如
typedef struct LetterMap
{
char c;
int n;
}LM;

然后在mian中定义一个结构体数组,可以固定个数的,也可以动态malloc。然后根据输入的字符在此数组中查找(可以做成函数),找到了就给对应的n++,否则就保存进数组中,然后给这个结构体数组排序,排序可以使用qsort系统函数,也可以改改你的排序函数,最后就可以输出c,也就是每个n对应的是哪个字符了。
------解决思路----------------------
如果仅仅是ABCD的话,仅供参考!!!注:如果输入有误,将得不到正确的结果,这个自己可以再进行判断……
#include <stdio.h>

typedef struct Combination
{
int counter;
char ch;
}Combin;

int sequence_size(Combin sequence_array[],int length);

Combin arryCombin[] = {{0, 'A'}, {0, 'B'}, {0, 'C'}, {0, 'D'}};

int main(void)
{
    //定义一个字符变量
    char ch;
    while ((ch = getchar()) != '\n' && ch >= 'A' && ch <= 'D')
    { 
++arryCombin[ch -'A'].counter;  
    }

    int length = sizeof(arryCombin)/sizeof(Combin);
    //定义一个新的函数,使用冒泡算法对数组元素的大小值进行排序
    sequence_size(arryCombin,length);
    //遍历数组所有元素
    for (int count = 0;count < length;count++)
    {
        printf ("%c = %d\n",arryCombin[count].ch ,arryCombin[count].counter);
    }
    return 0;
    
}


//使用冒泡算法对数组元素进行比较并按照从小到大进行排序
int sequence_size(Combin sequence_array[],int length)
{
    int i,j;
    Combin k;
    //根据main函数里定义的数组:遍历遍历数组
    for (j = 1;j < length;j++)
    {
        //逐个循环遍历相邻的两个数
        for (i = 0;i < length - j;i++)
        {
            //比较相邻两个数值的大小并进行交换
            if (sequence_array[i].counter > sequence_array[i + 1].counter)
            {
                k = sequence_array[i];
                sequence_array[i] = sequence_array[i + 1];
                sequence_array[i + 1] = k;
            }
        }
    }           
}