有N个数,个数向后移m个位置,然后把前面m个数变成最前面的m个数
#include<stdio.h>
//实现移动向后移动M 个位置,然后最后面的m个数变成最前面的M个数
void move(int *arr,int m,int n)
{
int i,temp;
//将后面K个元素逆置
for (i = 0; i < m / 2 ; i++)
{
temp = arr[n-m+i];
arr[n-m+i] = arr[n-i-1];
arr[n-i-1] = temp;
}
//将前面len-k个元素逆置
for (i = 0; i < (n-m) / 2; i++)
{
temp = arr[i];
arr[i] = arr[n-m-i-1];
arr[n-m-i-1] = temp;
}
//将整个数组逆置
for (i = 0; i < n / 2; i++)
{
temp = arr[i];
arr[i] = arr[n-1-i];
arr[n-i-1] = temp;
}
//遍历数组
for (i = 0; i < n; i++)
printf("%d ",arr[i]);
}
int main()
{
int a[60];
int i,m,n;
int *p=a;
printf("请输入整数n的个数是:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&p[i]);
printf("请输入需要移动的次数是:\n");
scanf("%d",&m);
move(p,m,n);
return 0;
}