请各位大侠帮帮我啊 谢谢了
有n个整数,使前面的n-m个数顺序向后移m个位置,后面的m个数变成最前面的m个数。(m<n)
程序代码:#include<stdio.h>
#define N 20
void main()
{
int n,i,a[N],b;
int yiwei(int *p,int k);/*函数声明*/
printf("请输入整数n:\n");
scanf("%d",&n);
b=n-1;
printf("请输入n个数组元素:\n");
for(i=0;i<n;i++)/*输入n个数组元素*/
scanf("%d",&a[i]);
yiwei(a,b);/*函数调用*/
printf("改变后的数为:\n");
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
}
int yiwei(int *p,int t)/*函数定义*/
{
int m,i,*q;
q=p;
printf("请输入整数m:\n");
scanf("%d",&m);
for(i=0;i<=t;i++)/*把所有数后移m位*/
{
*(q+m+t)=*(q+t);
q--;
}
printf("验证\n");/*验证是否后移成功*/
for(i=0;i<t+m+1;i++)
{
printf("%2d",*p);
p++;
}
printf("\n");
q=p-m-t-1;/*在上个循环中p已经指向最后再加一得位置所以要使p减去相关数,若没有验证循环直接写成q=p*/
for(i=t+1;i<=t+m;i++)/*把指定的m个元素前移到数组起始位置*/
{
*q=*(q+t+1);
q++;
}
return 0;
}
这是我以前做的!楼主参考一下








