问答题
请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include<stdio.h>
#define N 80
void fun(int*w,int p,int n)
{
}
main()
{int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i,p,n=15;
printf("The original data:/n");
for(i=0;i<n;i++)printf("%3d",a[i]);
printf("/n/nEnter p:");scanf("%d",&p);
fun(a,p,n);
printf("/nThe data after moving:/n");
for(i=0;i<n;i++)printf("%3d",a[i]);
printf("/n/n");
}
【正确答案】
【答案解析】void fun(int *w, int p, int n)
{int x,j,ch;
for(x=0;x<=p;x++)
{ch=w[0];
for(j=1;j<n;j++)
{
w[j-1]=w[j];
}
w[n-1]=ch;
}
}
[解析] 本题要求把下标从。到p(含p,p小于等于n-1)的数组元素平移到数组的最后,可以根据输入的p值,通过for循环语句,将p+1到n-1(含n-1)之间的数组元素依次向前移动p+1个存储单元,即w[j-1]=w[j];,同时将0到p个数组元素逐一赋给数组w[n-1],也就是通过语句w[n-1]=ch;来实现此操作的。