原题: 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[N];
//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);
}
}