vlambda博客
学习文章列表

C语言编程-9_4 字符统计

更多精彩,请点击上方蓝字关注我们!

输入一个字符串(其长度不超过81),分别统计其中26个英文字母出现的次数(不区分大、小写字母),并按字母出现次数从高到低排序,若次数相同,按字母顺序排列。字母输出格式举例,例如:A-3,表示字母A出现3次,C-0表示字母C没有出现。


       输入:


       第一行为输入,占一行,输入的字符串可能含有空格


       输出:


       第二行为输出,占一行。按照字母输出格式从高到低输出,各字母输出之间用一个空格字符分隔。


       样例:


       123abcAABXxwvUu+



       A-3 B-2 U-2 X-2 C-1 V-1 W-1 D-0 E-0 F-0 G-0 H-0 I-0 J-0 K-0 L-0 M-0 N-0 O-0   P-0 Q-0 R-0 S-0 T-0 Y-0 Z-0 



//插入排序法

#include<stdio.h>

#include<string.h>





int main()

{

    char str[81] = "123abcAABXxwvUu+";

    gets(str);

    int letter_stat[26] = {0};

    char letter[26] = { ' ' };

    for (int i = 0; i < 26; i++)

    {

        letter[i] = i + 'A';

    }

    int i = 0;

    while (str[i])

    {

        int k = 0;

        if (str[i] >= 'A'&&str[i] <= 'Z')

        {

            k = str[i] - 'A';

            letter_stat[k]++;

        }

        else if (str[i] >= 'a'&&str[i] <= 'z')

        {

            k = str[i] - 'a';

            letter_stat[k]++;

        }

        i++;

    }



    for (int i = 0; i < 26; i++)

    {

        int k = letter_stat[i];

        int temp = letter[i];

        int j = i - 1;

        while (j >= 0 && letter_stat[j] < k)

        {

            letter_stat[j + 1] = letter_stat[j];

            letter[j + 1] = letter[j];

            j--;

        }

        letter_stat[j + 1] = k;

        letter[j + 1] = temp;

    }

    for (int i = 0; i < 25; i++)

    {

        printf("%c-%d ", letter[i],letter_stat[i]);

    }

    printf("%c-%d", letter[25], letter_stat[25]);

    return 0;

}

//冒泡排序法

#include<stdio.h>

#include<string.h>





int main()

{

    char str[81] = "123abcAABXxwvUu+";

    gets(str);

    int letter_stat[26] = {0};

    char letter[26] = { ' ' };

    for (int i = 0; i < 26; i++)

    {

        letter[i] = i + 'A';

    }

    int i = 0;

    while (str[i])

    {

        int k = 0;

        if (str[i] >= 'A'&&str[i] <= 'Z')

        {

            k = str[i] - 'A';

            letter_stat[k]++;

        }

        else if (str[i] >= 'a'&&str[i] <= 'z')

        {

            k = str[i] - 'a';

            letter_stat[k]++;

        }

        i++;

    }

    for (int i = 0; i < 25; i++)

        for (int j = 0; j < 25 - i; j++)

        {



            if (letter_stat[j] < letter_stat[j + 1])

            {

                int temp = letter_stat[j + 1];

                letter_stat[j + 1] = letter_stat[j];

                letter_stat[j] = temp;



                temp = letter[j + 1];

                letter[j + 1] = letter[j];

                letter[j] = temp;



            }



        }



    for (int i = 0; i < 25; i++)

    {

        printf("%c-%d ", letter[i],letter_stat[i]);

    }

    printf("%c-%d", letter[25], letter_stat[25]);

    return 0;

}



C语言编程-9_4 字符统计

C语言编程-9_4 字符统计
END

C语言编程-9_4 字符统计


碧茂课堂精彩课程推荐:

1.Cloudera数据分析课;

2.Spark和Hadoop开发员培训;

3.大数据机器学习之推荐系统;

4.Python数据分析与机器学习实战;

现在注册互动得海量学币,大量精品课程免费送!




关注最新行业动态,

加群进行技术交流