思路
条件太多了,烦死了。
参考大神的代码,写出来的!
(一个一个判断和输出)
1.一个一个字符遍历,寻找 -
2.判断-前后两个字符,是否满足条件
2.1 若满足, 则根据p3决定输出顺序,根据p2决定输出的字符个数和类型
for(p3==1?j=first+1:j=end-1; p3==1?j<end:j>first; p3==1?j++:j-- ) //p==1顺序
2.2若不满足,则直接输出字符
源码
#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3;
string s;
char first1,end1,f,p;
int i=0,j;
int main(){
cin>>p1>>p2>>p3;
cin>>s;
while(s[i]){
first1=s[i-1];end1=s[i+1];f=s[i];
if(f=='-'&&end1>first1&&(first1>='0'&&end1<='9'||first1>='a'&&end1<='z')){
for(p3==1?j=first1+1:j=end1-1; p3==1?j<end1:j>first1; p3==1?j++:j-- ){
p=j;
if(p1==2)
p=(p>='a')?p-32:p;
else if(p1==3) p='*';
for(int k=0;k<p2;k++){
printf("%c",p);
}
}
}
else
printf("%c",f);
i++;
}
return 0;
}