数组元素循环右移问题 (20分)
思想就是把数组整个倒序,然后以移位操作数(m%n)为分割,对前半部分数组和后半部分数组分别倒序
需要考虑移位操作数大于数组长度的情况,取余就行了
#include "stdio.h"
void reverse(int arr[],int start,int end)
{
int temp,i,j;
for(i=start,j=end;start<end;start++,end--)
{
temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
m=m%n;
reverse(a,0,n-1);
reverse(a,0,m-1);
reverse(a,m,n-1);
for(int i=0;i<n;i++)
{
printf("%d",a[i]);
if(i!=n-1)
printf(" ");
}
return 0;
}