void Print_Array(int *br,const int n) //输出打印数组
{
for(int i=0;i<n;i++)
{
printf("%d ",*(br+i));
}
printf("\n");
}
void Right_Move_Array(int *br,const int n) //右移一位
{
assert(br != NULL && n>0);
int temp=*(br + n-1); //把数组最后一位元素给temp
for(int i=n-1;i>0;i--)
{
*(br+i)=*(br+i-1); //循环把数组第i-1位元素给第i位元素
}
*br=temp; //把temp里面的值给数组第一位元素
}
void Left_Move_Array(int *br,const int n)
{
assert(br != NULL && n>0);
int temp=*br;
for(int i=1;i<n;i++)
{
*(br+i-1)=*(br+i);
}
*(br+n-1)=temp;
}
void Right_Move_Array_k(int *br,const int n,int k)
{
assert(br != NULL && n != 0 );
if(k>0)
{
k = k % n;
while (k != 0)
{
Right_Move_Array(br,n);
k--;
}
}
else
{
k = -k;
k=k % n;
while (k != 0)
{
Left_Move_Array(br,n);
k++;
}
}
}
void Left_Move_Array_k(int *br,const int n,int k)
{
Right_Move_Array_k(br,n,-k);
}
int main()
{
int ar[ ]={1,2,3,4,5,6,7,8,9,10};
int n=sizeof(ar)/sizeof(ar[0]);
Print_Array(ar,n);
Right_Move_Array(ar,n);
Print_Array(ar,n);
Left_Move_Array(ar,n);
Print_Array(ar,n);
Left_Move_Array_k(ar,n,3);
Print_Array(ar,n);
Right_Move_Array_k(ar,n,3);
Print_Array(ar,n);
return 0;
}