• 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 }

  • 相关阅读:
    【以前的空间】poj 2288 Islands and Bridges
    【以前的空间】网络流合集
    【以前的空间】 单调队列系列
    【以前的空间】几道平衡树
    【以前的空间】vijos 1720 阿狸的打字机
    对拍程序
    【Ubuntu】编写一个c语言代码
    用Matlab对数据进行线性拟合算法
    Oracle视图传递参数
    oracle decode的用法
  • 原文地址:https://www.cnblogs.com/zengguoqiang/p/8328697.html
Copyright © 2020-2023  润新知