[a-i] 转动k1次,[j-r]转动k2次,其余的转动k3次
求转完后的字符串
把每个区域内的字符提取出来,分别转动后再填回去就可以了
#include <bits/stdc++.h>
using namespace std;
char s[100];
int len;
void change1(int k)
{
char as[100];
int weizhi[100];
int len1=0;
for (int i=0;i<len;i++){
if (s[i]>='a'&&s[i]<='i'){
as[len1]=s[i];
weizhi[len1++]=i;
}
}
for (int i=0;i<k;i++){
char ss=as[len1-1];
for (int is=len1-1;is>=0;is--){
as[is]=as[is-1];
}
as[0]=ss;
}
for (int i=0;i<len1;i++){
s[weizhi[i]]=as[i];
}
}
void change2(int k)
{
char as[100];
int weizhi[100];
int len1=0;
for (int i=0;i<len;i++){
if (s[i]>='j'&&s[i]<='r'){
as[len1]=s[i];
weizhi[len1++]=i;
}
}
for (int i=0;i<k;i++){
char ss=as[len1-1];
for (int is=len1-1;is>=0;is--){
as[is]=as[is-1];
}
as[0]=ss;
}
for (int i=0;i<len1;i++){
s[weizhi[i]]=as[i];
}
}
void change3(int k)
{
char as[100];
int weizhi[100];
int len1=0;
for (int i=0;i<len;i++){
if ((s[i]>='s'&&s[i]<='z')||s[i]=='_'){
as[len1]=s[i];
weizhi[len1++]=i;
}
}
for (int i=0;i<k;i++){
char ss=as[len1-1];
for (int is=len1-1;is>=0;is--){
as[is]=as[is-1];
}
as[0]=ss;
}
for (int i=0;i<len1;i++){
s[weizhi[i]]=as[i];
}
}
int main()
{
int k1,k2,k3;
while(scanf("%d%d%d",&k1,&k2,&k3)!=EOF&&k1&&k2&&k3){
scanf("%s",s);
len=strlen(s);
change1(k1);
change2(k2);
change3(k3);
for (int i=0;i<len;i++){
printf("%c",s[i]);
}
printf("\n");
}
return 0;
}