要求:左移为负,右移为正
#include<iostream>
using namespace std;
void Reverse(int *arr,int b,int e)
{
for(;b<e;b++,e--)
{
int temp=arr[b];
arr[b]=arr[e];
arr[e]=temp;
}
}
void cycleShift(int *a,int n,int k)
{
if(k<0)
{
k=abs(k)%n;
k=n-k;
}
else
k%=n;
Reverse(a,0,n-k-1);
Reverse(a,n-k,n-1);
Reverse(a,0,n-1);
}
int main()
{
int n;
int arr[1000];
cin>>n;
cout<<"Input "<<n<<" numbers:"<<endl;
for(int i=0;i<n;i++)
cin>>arr[i];
int k;
cout<<"Input the shift number:"<<endl;
cin>>k;
cycleShift(arr,n,k);
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
}