#include<stdio.h>void mov(int*x,int n,int m);int main(void){ int a[80],i,m,n,*p; printf("Input n,m:"); scanf("%d%d",&n,&m); for(p=a,i=0;i<n;i++) scanf("%d",p++); mov(a,n,m); printf("After moved:"); for(i=0;i<n;i++) printf("%5d",a[i]); return 0;}void mov(int *x,int n,int m){ int i,j,k; for(i=0;i<m;i++){ k=x[n-1]; for(j=n-1;j>0;j--) x[j]=x[j-1]; x[0]=k; }}
供参考:
#include<stdio.h>
void mov(int*x,int n,int m);
int main(void)
{
int a[80],i,m,n,*p;
printf("Input n,m:");
scanf("%d%d",&n,&m); //输入数组长度n,移动位数m
for(p=a,i=0;i<n;i++)
scanf("%d",p++); //输入数组元素
mov(a,n,m);
printf("After moved:");
for(i=0;i<n;i++) //输出移位后的数组
printf("%5d",a[i]);
return 0;
}
void mov(int *x,int n,int m)//移位函数,*x对应数组,n是数组长度,m是移动位数
{ //假如数组长度n=3,移位数m=2,原数组元素数排列为:1 2 3
int i,j,k; //移位函数作用后数组元素排列为:2 3 1
for(i=0;i<m;i++)
{
k=x[n-1];
for(j=n-1;j>0;j--)
x[j]=x[j-1];
x[0]=k;
}
}