请编写函数fun,其功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0~P(含p,p小于等于n一1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为:1、2、3、4、5、6、7、8、9、10;P的值为3。移动后,一维数组中的

admin2018-03-28  27

问题 请编写函数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 8 0
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 da ta:\n");
    for(i=0;i<n;i++)
    printf("%3d",a);
    printf("\n\nEnter p:");
    scanf("%d",&p);
    fun(a,p,n);
    printf("\nThe data after mov-
ing:\n");
    for(i=0;i<n;i++)
    printf("%3 d",a);
    printf("\n\n");
}

选项

答案voild fun(char a[],char b[],int n) { int i,k=0; for(i=0;a[i]!=’\0’;i++) if(i!=n) /*将不是指定 下标的字符存入数组b中*/ { int x,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j<n;j++)/*通过 for循环语句,将p+1到n一1(含n一1)之间的数组元素依次向前移动p+1个存储单元*/ { w[j一1]=w[j]; } w[n一1]=ch;/*将0到p 个数组元素逐一赋给数组w[n一1]*/ } }

解析 本题要求把下标从0~p(含p,p小于等于n—1)的数组元素平移到数组的最后,可以根据输入的p值,通过for循环语句,将p+1—n—l(含n一1)之间的数组元素依次向前移动p+1个存储单元,即w [j一1]=w[j];,同时将0~p个数组元素逐一赋给数组w[n一1],也就是通过语句w[n一1]=ch;来实现此操作的。
转载请注明原文地址:https://kaotiyun.com/show/ADxp777K
0

最新回复(0)