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

admin2013-06-12  29

问题 请编写函数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。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
   #include<stdiO.h>
   #define    N    80
   void  fun(int  *w,int  p,int  n)
   {
     }
    main()
    {in[  a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
     int  i,p,n=15;
     printf("The odginal data:\n");
     for(i=0;i<n;i++)printf("%3d",a);
    printf("\nEnter p:");
   scanf("%d",&p);
   fun(a,p,n);
   printf ("\n The data after moving:\n");
   for(i=0;i<n;i++)printf("%3d”,a);
   }

选项

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

解析 将数组后面的元素向前平移,肯定会将前面的元素覆盖。因此,可以定义一个数组用来暂时存放前面的元素。可以先将w[0]~w[p]依次赋给a[0]~a[p];然后将w[p]~w[n—1)
移到数组的前面:再将a[0]~a[p)依次赋给w[n-p-1+i]~w[n—1]。
转载请注明原文地址:https://kaotiyun.com/show/BgJp777K
0

最新回复(0)