题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入“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);
}