有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
程序的运行示例如下:
共有多少个数?5
后移多少个?2
请以,号为间隔输入5个数。
1,2,3,4,5
移动后顺序为:
4,5,1,2,3
#include <stdio.h>
void move(int array[20], int n, int m)
{
int *p, array_end;
array_end = *(array + n - 1);
for (p = array + n - 1; p > array; p--)
*p = *(p - 1);
*array = array_end;
m--;
if (m > 0)
move(array, n, m);
}
int main()
{
int number[20], n, m, i;
printf("共有多少个数?");
scanf("%d", &n);
printf("后移多少个?");
scanf("%d", &m);
printf("请以,号为间隔输入%d个数。\n", n);
for (i = 0; i < n; i++)
scanf("%d,", &number[i]);
move(number, n, m);
printf("移动后顺序为:\n");
for (i = 0; i < n-1; i++)
printf("%d,", number[i]);
printf("%d",number[n-1]);
return 0;
}