12.2.2统计输入的字符串每个大小写字符所占的比例(C语言结构体+ASCII码的应用)

/**
 * 大小写字母的统计
 * 
*/
#include <stdio.h>
void main()
{
    int i, j, total = 0;
    //设计结构体--设计及结构体中有哪些成员变量--定义结构体的同时对进行声明
    struct letter
    {
        //字母
        char c;
        //出现的次数
        int n;
        //出现的次数百分比
        float freq;
    } capt[26], low[26];
    char ch;
    //对所有的声明的结构体进行初始化
    for (i = 0; i < 26; i++)
    {
        capt[i].c = 'A' + i;
        capt[i].n = 0;
        capt[i].freq = 0;
        low[i].c = 'a' + i;
        low[i].n = 0;
        low[i].freq = 0;
    }
    printf("Input strings ,\",@\" for end.\n");
    //还是需要手动的输入一串字符
    ch = getchar();
    while (ch != '@')
    {
        if (ch > 'A' && ch <= 'Z')
        {

            capt[ch - 'A'].n++;
        }
        else if (ch >= 'a' && ch <= 'z')
        {
          //  printf("hhhhh%c\n", ch);
            low[ch - 'a'].n++;
        }
        total++;
        //没有结束符号就继续输入
        ch = getchar();
        printf("input");
    }
    //计算不同字符出现频率的百分比
    for (i = 0; i < 26; i++)
    {
        if (capt[i].n != 0)
        {
            capt[i].freq = ((float)capt[i].n / total) * 100;
        }
    }
    //大小写的计算可以放在一起。。。
    for (i = 0; i < 26; i++)
    {
        if (low[i].n != 0)
        {
            low[i].freq = ((float)low[i].n / total) * 100;
        }
    }
    //输出统计的结果
    j = 0;
    for (i = 0; i < 26; i++)
    {
        //printf("------------");

        if (j % 5 == 0)
        {
            printf("\n");
        }
        //printf("gg++++gg%d", capt[i].n);
        if (capt[i].n != 0)
        {
          //  printf("++++++");
            printf("%c\t,%lf\t", capt[i].c, capt[i].freq);
        }
        j++;
    }
    //输出小写的部分
    j = 0;
    for (i = 0; i < 26; i++)
    {
        //printf("------------");

        if (j % 5 == 0)
        {
            printf("\n");
        }
        //printf("gg++++gg%d", capt[i].n);
        if (low[i].n != 0)
        {
            //printf("++++++");
            printf("%c\t,%lf\t", low[i].c, low[i].freq);
        }
        j++;
    }
}

发布了212 篇原创文章 · 获赞 32 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_42664961/article/details/103984811