将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:

来源:互联网 发布:征途服务端linux版 编辑:程序博客网 时间:2024/04/28 19:31

   问题描述:

   将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

   要求实现函数:

   void convert(char *input,char* output)

   【输入】 char *input , 输入的字符串

   【输出】 char *output ,输出的字符串

   【返回】 无

   示例

   输入:char*input="abcd"

   输出:char*output="bcde"

   输入:char*input="abbbcd"

   输出:char*output="bcdcde"


#include<iostream>using namespace std;void add(char *str,int len,char *outstr);int main(){char str[20];gets(str);int len=strlen(str);char outstr[20];add(str,len,outstr);cout<<outstr<<endl;system("pause");return 0;}void add(char *str,int len,char *outstr){int count=0,m=1;int i=0;for(i=0;i<len;i++){if(str[i]!=str[i+1])outstr[count++]=str[i]+1;else{outstr[count++]=str[i]+1;outstr[count++]=str[i]+2;i++;//易错,因为重进for循环的时候还会有个i++,相当于i=i+2;}}outstr[count]='\0';int outlen=strlen(outstr);while(outlen){if(outstr[outlen-1]>'z')outstr[outlen-1]=outstr[outlen-1]-26;outlen--;}}

参考答案:

  void convert(char *input,char *output)   {   char c='�';   int tag=0;   int len=strlen(input);   for(int i=0;i   {   if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1   {   output[i]=(input[i]-'a'+1)%26+'a';   c=input[i];   tag=1;   }else   {   if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同   {   output[i]=(input[i]-'a'+2)%26+'a';   c='�';   tag=0;   }else//当前字符与前一个字符相等,且前面已有2n个字符相同。则按第一次出现算   {   output[i]=(input[i]-'a'+1)%26+'a';   c=output[i];   tag=1;   }   }   }   }   void convert(char *input,char *output)   {   char c='�';   int tag=0;   int len=strlen(input);   for(int i=0;i   {   if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1   {   output[i]=(input[i]-'a'+1)%26+'a';   c=input[i];   tag=1;   }else   {   if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同   {   output[i]=(input[i]-'a'+2)%26+'a';   c='�';   tag=0;   }else//当前字符与前一个字符相等,且前面已有2n个字符相同。则按第一次出现算   {   output[i]=(input[i]-'a'+1)%26+'a';   c=output[i];   tag=1;   }   }   }   }



0 0
原创粉丝点击