7-26 單詞長度


7-26 單詞長度(15 分)

你的程序要讀入一行文本,其中以空格分隔為若干個單詞,以.結束。你要輸出每個單詞的長度。這里的單詞與語言無關,可以包括各種符號,比如it's算一個單詞,長度為4。注意,行中可能出現連續的空格;最后的.不計算在內。

輸入格式:

輸入在一行中給出一行文本,以.結束

提示:scanf("%c",...);來讀入一個字符,直到讀到.為止。

輸出格式:

在一行中輸出這行文本對應的單詞的長度,每個長度之間以空格隔開,行末沒有最后的空格。

輸入樣例:

It's great to see you here.

輸出樣例:

4 5 2 3 3 4
思路:循環進行每碰到一個不是空格或者點號的遞歸返回該單詞長度,遞歸完之后從遞歸起點加上單詞長度繼續進行循環,細節處理詳見代碼。
 1 #include<stdio.h>
 2 #include<string>
 3 #include<sstream>
 4 #include<iostream>
 5 using namespace std;
 6 int f(string s, int p)        //遞歸進行長度的計算
 7 {
 8     if (s[p + 1] == ' ' || s[p + 1] == '.')return 1;
 9     else return 1 + f(s, p + 1);
10 }
11 int main()
12 {
13     string line;
14     getline(cin, line);        //整行輸入字符串
15 
16     int flag = 0;                //用來判斷是否在輸出第一個單詞,解決行末沒有最后的空格。
17     for (int i = 0; i < line.length(); i++)
18     {
19         if (line[i] != ' '&&line[i] != '.')    //點號和空格不進行遞歸,解決行中可能出現連續的空格
20         {
21             int len = f(line, i);
22             if (flag == 0){
23                 cout << len;
24                 flag = 1;
25             }
26             else cout << " " << len;
27             i += len;
28         }
29     }
30     cout << endl;
31     return 0;
32 }

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM