Description
调用自定义后移函数move(int *a, int n, int m)来进行循环移位,对n(n<20)个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,如下: n=10, m=3时:输入:1 2 3 4 5 6 7 8 9 10,输出:8 9 10 1 2 3 4 5 6 7
Input
输入多组测试数据,每组先输入n(n < 20)和m(m < n),再输入n个整数。
Output
输出循环移动m个数后的序列,数据间空格隔开。
#include<stdio.h>
int move(int *x,int n,int m)
{
int t[255];
int i;
//int *p;指针循环变量p
for(i=0;i<n;i++)
t[i]=x[i];
for(i=0;i<m;i++)
x[i]=t[n-m+i];
for(i=m;i<n;i++)
x[i]=t[i-m];
/*指针变量做循环变量也可以。
for(i=0,p=x;p<x+m;p++)
*p=t[n-m+i++];
for(i=0,p=x+m;p<x+n;p++)
*p=t[i++];
*/
}
int main()
{
int a[20];
int n,m;
int i;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
move(a,n,m);
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d",a[n-1]);
printf("\n");
}
return 0;
}