题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
小编选择使用vector处理单词顺序,遇到的主要问题是vector的逆序输出。
应该是这样的~
iter = m_set.end();
iter--;
for(;;iter--)
{
do something...
if(iter==m_Set.begin())break;
}
完整代码:
#include<iostream> #include <vector> #include<cstdlib> using namespace std; void Overturn(char s[],int n) { vector<char> a; int i=n-1;//从后向前遍历 vector<char>::iterator iter; while(i>=0) { if(s[i]==' ') { iter = a.end(); iter--; for(;;iter--) { cout<<*iter; if(iter==a.begin())break; } cout<<" "; a.clear(); }//遇到空格,就逆序输出单词,并清空容器 if(s[i]!=' ') { a.push_back(s[i]); } i--; } iter = a.end(); iter--; for(;;iter--) { cout<<*iter; if(iter==a.begin())break; } cout<<endl; } void main() { char s[20]="we are student."; int m=strlen(s); Overturn(s,m); }