1009 说反话 (20)

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

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

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

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello


#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
    string a;//保存输入的字符串
    string b;//保存每个单词
    getline(cin,a);//因为并没有给定的词数,用getline
    int k=0;//因为要求输出的最后没有多余空格,保存时输出的第几个词
    int i=a.length();
    for(i=i-1;i>=0;i--){//从最后往前数,只要不是空格就保存下来,遇到空格如果是第0个词就直接输出,否则输出个空格在输出词。
    if(a[i]!=' '){
        b+=a[i];
    }
    else  if(k==0){
        std::reverse(b.begin(),b.end());
        cout<<b;
        k++;
        b="";
    }
    else if(a[i]==' '){
        std::reverse(b.begin(),b.end());
        cout<<" "<<b;
        b="";
    }
}   if(k!=0)cout<<" ";//最后一个词并为输出,因为第一个词前面没有空格,所以要补上
    std::reverse(b.begin(),b.end());
        cout<<b;
} 
原文地址:https://www.cnblogs.com/fromzore/p/9534089.html