注册 登录
编程论坛 C++教室

将字符串中单词逆置后输出

xishui777 发布于 2010-08-17 16:23, 1303 次点击
#include<iostream>
using namespace std;
int main()
{
    //整体翻转
     char a[]="how are you";
     char *p1,*p2;
     p1=p2=a;
     while(*p2!='\0')
     {
       p2++;
     }
     p2--;
     while(p1<=p2)
     {
       char k;
       k=*p1;
       *p1=*p2;
       *p2=k;
       p1++;p2--;
     }
     //单词翻转
          p1=p2=a;
     while(*p2!='\0')
     {
        if(*p2==' ')
          {
            char *p;
            p=p2-1;
            while(p1<=p)
            {
               char m;
               m=*p1;*p1=*p;*p=m;
               p1++;p--;
            }
            p1=p2+1;
          }
          else
          p2++;
     }
         p2--;
        while(p1<=p2)
        {
          char w;
          w=*p1;*p1=*p2;*p2=w;
          p1++;p2--;
        }
     puts(a);
     system("pause");
     return 0;
}
例如:how are you变成you are how
2 回复
#2
dianzi19872010-08-17 17:09
用strtok比较方便点
#3
pangding2010-08-18 01:03
是这么个翻转法啊!
用 string stream 可能可以干这事。一个词一个词地读到一个 vector 里,然用逆向迭代器输出就行了。
1