niusouti.com

请编写函数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。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

题目

请编写函数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。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


相似考题
更多“ 请编写函数fun,函数的功能是:移动一维数组中的内容:若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,”相关问题
  • 第1题:

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:includefind

    以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空: #include<stdio.h> findmax(int*s,int t,int*k) { int p; for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________; } main() { int a[10],i,k; for(i=0;i<10;i++)scanf("%d",&a[i]); findmax(a,10,&k); printf("%d,%d\n",k,a[k]); }

    A.k=p

    B.*k=p-s

    C.k=p-s

    D.*k=p


    正确答案:D
    解析:k是—个指针,它的值是—个地址,要通过它为主函数的变量改变数据,必须使用*p,边样就可以把—个下标数赋给p指针指向的那个内存单元,所以横线处应填入*k=p。

  • 第2题:

    请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

    例如,输入如下整数:876 675 896 10l 30l 401 980 431451 777则输出结果为:6,980

    注意:部分源程序在文件PROGl.C文件中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:(1)该程序功能是求最大元素在数组中的下标。它的解题思路是,用最大值变量max标记第一个待找数据,逐个把所有待找数据和max进行比较,并用pos标记其当前最大值所在位置,从而找出最大值。(2)从已给部分源程序的main主函数开始入手,核心函数“fun(a,10,&k);”中的参数a存放着给出的整数,fun函数实现查找最大元素的下标。

  • 第3题:

    有一个数组,内放N个整数,要求编写函数int processor(int *p)找出最小的数和它的下标,然后把它和数组中最前面的元素调换,下标返回给主函数输出,原始数组和改变后的数组由void output(int *p) 输出。


    C

  • 第4题:

    请编写函数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[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 *wint pint n) { int i j t; for(i=0; i=p; i++) /*循环左移p+1次*/ {t=w[0]; for(j=1/jn;j++) /*实现循环左移*/ w[j-1]=w[j]; w[j-1]=t; } }
    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/jn;j++) /*实现循环左移*/ w[j-1]=w[j]; w[j-1]=t; } } 解析:本题采用“循环左移”的算法(关于“循环左移”,我们在后面的试题中有详细的解释)。和我们在前面分析的稍有不同的是,一个是整型数组,一个是字符型数组。

  • 第5题:

    程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m。

    例如:若m的值为2,a数组中的值为:

    注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是使数组右上半三角元素中的值乘以m。本题中首先要确定右上角半角元素的特点,然后对元素逐个进行乘以m的操作。其中,右上角的元素是行下标小于等于列下标的元素。