7-52 数组元素循环右移问题 (20 分)

7-52 数组元素循环右移问题 (20 分)

思路:根据右移的单位大小将数组分成两部分 左边部分进行右移 首先把右边部分第一个数组赋值给临时变量 接着左边部分从右至左右移一个单位 结束后把临时变量赋值给左边部分数组下标最小的数组 这样就完成了一个单位的右移 重复多次就完成整个数组的右移啦

#include <stdio.h>
int main(){
    int a[100];
    int n,m,t,c;
    scanf("%d%d",&n,&m);
    for(int i = 0;i < n;i ++){
        scanf("%d",&a[i]);
    }
    m %= n;
        c = n - m;
        for(int i = c;i < n;i ++){
            t = a[i];
            
            for(int j = i;j > i - c;j --){
                a[j] = a[j - 1];
            }
            a [i - c ] = t;
        }
        for(int i = 0;i < n - 1;i ++){
        printf("%d ",a[i]);
        }
        printf("%d\n",a[n - 1]);
    return 0;
}