请各位大侠帮帮我啊 谢谢了
有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; }这是我以前做的!楼主参考一下