P9855

· · 题解

这道题拿一个字符数组来模拟就行了。

我们可以将数组整体往后移,但是要将第一个字符记录下来。

代码

if(b==1){
    for(int j=1;j<=n;j++){
        char p=a[1];
        for(int i=2;i<=5;i++){
            a[i-1]=a[i];
        }
        a[5]=p;
    }
}

我们可以将数组整体往前移,但是要将最后一个字符记录下来。

if(b==2){
    for(int j=1;j<=n;j++){
        char p=a[5];
        for(int i=4;i>=1;i--){
            a[i+1]=a[i];
        }
        a[1]=p;
    }
}

我们用一个函数 swap 来交换。

if(b==3){
    for(int j=1;j<=n;j++){
        swap(a[1],a[2]);
    }
}

直接输出。

代码

if(b==4){
    for(int i=1;i<=5;i++)cout<<a[i]<<" ";
    return 0;
}

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    char a[12];
    a[1]='A';
    a[2]='B';
    a[3]='C';
    a[4]='D';
    a[5]='E';
    int b,n;
    while(1){
        cin>>b>>n;
        if(b==1){
            for(int j=1;j<=n;j++){
                char p=a[1];
                for(int i=2;i<=5;i++){
                    a[i-1]=a[i];
                }
                a[5]=p;
            }
        }
        if(b==2){
            for(int j=1;j<=n;j++){
                char p=a[5];
                for(int i=4;i>=1;i--){
                    a[i+1]=a[i];
                }
                a[1]=p;
            }
        }
        if(b==3){
            for(int j=1;j<=n;j++){
                swap(a[1],a[2]);
            }
        }
        if(b==4){
            for(int i=1;i<=5;i++)cout<<a[i]<<" ";
            return 0;
        }
    }
    return 0;
}