#include<stdio.h>
void removed(int a[],int m,int n);
void main()
{
int m,s[ 10],*p;
printf(" Input data:\n");
for(p=s;p<s+10;p++)/*输入10个元素值*/
scanf("%d",p);
printf("Move m=");
scanf("%d" ,&m);
removed(s,m,10);/*调用循环右移函数*/
printf(" After: \n");
for(p=s;p<s+10;p++)/*按移动后的顺序输出*/
printf("%5d" ,*p);
printf("\n");
}
void removed(int a[],int m,int n)
{
int i,t,*p;
for(i=0;i<m;i++)/*循环右移m个元素位置*/
{
p=a+n-1;/*p 指向数组的最后一个元素a[n-1]*/
t=*p;/*t保存a[n-1]的值*/
for(;p>a;p--)/*将a[n-2]、…、a[0]顺序循环右移一位至a[n-1]、…、a[1]*/
*p=*(p-1);
*p=t;/*退出循环时p指向a[0],即将t中的原a[n-1]值送a[0]*/
}
}
运行结果: