给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
思路分析
将输入的字符串输入到stringstream中,再从stringstream中依次输出并压入栈中,最后从栈中输出每个单词即可得到单词的逆序序列。
注意点
- 因为获取的字符串含空格,所以要用getline(cin,temp);。
代码
#include <iostream>
#include<stack>
#include<sstream>
using namespace std;
int main()
{
string temp;
//获取一行
getline(cin,temp);
stack<string> sta;
stringstream ss;
bool flag = false;
ss<<temp;//将一行字符串流入字符串流中
//在从字符串流中流出来,则是空格分开的一个单词,stringstream会去掉所有的空格
while(ss>>temp){
sta.push(temp);//压入栈中
}
//再从栈中输出出来即得到逆序单词序列
while(!sta.empty()){
if(flag)
cout<<" ";
cout<<sta.top();
sta.pop();
flag = true;
}
return 0;
}