Exe5 实现字符串中个单词的翻转——其中单词以空格、',' 、'.' 分隔开来

来源:互联网 发布:中文版线路板设计软件 编辑:程序博客网 时间:2024/04/24 15:52

#include <iostream>
using namespace std;

 

//RecStr_1(char* src)是先将每个单词进行翻转,然后进行全局翻转
void RecStr_1(char* src)
{
 char* start=src,*end = src,*ptr = src;
 while(*ptr++!='/0')  //遍历字符串,将每个单词翻转
 {
  if(*ptr==' '||*ptr=='/0'||*ptr=='.'||*ptr==',') //找到一个单词
  {
   end = ptr-1;  //end指向了单词尾部
   while(start<end) //将单词字母逆置
    swap(*start++,*end--);

   start = end = ptr+1;  //指向下一个单词开头
  }
 }
 start = src;
 end = ptr-2;
 while(start<end) //整个字符串翻转
  swap(*start++,*end--);
}

//RecStr_2(char* src)是先进行全局翻转,然后进行每个单词的翻转
void RecStr_2(char* src)
{
 char* ptr = src, *start = src,*end = src;
 while(*ptr++!='/0');
 end = ptr-2;         //将end指针指向了字符串的末尾
 while(start<end)     //先将整个的字符串进行了翻转
  swap(*start++,*end--);
 start = src;
// end = ptr-2;
 ptr = start;
 while(*ptr++!='/0')
 {
  if(*ptr==' '||*ptr=='/0'||*ptr=='.'||*ptr==',')
  {
   end = ptr-1;  //end指向了单词尾部
   while(start<end)
    swap(*start++,*end--);

   start = end = ptr+1; //指向下一个单词开头
  }
 }
}


int main()
{
 char src[100];
 cout<<"input:"<<endl;
 gets(src);
// RecStr_1(src);
    RecStr_2(src);
 cout<<src<<endl;
 return 0;
}

原创粉丝点击