一维数组移动程序编程问题
void fun(int *w, int p, int n){
int i,j=0,k=0;
int *a;
for(i=0;i<=p;i++) a[j++]=w[i];
for(i=0;i<n-p-1;i++) w[i]=w[i+p+1];
for(k=0;k<j;i++,k++) w[i]=a[k];
}
用来移动一维数组的内容,若数组中有n个数,要求把下标从0到p的数移到数组后面。上面是我自己编的,运行错误。

程序代码:
root@~ #cat move.c
#include <stdio.h>
int main (void) {
int a[5]={ 1,2,3,4,5 };
int p,i;
void move (int a[],int p);
for(i=0;i<5;i++) { printf ("%i ",a[i]); }
printf ("\n");
scanf ("%i",&p);
move(a,p);
for(i=0;i<5;i++) { printf ("%i ",a[i]); }
printf ("\n");
return 0;
}
void move (int a[],int p) {
int i,j,k;
for(i=0,j=5;i<p;i++,j++) {
a[j]=a[i];
}
for(i=0,k=p;k<j;i++,k++) {
a[i]=a[k];
}
}