一、可借鉴的

题目中没有说m一定大于n,因此需要做处理

  1. m = m%n;

二、整体代码

#include<cstdio>

void getprint(int a[],int n)
{
    for (int i = 0;i < n;i++)
        {
            printf("%d",a[i]);
            if(i!=n-1) printf(" ");
        }
    printf("\n");
}

void reverse(int a[],int min ,int max)
{
    for (int i = 0;i<(max-min+1)/2;i++)
    {
        int temp = a[min + i];
        a[min + i] = a[max - i];
        a[max - i] = temp;
    }
}

int main(){
    int n,m;
    int temp;
    int l = 0;
    scanf("%d %d",&n,&m);
    m = m%n;
    int a[100];
    for (int i = 0;i < n;i++)
    {
        scanf("%d",&a[i]);
    }
    if(m == 0)
    {
        getprint(a,n);
        return 0;
    }
    else{
        reverse(a,0,n-m-1);
        //getprint(a,n);
        reverse(a,n-m,n-1);
        //getprint(a,n);
        //全部交换
        reverse(a,0,n-1);
        getprint(a,n);
        return 0;
    }
}