50分,求大佬帮忙
查看原帖
50分,求大佬帮忙
886664
amaoagou楼主2024/3/15 16:42
#include <iostream>
using namespace std;
int main(){
	int p1,p2,p3;
	cin>>p1>>p2>>p3;
	string s;
	cin>>s;
	for(int i=0;i<s.length();i++){
		if(s[i]=='-'){
			if(char(s[i-1]+1)==char(s[i+1])){//右边字符恰好是左边后继 不动 
							
			}else if(int(s[i-1])>=int(s[i+1])){//减号左边大于等于右边
				//输出减号 
				cout<<s[i];
			}else{
				if(p1==1){//小写 
					if(p3==1){//正序 
						for(int j=s[i-1]+1;j<s[i+1];j++){
							for(int k=1;k<=p2;k++){//一个字母输出k次 
								cout<<char(j);
							}
						}	
					}else{//倒序 
						for(int j=s[i+1]-1;j>s[i-1];j--){
							for(int k=1;k<=p2;k++){
								cout<<char(j);
							}
						}
					}
				}else if(p1==2){//大写 
					if(p3==1){//正序 
						if(s[i-1]>='a'&&s[i-1]<='z'){//字母大写 数字不变 
							for(int j=s[i-1]+1;j<s[i+1];j++){
								for(int k=1;k<=p2;k++){//一个字母输出k次 
									cout<<char(j-32);
								}
							}
						}else{//数字 
							for(int j=s[i-1]+1;j<s[i+1];j++){
								for(int k=1;k<=p2;k++){//输出k次 
									cout<<char(j);
								}
							}
						}	
					}else{//倒序 
						if(s[i-1]>='a'&&s[i-1]<='z'){
							for(int j=s[i+1]-1;j>s[i-1];j--){
								for(int k=1;k<=p2;k++){
									cout<<char(j-32);
								}
							}
						}else{//数字 
							for(int j=s[i+1]-1;j>s[i-1];j--){
								for(int k=1;k<=p2;k++){
									cout<<char(j);
								}
							}
						}
					}
				}else if(p1==3){//字符* 
						for(int j=s[i-1]+1;j<s[i+1];j++){
							for(int k=1;k<=p2;k++){//一个字母输出k次 
								cout<<"*";
							}
						}	
				}
			}
		}else{//不是减号正常输出 
			cout<<s[i];
		}
	}
}
2024/3/15 16:42
加载中...