法1
#include<stdio.h>
#define s 11
void fun(int a[s],int m)
{
int *p,*f,*h;
p=a;
f=p+s-m;
for(h=f;h<p+s;h++)
printf("%d ",*h);
for(;p<f;p++)
printf("%d ",*p);
}
int main()
{
printf("input the data of numble:");
int n,i,m,a[100];
scanf("%d",&n);
printf("input %d numbles:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("which numble begin to change:");
scanf("%d",&m);
fun(a,m);
return 0;
}
法2
#include<stdio.h>
void fun(int *p,int n,int m)
{
int i;
for(i=n-1;i>=0;i--)
*(p+i+m)=*(p+i);//将数向后移动m个单位,只能从后开始移动
for(i=0;i<m;i++)
{
*p=*(p+n);//将后m个数调到前m个位置上
p++;
}
}
int main()
{
printf("input the data of numble:");
int n,i,m,a[100],*p;
p=a;
scanf("%d",&n);
printf("input %d numbles:",n);
for(;p<a+n;p++)
scanf("%d",p);
printf("which numble begin to change:");
scanf("%d",&m);
p=a;
fun(p,n,m);
for(p=a;p<a+n;p++)
printf("%d ",*p);
return 0;
}