1544: Counting Words(藉助 istringstream進行統計)

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章