1498: 统计单词数

Memory Limit:2 MB Time Limit:1.000 S Judge Style:Text Compare Creator:
Submit:156 Solved:67

Description

在写文档或投稿时经常需要计算一篇文档中的单词数,先给定一篇英文的文档,请统计单词的个数。在此“1个单词”定义为:一个或多个空格或换行符分隔的字符串计为一个单词。当然,连续的空格和换行符不是“1个单词”。虽然这个定义不甚准确但实用。



注意,仅考虑由空格或者换行符作为分隔符

不允许普通用户打印题目,请教师登录后使用。如有疑问请联系管理员!

Input

1个字符以上的任意长度英文文本(可能包含大小写字母、空格、数字、标点符号)。注意,文本可能会很长,很长,很长。输入中单词的个数可能达到4294967296(即2的32次方)个。

Output

单词的个数。

Sample Input Copy

It   is  a cat,   


I   like  it.   

Sample Output Copy

7

HINT

注意:
1:应该注意考虑特殊情况:例如文章开始处有若干空格或者回车的情形。
2:当以如下的方式使用字符数组输入字符串数据时:
char str[此处为足够大的数组元素个数];
scanf("%s",str);
当输入字符串中包含空格、回车或者跳格字符时,空格、回车和跳格将被认为是2个字符串之间的分隔,因此用这种方法输入的字符串中不可能包含空格、回车和跳格字符的。
3:当需要以行为单位,输入一行一行的字符串,那么可利用gets(str)来输入一行字符串是,输入到字符串变量中的字符可包含空格和跳格字符,但是不能包含回车字符。对于没有给定数据长度的情况,可以利用gets( )函数的返回值为为空(它输入数据已经输入完毕)来判断输入是否结束。例如,如下形式。
char str[足够大的元素个数];
while (gets(str)!=NULL)
{
//每循环一次,处理每一行字符串
}
4:如果需要单个字符处理,则必须使用scanf("%c",&c);或者 ch=getchar();此时,不管任何字符都可以输入到字符变量中包括空格、回车和跳格字符。
while(scanf("%c",&ch)
{
//每循环一次,处理一个字符
}