这题如果用标准库Vector来做,或者用栈来做的话,代码没几行,但是不用这些的话,自己写还是需要考虑一下的,特别是像对于我这种在语法上还是不怎么熟悉的同学。 // 翻转句子中单词的顺序.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> #include<string> #include<vector> using namespace std; char* ReverseSentence(char *pData); void Reverse(char *pBegin,char *pEnd); int _tmain(int argc, _TCHAR* argv[]) { char pData[50]; cin.getline(pData,50); cout<<ReverseSentence(pData)<<endl; system("pause"); return 0; } char* ReverseSentence(char *pData) { if(pData==NULL) return NULL; char *pBegin=pData; char *pEnd=pData; while(*pEnd!='/0') pEnd++; pEnd--; Reverse(pBegin,pEnd); pBegin=pData; pEnd=pData; char *p=pData; // bool word=false; while(*p!='/0'){ if(*p!=' '){ pBegin=p; while(*p!=' '&&*p!='/0') p++; pEnd=--p; p++; //word=true; } else { p++; continue; } //if(word){ Reverse(pBegin,pEnd); // word=false; //} } return pData; } void Reverse(char *pBegin,char *pEnd) { if(pBegin==NULL||pEnd==NULL) return; while(pBegin<pEnd){ char temp=*pBegin; *pBegin=*pEnd; *pEnd=temp; pBegin++; pEnd--; } }