欢迎访问我的新博客: http://www.milkcu.com/blog/
原文地址: http://www.milkcu.com/blog/archives/uva494.html
题目描述
Kindergarten Counting Game
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
解题思路
这个题目要统计每行中的单词数目。
注意对
输入
的处理。
使用了一个状态标志state:
state为1表示上一字符在单词内;
state为0表示上一字符不在单词内。
代码实现
#include <stdio.h> int isl(char c) { if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { return 1; } else { return 0; } } int main(void) { char s[100000]; int rear = 0; int c; while((c = getchar()) != EOF) { s[rear++] = c; } s[rear] = '\0'; int i = 0; int num = 0; int state = 0; while(s[i] != '\0') { if(s[i] == '\n') { printf("%d\n", num); num = 0; state = 0; } else { if(isl(s[i])) { if(state == 0) { num++; } state = 1; } else { state = 0; } } i++; } return 0; }
(全文完)