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

admin2010-05-05  25

问题 请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p(p≤n-1)的数组元素平移到数组的最后。
   例如,一维数组中的原始内容为1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,p的值为3。移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15, 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);
       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);
       printf("\n\n");
   }

选项

答案void fun(int *w,int p,int n) { int i, j, t; for(i=0; i<=p; i++) /*循环左移p+1次*/ {t=w[0]; for(j=1/j<n;j++) /*实现循环左移*/ w[j-1]=w[j]; w[j-1]=t; } }

解析 本题采用“循环左移”的算法(关于“循环左移”,我们在后面的试题中有详细的解释)。和我们在前面分析的稍有不同的是,一个是整型数组,一个是字符型数组。
转载请注明原文地址:https://kaotiyun.com/show/1HID777K
0

随机试题
最新回复(0)