1544: Counting Words
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 650 Solved: 358
[Submit][Status][Web Board]
Description
DongDong prefers English words to English sentences, so he wants to count the words of a sentence. Could you help him?
Input
The first line contains a positive integer T (T<=1000), which means T test cases. Then comes T lines, each line contains a string which combines with several words separated by spaces. Note that there may be more than one space to separate two words.
Output
For each test case, please print the number of words of the sentence.
Sample Input
3
Every night in my dreams
I see you I feel you
That is how I know you go on
Sample Output
5
6
8
HINT
Source
首届全国中医药院校大学生程序设计竞赛
Ac_code:
//way1(现在写这个博客就是为了记录学到的这种新方法):
#include <iostream>
#include <sstream>
#include <stdio.h>
using namespace std;
int main()
{
int T;
cin>>T;
getchar();
while(T--)
{
string s,word;
getline(cin,s);//从终端接收一行字符串,并放入字符串s中
istringstream istr;
istr.str(s);//把s中的字符串存入字符串流中
int Wnum = 0;
while(istr>>word)//每次读取一个单词(以空格为界),存入word中
{
Wnum++;
}
cout<<Wnum<<endl;
}
return 0;
}
//way2:
(之前用C写的)
#include <stdio.h>
#include <string.h>
char a[10005];
int main()
{
int t;
scanf("%d",&t);
getchar();//不要放while里面去了!!
while(t--)
{
memset(a,'\0',sizeof(a));
gets(a);
int start = 0,num = 0;
while(a[start]==' ')
{
start++;
}
for(int i = start; a[i] != '\0'; i++)
{
if(a[i]!=' '&&a[i+1]==' ')
num++;
else if(a[i]!=' '&&a[i+1]=='\0')
num++;
}
printf("%d\n",num);
}
return 0;
}