題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。
爲簡單起見,標點符號和普通字母一樣處理。
例如輸入“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);
}