字符统计(C代码实现)
/*功能:字符统计
*输入:
*有多组测试数据,每行一个字符串,串长小于1e7
*以EOF标志结束程序。
*
*输出:
*对于每组测试,每行输出四个整数,第一个数是空格数,
*第二个是数字字符个数,第三个是字母个数(包括大小写)
*第四个是单词个数,被空格所分隔的任何非空字符串都看作一个单词
*
*样例输入:
*
ABC abcd 12345
* ABCDEFG
*
*样例输出:
* 2 5 7 3
* 2 0 7 1
*
*限制:
* Time 500ms
*
Memory 1000kb
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char s;
int digs=0, chs=0, blanks=0, words=0, m=0, flag=0; //flag为word(单词)标志符
printf("Please input a word(in english):n");
while((s=getchar())!=EOF) //循环输入,CTRL+Z退出循环
{
if(s=='n')
{
if(flag==1)
printf("空格:%d 数字:%d 字符:%d 单词:%dn", blanks, digs, chs, words+1);
else printf("空格:%d 数字:%d 字符:%d 单词:%dn", blanks, digs, chs, words);
digs=chs=blanks=words=m=0, flag=1;
}
else
if(s==' ')
{blanks++;flag=0;} //计数空格个数, 根据空格判断单词
else
if(s>='0'&&s<='9')
{digs++;m=1;flag=1;} //计数数字个数
else
if(s>='A'&&s<='Z'||s>='a'&&s<='z') //计数字母个数
{chs++;m=1;flag=1;}
else flag=1;
if(m==1&&flag==0)
{words++;m=0;flag=2;} //当m=1且flag=0,m是为了避免多个空格存在时,单词个数判断不准
}
system("pause");
return 0;
}