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

前端之家收集整理的这篇文章主要介绍了华为机试—倒置英文句子中单词的字母顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


#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; 
} 
 

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

猜你在找的设计模式相关文章