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

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

分类: 华为机试  |  标签: 华为机试,倒置英文句子中单词的字母顺序,单词倒置,字母顺序  |  作者: wtyvhreal 相关  |  发布日期 : 2014-12-31  |  热度 : 194°

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


#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;  
}  
 
测试结果,可能想的不周全,欢迎查漏补缺: