编程统计输入字符序列中每个大(小)写英文字母出现的次数,

并按出现次数大小打印相应的字母及出现的次数,要求出现次数相同的字母按字典顺序打印。
【c语言】
主要是如何按出现次数大小打印没有思路

我的思路是:
1、先获取字符串输入字符数组
2、遍历数组,把字符及其计数分别存入一个字符数组和int数组,一 一对应。
3、遍历计数数组,按次数大小排序数组及其字符数组,如果次数相同,用strcmp函数比较字符的字典顺序,按字典顺序排序
4、打印结果
代码如下:

#include <stdio.h>
#include <string.h> 
//将字符存入字符数组letter,并更新其计数 
void storeLetter(char * letter,int * num,char ch){
    
    int i=0;
    int find=0;
    while(letter[i]!='\0'){ 
        
        if(letter[i]==ch){
            find=1;
            num[i]++;
        }
        i++;
    }
    
    if(find==0){
        letter[i]=ch;
        num[i]++;
    }
}


int main(void){
    
    char str[100];
    char letter[52]={'\0'};
    int num[52]={0};
    
    printf("请输入一个字符串:\n");
    gets(str);
    
    int i=0;
    //把字符串里的每个字符进行计数并存储 
    while(str[i]!='\0'){
        storeLetter(letter,num,str[i]);
        i++;
    }
//    printf("i=%d\n",i);
    
    int k,j;
    char ch;
    int tnum;
    int more;
    for(k=0;k<i-1;k++){
        more=num[k];        
        for(j=k;j<i;j++){
            //把字母及其计数按次数从大到小排序 
            if(more<num[j]){
                
                more = num[j];
                
                ch=letter[k];
                letter[k]=letter[j];
                letter[j]=ch;
                
                tnum=num[k];
                num[k]=num[j];
                num[j]=tnum;
                
            }
            
            //如果两个字母次数相同,则按字典顺序排序 
            if(more==num[j]&&strcmp(letter+k,letter+j)>0){
                
                more = num[j];
                
                ch=letter[k];
                letter[k]=letter[j];
                letter[j]=ch;
                
                tnum=num[k];
                num[k]=num[j];
                num[j]=tnum;
                
            }
        }
    }
    
    
    k=0;
    //打印结果 
    while(letter[k]!='\0'){
        printf("%c:%d\n",letter[k],num[k]);
        k++;
    }
    
    return 0;
    
} 

img