题目描述
输入一个英文句子,翻转句子中单词的顺序,但单词内部的字符顺序保持不变。句子中的单词以空格分隔。为了简化处理,标点符号与普通字母一视同仁。
例如,输入 I am a student.,则输出 student. a am I。
解题思路
按空格把句子切分成若干个单词,保留每个单词的原始字符顺序,再按相反的顺序把它们依次输出即可。
参考实现
/*by hk 15-7-1*/
#include <iostream>
#include<vector>
#include<fstream>
using namespace std;
int main(int argc, char *argv[])
{
vector<string> data;
string ss;
char str[100];
cin.getline(str,100);
/*其实利用文件没必要,多此一举 可直接>>*/
ss=str;
ofstream out("tmp.txt");
out<<ss;
out.close();
string tmp;
ifstream in("tmp.txt");
while(in>>tmp)
{
data.push_back(tmp);
}
in.close();
for(int i=data.size()-1;i>=0;i--)
{
cout<<data[i]<<" ";
}
return 0;
}
.
说明:上面这份实现借助临时文件 tmp.txt 中转输入,其实完全没有必要,可以直接用 stringstream 或者 cin >> 按空格逐个读取单词,再逆序输出,代码会更简洁。