您的位置:首页 > 其它

uva 494

2014-03-16 13:26 281 查看

Kindergarten Counting Game
Everybody sit down in a circle. Ok. Listen to me carefully.

``Woooooo, you scwewy wabbit!''

Now, could someone tell me how many words I just said?

Input and Output

Input to your program will consist of a series of lines, each line containing multiple words (at least one). A ``word'' is defined as a consecutive sequence of letters (upper and/or lower case).

Your program should output a word count for each line of input. Each word count should be printed on a separate line.

Sample Input

Meep Meep!
I tot I taw a putty tat.
I did! I did! I did taw a putty tat.
Shsssssssssh ... I am hunting wabbits. Heh Heh Heh Heh ...


Sample Output

2
7
10
9

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 100000
char word[MAX];
int main()
{
int i,j;
int len;
long int count=0;
int inword=0;
while(fgets(word,sizeof(word),stdin))
{
len=strlen(word);
count=0;
for(i=0; i<len; i++)
{
if(isalpha(word[i]))
inword=1;
else
{
if(inword)
{
count++;
inword=0;
}
}
}
printf("%ld\n",count);
}
return 0;
}

要点一:记录单词个数

要点二:注意什么是单词,只有一个字母不是单词

要点三:输入含空格的一行,也可以逐个字母读取,不过比较麻烦

要点四:fgets

从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

数 (ISO C)编辑函数原型:char *fgets(char *buf, int bufsize, FILE *stream);参数:*buf: 字符型指针,指向用来存储所得数据的地址。bufsize: 整型数据,指明存储数据的大小。*stream: 文件结构体指针,将要读取的文件流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: