知道错误 在哪里 就是一个字符可以跟别的同时进行操作 例如a-b-c输出是应该是abc 但是我这个程序会跳过去 编程ab-c 改的话一改全崩了(( 普及的坑 上代码(
#include<bits/stdc++.h>
using namespace std;
char shuzu[101],tmp[101];
int cs(char a,char b){
if(((a>='0'&&a<='9'&&b>='0'&&b<='9')||(a>='a'&&a<='z'&&b>='a'&&b<='z'))&&b>a)return 1;
return 0;
}
char upper(char a){
return 'A'+(a-'a');
}
int main(){
int p1 , p2 , p3 , lag = 0;
cin >> p1 >> p2 >> p3 >> shuzu;
int len = strlen( shuzu );
for(;lag<len;){
if(shuzu[lag+1]=='-'&&cs(shuzu[lag],shuzu[lag+2])&&shuzu[lag+2]-shuzu[lag]>1){
char a,b;
a=shuzu[lag],b=shuzu[lag+2];
int i=1;
for(char p=a+1;p<=b-1;p++,i++){
if((p>='0'&&p<='9')||(p1==1)) tmp[i]=p;
else if(p1==2) tmp[i]=upper(p);
}
cout<<a;
if(p3==2){
for(int j=i-1;j>=1;j--){
for(int k=1;k<=p2;k++){
if(p1==3)cout<<"*"; else cout<<tmp[j];
}
}
}else{
for(int j=1;j<=i-1;j++){
for(int k=1;k<=p2;k++){
if(p1==3) cout<<"*";
else cout<<tmp[j];
}
}
}
cout<<b;
lag+=3;
}else{
if(shuzu[lag+1]=='-'){
if(shuzu[lag+2]-shuzu[lag]==1){
cout<<shuzu[lag]<<shuzu[lag+2];
lag+=3;
}else{
cout<<shuzu[lag];lag++;
}
}else{
cout<<shuzu[lag];
lag++;
}
}
}
return 0;
}