一维数组移动程序编程问题
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]; } }