当前位置:编程学习 > C/C++ >>

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

[cpp]

<p>题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。 
为简单起见,标点符号和普通字母一样处理。 
例如输入“I am a student.”,则输出“student. a am I”。</p><p>处理方法是首先将整个句子翻转,然后再将其中的每个单词翻转。</p><p>代码如下:</p><p> </p> 
[cpp]

#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);  //先反转整个句子 
     
[cpp]
释部分是另外一种实现,只不过看起来有些繁琐
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; 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,