字符统计
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。