题目:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
输入:输入数据的个数n, n个整数, 移动的位置m
输出:移动后的n个数
分析:
代码:
#include<stdio.h>
void move(int a[], int n, int m) {
int* p, end;
end = *(a + n - 1); //a+n-1=a[n-1]
for (p = a + n - 1; p > a; p--)
*p = *(p - 1);
*a = end;
m--;
if (m > 0)
move(a, n, m); //递归
}
int main()
{
int i,n,m, a[10000], *p = a;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d",p++);
scanf("%d", &m);
move(a, n, m);
p = a;
for (i = 0; i < n; i++,p++)
printf("%d ", *p);
return 0;
}