【练习】翻转句子中单词的顺序
生活随笔
收集整理的這篇文章主要介紹了
【练习】翻转句子中单词的顺序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/************************************************************************/
/* 翻轉句子中單詞的順序。
題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。
句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。
例如輸入“I am a student.”,則輸出“student. a am I”。
思路:
利用STL,不過如此解法,恐怕違背了出題者本意
給出一個準確答案鏈接http://www.cnblogs.com/youwang/archive/2011/03/05/1971900.html*/
/************************************************************************/#include <iostream>
#include <vector>
#include <string>using namespace std;void reverseSentence();
int main()
{reverseSentence();return 0;
}void reverseSentence()
{cout<<"please input the sentence"<<endl;vector<string> sentence;string s;while (cin){cin>>s;if (cin){sentence.push_back(s);}}while(sentence.size()!=0){s=sentence.back();sentence.pop_back();cout<<s<<" ";}}
符合題意的解法
#include <iostream>using namespace std; void reverseSentence(char *sentence); void reverse(char* begin,char *end);int main(){char sentence[16]="I am a student.";reverseSentence(sentence);cout<<sentence<<endl;return 0;} void reverse(char* begin,char *end) {if (NULL==begin||NULL==end){return;}char temp;while(begin<end){temp=*begin;*begin=*end;*end=temp;begin++;end--;}}void reverseSentence(char *sentence){if (NULL==sentence){return;}char *begin,*end;begin=sentence;end=sentence;while(*end!='\0')end++;end--;reverse(begin,end);end=begin;while(*begin!='\0'){while(*end!=' '&&*end!='\0')end++;end--;reverse(begin,end);if (*(end++)==' '){end++;}if (*(end++)=='\0'){break;}begin=end;}// end=begin;}
轉載于:https://www.cnblogs.com/caidaxia/archive/2011/10/24/2222395.html
總結
以上是生活随笔為你收集整理的【练习】翻转句子中单词的顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ vector容器类型 (摘自漫步
- 下一篇: Mango Teapot ② Teapo