字符统计


字符统计(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;
}

 

,

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注