请编写函数fun,函数的功能是,移动一维数组中的内容若数组中有n个整数,要求把下标从0到p(含p,p≤n-1)的数组中的元素整体向后移动,把下标从p+1到n-1的元素整体向前移动。例如,n为10,p为3,移动前,一维数组的内容为:1、2、3、4、5、6、7、8、9、10。移动后,一维数组中的内容应为:5、6、7、8、9、10、1、2、3、4。 函数接口定义: void fun(int *pArr, int p, int n) 裁判测试程序样例: #include #define N 10 void fun(int *pArr, int p, int n); int main() { int a[N]={1,2,3,4,5,6,7,8,9,10}; int i,p; scanf("%d",&p); fun(a,p,N); for(i=0;i
把p的位置固定。p-1位置的数据临时保存,把p后面的数据整体往前移动一次,以此类推。
不知道你这个问题是否已经解决, 如果还没有解决的话:#define N 10
void fun(int *pArr,int p,int n)
{
int i=0;
int *q = new int[n];
for(i=0;i<=p;i++)
q[n-p+i-1] = pArr[i];
for(i=p+1;i<n;i++)
q[i-p-1] = pArr[i];
for(i=0;i<n;i++)
pArr[i] = q[i];
delete []q;
}
int main(void){
int a[N]={1,2,3,4,5,6,7,8,9,10};
int i,p;
scanf_s("%d",&p);
fun(a,p,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}