您的位置:首页 > 其它

UVA 494 Kindergarten Counting Game 单词统计

2015-07-29 18:13 357 查看
原题: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=435

题目:

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

思路:

统计每行有多少个单词,单词应是连续的大小写字母。其他符号都视为单词间的分隔符。

用fgets读可以读空格。

代码:

#include <iostream>
#include"string.h"
#include"cstdio"
#include"stdlib.h"
#include"algorithm"
using namespace std;

int main()
{
const int N = 1024;
char s
;
//fgets可以读取以回车为结束的内容,读到EOF返回false结束循环
while(fgets(s,N,stdin))
{
int ans=0;
int l=strlen(s);
int i=0;
//先处理前面的其他字符,然后会到达第一个字母
while(s[i]<65||s[i]>90&&s[i]<97||s[i]>122)
{
i++;
}
for(;i<l;i++)
{
//寻找第一个非字母字符,找到即为第一个单词结束
if(s[i]<65||s[i]>90&&s[i]<97||s[i]>122)
{
ans++;
}
//跳过所有的多余符号
while(s[i]<65||s[i]>90&&s[i]<97||s[i]>122)
{
i++;
}
}
printf("%d\n",ans);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: