PTA实验8-1-7 数组循环右移 (20 分)
循环右移的实现方法有两种,第一种是逐个右移动:将数组中最后一个元素取出,然后其他元素顺次后移,直到k等于0
方法一:
int ArrayShift( int a[], int n, int m ){
while(m--){
int t = a[n-1];
for(int i = n - 2 ;i >= 0 ;i--) {
a[i+1] = a[i];
}
a[0] = t;
}
}
方法二:
步骤有三:①翻转a数组②翻转a数组的前一部分③反转a数组的后一部分
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[100];
int n,k;
cin>>n>>k;
for(int i = 0 ; i < n ; i++)
cin>>a[i];
reverse(a,a+n);
reverse(a,a+k);
reverse(a+k,a+n);
for(int i = 0 ;i < n ; i++)
printf("%d ",a[i]);
return 0;
}