我的80pts代码:
#include<iostream>
using namespace std;
int p1,p2,p3;
string str;
bool cheak(char a,char b) {
if(isdigit(a) == true && isdigit(b) == true) {
return true;
}
if((a >= 'A' && a <= 'Z') || (a >= 'a' && a <= 'z')) {
if((b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z')) {
return true;
}
}
return false;
}
int main(){
cin >> p1 >> p2 >> p3;
cin >> str;
for(int i = 0;i < str.size();i++){
if(str[i] == '-'){
if(str[i - 1] >= str[i + 1]) {
cout << '-';
continue;
}
if(!cheak(str[i - 1],str[i + 1])) {
cout << '-';
continue;
}
if(str[i + 1] - 1 <= str[i - 1]){
continue;
} else if(str[i + 1] <= str[i - 1]){
cout << '-';
continue;
} else if(cheak(str[i - 1],str[i + 1])){
char ch1,ch2;
ch1 = str[i - 1];ch2 = str[i + 1];
if(p1 == 3){
for(int i = ch1;i <= ch2;i++){
for(int j = 1;j <= p2;j++) cout << '*';
}
} else if(p3 != 2){
if(p1 == 1){
for(int i = ch1 + 1;i < ch2;i++){
for(int j = 1;j <= p2;j++){
if(i >= 'A' && i <= 'Z'){
cout << char(i + 32);
} else {
cout << char(i);
}
}
}
} else {
for(int i = ch1 + 1;i < ch2;i++){
for(int j = 1;j <= p2;j++){
if(i >= 'a' && i <= 'z'){
cout << char(i - 32);
} else {
cout << char(i);
}
}
}
}
} else {
if(p1 == 1){
for(int i = ch2 - 1;i > ch1;i--){
for(int j = 1;j <= p2;j++){
if(i >= 'A' && i <= 'Z'){
cout << char(i + 32);
} else {
cout << char(i);
}
}
}
} else if(p1 == 2){
for(int i = ch2 - 1;i > ch1;i--){
for(int j = 1;j <= p2;j++){
if(i >= 'a' && i <= 'z'){
cout << char(i - 32);
} else if(isdigit(i) || (i >= 'A' && i <= 'Z')){
cout << char(i);
}
}
}
}
}
}
} else {
cout << str[i];
}
}
return 0;
}