站点图标 陌路寒暄

字符统计

字符统计

时间: 1ms        内存:64M

描述:

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

输入:

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

输出:

每组输入对应一行输出。包括四个整数a b c d,分别代表字母、数字、空格和其他字符的个数。

示例输入:

A0 ,

示例输出:

1 1 1 1

提示:

参考答案(内存最优[752]):

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[10001],f;
    long a,b,c,d,i;
    while(gets(str)!=NULL)
    {
        a=0;b=0;c=0;d=0;
        for(i=0;(f=str[i])!='\0';i++)
        {
            if(f>='a'&&f<='z'||f>='A'&&f<='Z')
            a++;
            else if(f>='0'&&f<='9')
            b++;
            else if(f==' ')
            c++;
            else d++;
        }
        printf("%ld %ld %ld %ld\n",a,b,c,d);
    }
    return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char s[100000],m;
    while(gets(s)!=NULL)
    {
        int a=0,b=0,c=0,d=0,m;
        for(i=0;i<strlen(s);i++)
        {
            m=s[i];
            if(m>='a'&&m<='z'||m>='A'&&m<='Z')
            a++;
            else if(m>='0'&&m<='9')
            b++;
            else if(m==' ')
            c++;
            else
            d++;
        }
        printf("%d %d %d %d\n",a,b,c,d);
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版