统计单词

60 阅读1分钟

题目描述

编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词)

输入描述:

输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。

输出描述:

可能有多组测试数据,对于每组数据,输出字符串中每个单词包含的字母的个数。

示例

输入:hello how are you.
输出:5 3 3 3

思路

  • 将一句话中的多个单词,看做一个一个单词输入。

  • 每输入一次,就判断单词的长度,并输出。

  • 若单词的最后一个字符是'.',则输出单词长度-1;否则直接输出单词长度。

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){
        string s;
	while(cin>>s){
		if(s[s.size()-1] == '.'){
			cout<<s.size()-1;
			//break;
		}
		else cout<<s.size()<<" ";
	} 
	return 0;
}

小结

  • 本来想着用getline实现获取一行,正好还能以.结束,getline(cin,s,'.'),但是发现虽然输入好写,但是以后的单词分隔很麻烦,所以放弃这种想法。

  • 直接把一行单词想成一个一个单词,用cin输入一个单词,直接判断它的长度并输出。若单词结尾是'.',则输出数组长度减1。单词的最后一个字符即下标为字母长度-1。