/* 
 从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言) 
 */ 
#include <stdio.h> 
#include <string.h> 
 
 
int main() 
{ 
    //定义字符串 
    char str[100]; 
    printf("请输入一串字符串:\n"); 
    scanf("%s",str); 
    // 定义四个变量用来存放ABCD出现的次数 
    int a = 0; 
    int b = 0; 
    int c = 0; 
    int d = 0; 
    // 定义变量length用来存放输入字符串的长度 
    unsigned long length = strlen(str); 
    //for循环判断ABCD出现的次数 
    for (int i = 0; i<length; i++) { 
         
        // 统计A和a出现的次数 
        if (str[i] == 'A' || str[i] == 'a') { 
            a++; 
        } 
         
        // 统计B和b出现的次数 
        else if (str[i] == 'B' || str[i] == 'b'){ 
            b++; 
        } 
         
        // 统计C和c出现的次数 
        else if (str[i] == 'C' || str[i] == 'c'){ 
            c++; 
        } 
         
        // 统计D和d出现的次数 
        else if (str[i] == 'D' || str[i] == 'd'){ 
            d++; 
        } 
    } // 定义一个数组x用来存放ABCD出现的次数 
    int x[4] = {a,b,c,d}; 
     
    // 定义temp用于冒泡排序标记排序趟数 
    int temp; 
     
    // 冒泡排序  将a,b,c,d降序排序,i表示排序的趟数,j表示每趟排序的比较次数 
    for (int i = 0; i<3; i++) 
    { 
        for(int j = 0;j<3-i;j++) 
        { 
            if (x[j] < x[j+1]) 
            { 
                // 当前一个元素小于后一个元素时,交换它们的位置 
                temp = x[j]; 
                x[j] = x[j+1]; 
                x[j+1] = temp; 
            } 
             
        } 
    } 
     
    // 定义一个数组y用来存放ABCD标志 
    char y[4]; 
     
    // 将数组x与数组y的出现次数和标志一一对应 
    for (int i = 0; i<4; i++) 
    { 
        // 如果出现a次,则y[i]='A' 
        if(x[i] == a && y[0] != 'A' && y[1] != 'A' && y[2] != 'A' && y[3] != 'A') 
        { 
            y[i] = 'A'; 
        } 
        // 如果出现b次,则y[i]='B' 
        else if(x[i] == b && y[0] != 'B' && y[1] != 'B' && y[2] != 'B' && y[3] != 'B') 
        { 
            y[i] = 'B'; 
        } 
        // 如果出现c次,则y[i]='C' 
        else if(x[i] == c && y[0] != 'C' && y[1] != 'C' && y[2] != 'C' && y[3] != 'C') 
        { 
            y[i] = 'C'; 
        } 
        // 如果出现d次,则y[i]='D' 
        else 
        { 
            y[i] = 'D'; 
        } 
    } 
     
    // 降序打印输出每个字母出现的次数 
    for (int i = 0; i<4; i++) 
        printf("%c出现%d次\n",y[i],x[i]); 
     
    return 0; 
} 
 |   
        
 
    
    
    
     
 
 |