C语言—字符统计

时间:2025-02-09 07:19:34

一、

给出一串字符,要求统计出里面的字母、数字、空格以及其他字符的个数。
字母:A, B, ..., Z、a, b, ..., z组成
数字:0, 1, ..., 9
空格:" "(不包括引号)
剩下的可打印字符全为其他字符。

输入格式:测试数据有多组。
每组数据为一行(长度不超过100000)。
数据至文件结束(EOF)为止。

输出格式:
每组输入对应一行输出。

包括四个整数a b c d,分别代表字母、数字、空格和其他字符的个数。

输入样例:
A0 ,
输出样例:
在这里给出相应的输出。例如:

1 1 1 1

#include<>
#include<>
int main()
{
    int n,i;
    char a[100000];
    int b,c,d,e;
    while(gets(a)!=NULL)
    {
        n=strlen(a);
        b=0;c=0;d=0;e=0;
        for(i=0;i<n;i++)
        {
            if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z')
                b++;
            else if(a[i]>=48&&a[i]<=57)//数字的ascii码值是48~57
                c++;
            else if(a[i]==' ')
                d++;
            else
                e++;
        }
        printf("%d %d %d %d\n",b,c,d,e);
    }
    return 0;
}

二、

输入英文句子,输出该句子中除了空格外出现次数最多的字符及其出现的次数。

输入格式:
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。

输出格式:
逐行输出每个句子中出现次数最多的字符及其出现的次数(如果有多个字符的次数相同,只输出ASCII码最小的字符)。

输入样例:
I am a student
a good programming problem
ABCD abcd ABCD abcd
输出样例:
在这里给出相应的输出。例如:

a 2
o 4
A 2

#include<>
#include<>
int main()
{
    int n,i,t,max;
    char a[101];
    int b[130];
    while(gets(a)!=NULL)
    {
        int b[130]={0};
        for(i=0;a[i]!='\0';i++)
        {
            if(a[i]!=' ')
                b[a[i]]++;//a[i]转换
        }
        max=b[0];t=0;
        for(i=1;i<130;i++)
        {
            if(max<b[i])
            {
                max=b[i];
                t=i;
            }
        }
        printf("%c %d\n",t,max);//t转换
    }
    return 0;
}