蒻稽的哭泣(
查看原帖
蒻稽的哭泣(
1284815
canwen楼主2024/5/4 19:39

知道错误 在哪里 就是一个字符可以跟别的同时进行操作 例如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;
}
2024/5/4 19:39
加载中...