需要处理的条件颇多,需细心
#include<iostream>
#include<cctype>
#include<algorithm>
using namespace std;
int p1,p2,p3;
string s,ans;
int main(){
cin>>p1>>p2>>p3>>s;
int l=s.size();
for(int i=0;i<l;i++){
if(i!=0&&i!=l-1)
if(s[i]=='-'){
string s2;
if(s[i-1]>=s[i+1]){
ans.push_back('-');
continue;
}
if(s[i-1]+1==s[i+1])continue;
if(isalpha(s[i-1])&&isalpha(s[i+1]));
else if(isdigit(s[i-1])&&isdigit(s[i+1]));
else {
ans.push_back('-');
continue;
}
for(char j=s[i-1]+1;j<=s[i+1]-1;j++){
for(int k=1;k<=p2;k++){
if(p1==1){
if(isalpha(s[i-1])&&isalpha(s[i+1])){
s2.push_back(tolower(j));
}else{
s2.push_back(j);
}
}else if(p1==2){
if(isalpha(s[i-1])&&isalpha(s[i+1])){
s2.push_back(toupper(j));
}else{
s2.push_back(j);
}
}else if(p1==3){
s2.push_back('*');
}
}
}
if(p3==2)reverse(s2.begin(),s2.end());
ans.append(s2);
}
else ans.push_back(s[i]);
else ans.push_back(s[i]);
}
cout<<ans;
return 0;
}

京公网安备 11010502036488号