请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。 例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,1 1,12,13,14,15,p的值为

admin2021-07-09  26

问题 请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。
例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,1 1,12,13,14,15,p的值为6。移动后,一维数组的内容应为7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。
注意:
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
【试题源程序】
#include
#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);
printf("\n\nEnter p:");
seanf("%d",&p);
fun(a,p,n);
printf("\nThe data after moving:\n");
for(i=0;i<n;i++)
printf("%3d",a);
printf("\n\n");
}

选项

答案void fun(int*w,int p,int n) { int i,j,t; for(i=p;i<=n-1;i++) { t=w[n-1]; for(j=n-2;j>=0;j--) w[j+1]=w[j]; w[0]=t; }

解析 本题采用“循环右移”的算法。
转载请注明原文地址:https://kaotiyun.com/show/kZtp777K
0

最新回复(0)