【题目描述】
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。
注意:如果有标点符号(如连字符,逗号),标点符号算作与之相连的词的一部分。没有被空格间开的符号串,都算作单词。
【输入】
一行单词序列,最少1个单词,最多300个单词,单词之间用至少1个空格间隔。单词序列总长度不超过1000。
【输出】
依次输出对应单词的长度,之间以逗号间隔。
【输入样例】
She was born in 1990-01-02 and from Beijing city.
【输出样例】
3,3,4,2,10,3,4,7,5
C++:
#include<iostream> using namespace std; int main() { string s; //string可以直接输入字符串 getline(cin,s); //getline可以输入含空格的字符串 int count=0; //计算每个单词的长度 for(int i=0;i<s.length();i++) //遍历每个字符 { count++; //每次遍历直接先计数+1 if(s[i]==' ') //如果该字符是空格的话 { count--; //计数减1因为空格不包含进去 if(count!=0) //如果计数不为0的话就输出 cout<<count<<","; count=0; //然后计数归0 } } cout<<count<<endl; //因为最后一个单词后面没有空格所以在遍历结束后输出 }
C语言:
#include<stdio.h> int main() { char s[1001]; gets(s); int count=0; for(int i=0;i<strlen(s);i++) { count++; if(s[i]==' ') { count--; if(count!=0) printf("%d,",count); count=0; } } printf("%d",count); }
注:现在的信奥赛一本通不支持C语言中的gets输入直接获取字符串,因为其安全性不高,C语言中使用fgets(s,n,stdin)来从输入缓冲区中读取字符,其中s为字符数组变量名,n为长度,stdin为输入缓冲区