首页 > 代码库 > 华为机试—倒置英文句子中单词的字母顺序

华为机试—倒置英文句子中单词的字母顺序

输入一个英文句子,包含字母大小写、逗号、句号和空格。把英文句子中的单词的字母顺序倒置。


#include <iostream>  using namespace std;        void revese(char* start,char* end)  {    while(start<end)      {          *start=*start^*end;        *end=*start^*end;          *start=*start^*end;          start++;          end--;      }  }        int main()  {      char* p=new char[1024];      gets(p);      int len=strlen(p);      int i=0,j=0;            while(i<len)      {         //判断字符ch是否为英文字母,若为小写字母,返回2,若为大写字母,返回1。若不是字母,返回0        if(isalpha(p[i]))          {              char *start=p+i;              j=i+1;              while(j<len)              {                  if(isalpha(p[j]))                      j++;                  else                      break;              }              char *end=p+j-1;              revese(start,end);          }          i=j+1;          j++;    }      for(i=0;i<len;i++)        cout<<p[i];      cout<<endl;              return 0;  }   

测试结果,可能想的不周全,欢迎查漏补缺:

技术分享

华为机试—倒置英文句子中单词的字母顺序