问题 问答题

请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p~n-1(p<n-1)的数组元素平移到数组的前面。
例如,一维数组中的原始内容为1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, P的值为6。移动后,一维数组的内容应为7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 2, 3, 4, 5, 6。
[注意] 部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

[试题源程序]


#inciude <stdio.h>
#define N 80
void fun(int *w, int p, int n)


main()

int a[N]=(i, 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 i, J, t;

for(i=p; i<=n-i; i++)

{

t=w[n-A];

for(j=n-B; j>=0; j--)

w[j+A]=w[j];

w[0]=t;

}

}

解析:

本题可以采用“循环右移”的算法。

单项选择题 A1型题
单项选择题