给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过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; }