可以吧这个程序解释一下嘛,

#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;
    }
}