读书人

输入一个英文句子翻转句子中单纯词的

发布时间: 2012-09-17 12:06:51 作者: rapoo

输入一个英文句子,翻转句子中单词的顺序,单词内字符顺序不变

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。

处理方法是首先将整个句子翻转,然后再将其中的每个单词翻转。

代码如下:

#include <iostream>using namespace std;void myReverse(char*, char*);char * senReverse(char*);int main(){    char sen[]="hello, I am a student!";    char *result=senReverse(sen);    cout << result << endl;    return 0;}void myReverse(char *start, char *end){    char temp;    while(start<end)    {        temp=*start;        *start=*end;        *end=temp;        start++;        end--;    }}char * senReverse(char *sen){    char *start=sen, *end=sen+strlen(sen)-1;    myReverse(start, end);  //先反转整个句子    
    /*此注释部分是另外一种实现,只不过看起来有些繁琐    int loc;  //记录每个单词的长度    for(start=sen,end=start;(*end)!='\0';start+=loc)    {        loc=0;        while((*end)!=' '&&(*end)!='\0'){end++, loc++;}        end--;        myReverse(start, end);        end+=2;        loc++;    }    */    end=start;    while(*start!='\0')    {        if(*end==' '||*end=='\0')        {            myReverse(start, --end);            if(*end=='\0')                break;            end+=2;            start=end;        }        else            ++end;    }    return sen;}


读书人网 >编程

热点推荐