时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3511
解决:1290
-
题目描述:
-
编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。
(凡是以一个或多个空格隔开的部分就为一个单词)
-
输入:
-
输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出字符串中每个单词包含的字母的个数。
-
样例输入:
-
hello how are you.
-
样例输出:
-
5 3 3 3
【分析】需要注意的是scanf("%s",buf)与cin>>buf输入数组,在没有输入任何字符的时候按空格、回车是不算字符的,如本题输入( hello how are you.)结果是一样的,在字符后面的空格为结束符,即变成(hello'\0' how'\0'are'\0'you.'\0')可以这么理解,只是这样最后一个空格比较难解决,幸好有题中说以'.为结束符,这样就有了界限,根据这个界限来换行,进行下一组输入。'
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char buf[1000];
int i,num;
while(scanf("%s",buf)!=EOF)
{
i=num = 0;
for(i =0;buf[i]!='\0'&&buf[i]!='.';i++)
num++;
if(buf[i]=='.') cout<<num<<endl;
else
cout<<num<<' ';
}
return 0;
}