你的程序要讀入一行文本,其中以空格分隔爲若干個單詞,以.
結束。你要輸出每個單詞的長度。這裏的單詞與語言無關,可以包括各種符號,比如it's
算一個單詞,長度爲4。注意,行中可能出現連續的空格;最後的.
不計算在內。
輸入格式:
輸入在一行中給出一行文本,以.
結束
提示:用scanf("%c",...);
來讀入一個字符,直到讀到.
爲止。
輸出格式:
在一行中輸出這行文本對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。
輸入樣例:
It's great to see you here.
輸出樣例:
4 5 2 3 3 4
解析:
注意空格的情況
1、開頭有空格
2、點前面有空格
3、有多個連續空格
#include <iostream>
#include <string>
#include <queue>
using namespace std;
int main () {
int len, i = -1, cnt = 0, flag = 0;
queue<int> q;
string s;
getline(cin, s); //接收整句話
len = s.length();
while ( ++i < len ) {
if( s[i] != '.' ) {
if ( s[i] != ' ') { //不是空格和點就計數
cnt++;
flag = 0; //表示遇到不是空格
}
else if ( !flag && cnt != 0 ) { //如果遇到第一個空格,且這個空格不是開頭的
//cout << cnt;
q.push(cnt);
cnt = 0; //輸出後置0
flag = 1; //表示遇到空格,用來處理多個連續空格
}
}
else if ( cnt != 0 ) //如果點前面沒有空格
//cout << " " << cnt;
q.push(cnt);
}
if ( q.empty() ) { } //爲空時什麼也不做
else {
cout << q.front();
q.pop();
while ( !q.empty() ) {
cout << " " << q.front();
q.pop();
}
}
return 0;
}