zoukankan      html  css  js  c++  java
  • PAT1009

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

    输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

    输出格式:每个测试用例的输出占一行,输出倒序后的句子。

    输入样例:

    Hello World Here I Come
    

    输出样例:

    Come I Here World Hello



    思路:用string数组S[]表示空格间隔开的每一个字符串,用char数组K[]表示空格
    原句子的顺序为S[0]K[0]S[1]K[1].....K[N-1]S[N]
    逆转后的顺序为S[N]K[N-1].....K[1]S[1]K[0]S[0]



    所以解决问题的关键是:如何顺序保存S[] 和 K[] 然后再逆序输出

    # include<iostream>
    # include<string>
    using namespace std;
    int main()
    {
    string s[1000],str;
    char k[1000];
    int h=0,begin=0,end,i,j;   ///h是为了能顺序保存K[] 与S[]    //begin end 是为了记录被空格隔开的字符串长度
    getline(cin,str);               //输入带空格的字符串
    for(i=0;i<str.length();i++)
    {
    if(str[i] ==' ')               //遇到空格后  顺序保存当前空格 与 空格前的字符串
    {
    end = i;
    k[h] =' ';
    for(j=begin;j<end;j++)
    {
    s[h].push_back(str[j]);
    }
    h++;
    begin = i+1;
    }
    }
    for(j=begin;j<str.length();j++)   //由于最后一个字符串的后面是没有空格的  所以要分开讨论
    {
    s[h].push_back(str[j]);
    }
    cout<<s[h];
    for(j=h-1;j>=0;j--)
    {
    cout<<k[j]<<s[j];
    }
    return 0;
    }

  • 相关阅读:
    ps命令
    关于typedef的用法总结
    C#中正则表达式的使用
    调试与编译
    大端和小端
    64位程序内存之我看
    C/C++内存泄漏及检测
    内核中的 likely() 与 unlikely()
    do/while(0) c4127
    django+xadmin在线教育平台(六)
  • 原文地址:https://www.cnblogs.com/wshyj/p/6282106.html
Copyright © 2011-2022 走看看