题目:输入一串字符串,都在a~z之间,每一个字符都变成其对应的下一个,z变成a,Z变成A,如果遇到连续两个相同的字符串,则第二个变换两次,两个以上,则第三个以后与第一个保持一致。
示例:
输入:aaabbyy
输出:bcbcdza
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int i,j,s;//i,j为循环变量,s为字符串长度
int count;//记录重复次数
char pre;//存放当前循环中出现的重复字符
char a[50]={'\0'};
cout<<"输入一个字符串(回车键结束):";
cin>>a;
s=strlen(a);
count=0;
pre=a[0];
for(i=0;i<s;i++){
if(a[i]!=pre){
pre=a[i];//重置pre
count=0;//重新开始计数
if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z')
a[i]=a[i]+1;
else if(a[i]=='z'){a[i]='a';}
else if(a[i]=='Z'){a[i]='A';}
count++;
}
else{
switch(count){
case 0:
if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z')
a[i]=a[i]+1;
else if(a[i]=='z'){a[i]='a';}
else if(a[i]=='Z'){a[i]='A';}
count++;
case 1:
if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z'){
if(a[i]+1>='a'&&a[i]+1<'z'||a[i]+1>='A'&&a[i]+1<'Z'){
a[i]=a[i]+2;
}
if(a[i]+1=='z')
a[i]='a';
if(a[i]+1=='Z')
a[i]='A';
}
else if(a[i]=='z'){a[i]='a';}
else if(a[i]=='Z'){a[i]='A';}
count++;
case 2:
if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z')
a[i]=a[i]+1;
else if(a[i]=='z'){a[i]='a';}
else if(a[i]=='Z'){a[i]='A';}
}
}
}
for(i=0;a[i]!='\0';i++){
cout<<a[i];
}
cout<<endl;
}
输出:
求问大佬们,到底是哪里错了啊?啊啊啊啊啊搞不明白了,谢谢大家!