输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。
注意,若是有标点符号(如连字符,逗号),标点符号算做与之相连的词的一部分。没有被空格间开的符号串,都算做单词。ios
She was born in 1990-01-02 and from Beijing city.
3,3,4,2,10,3,4,7,5
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 int main() 5 { 6 char s[1001]; 7 int t = 0, a[1001] = { 0 }, m = 0; 8 gets(s); 9 int l=strlen(s); 10 for (int i = 0; i <=l ; ++i) 11 { 12 if (s[i] != ' '&&s[i] != '\0') 13 { 14 t++; 15 } 16 else if (s[i - 1] != ' '&&(s[i] == ' '||s[i] == '\0')) 17 { 18 a[m] = t; 19 ++m; 20 } 21 if (s[i] == ' '&&s[i + 1] != ' ') 22 { 23 t = 0; 24 } 25 } 26 int j = 0; 27 cout << a[0]; 28 while (a[j+1] != 0) 29 { 30 ++j; 31 cout << "," << a[j]; 32 } 33 return 0; 34 }
//注意vs是不支持gets的,其用的是gets_s,但oj上又不支持gets_s;数组
另解spa
1 #include <string> 2 #include <iostream> 3 using namespace std; 4 5 const int N = 310; 6 string s[N]; // 存储字符串的每一个单词 7 8 int main() { 9 string str; 10 getline(cin, str); // 不要用cin,由于有空格 11 int len = 0; // 数组下标 12 for (int i = 0; i < str.size(); i++) { 13 if (str[i] != ' ') { // 若当前字符不是空格 14 s[len] += str[i]; 15 } 16 else if (str[i + 1] != ' ') { // 若当前字符是空格且当前字符的后面一个字符不是空格 17 len++; // 数组下标加一 18 } 19 } 20 for (int i = 0; i <= len; i++) { 21 cout << s[i].size(); 22 if (i < len) cout << ","; // 英文逗号 23 } 24 25 return 0; 26 }