N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。

题目

N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。

例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。注意:部分源程序在文件PROGl.C中。

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


相似考题
更多“ N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应”相关问题
  • 第1题:

    学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构件数组s中,请编写函数fun(),它的功能是:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。

    注意:部分源程序给出如下。

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

    试题程序:

    include <stdio.h>

    define N 16

    typedef struct

    { char num[10];

    int s;

    }STREC;

    int fun(STREC *a,STREC *b)

    {

    }

    main ()

    {

    STREC s [N] = { { "GA005", 85 }, { "GA003", 76 },

    { "GA002", 69 }, { "GA004", 85 }, { "GA001", 91 },

    {"GA007", 72}, {"GA008", 64}, {"GA006", 87},

    { "GA015", 85), ( "GA013", 91 }, { "GA012", 64 },

    { "GA014", 91 ), { "GA011", 66}, { "GA017", 64 },

    {"GA018", 64 }, {"GA016", 72 } };

    STREC h[N];

    int i, n;

    FILE *out;

    n=fun(s,h);

    printf("The %d highest score :\n",n);

    for (i=0; i<n; i++)

    printf("%s %4d\n ",h[i].num, h[i].s);

    /*输出最高分学生的学号和成绩* /

    printf("\n");

    ut=fopen("out45.dat", "w");

    fprintf(out, "%d\n",n);

    for(i=0; i<n; i++)

    fprintf(out, "%4d\n ",h[i].s);

    fclose(out);

    }


    正确答案:int fun (STREC *a STREC *b) { int ij=0max=a[0].s; for(i=0;iN;i++) if(maxa[i].s)max=a[i].s; /*找出最大值*/ for(i=0;iN;i++) if(max==a[i].s)b[j++]=a[i]; /*找出成绩与max相等的学生的记录存入结构体b中*/ return j; /*返回最高成绩的学生人数*/ }
    int fun (STREC *a, STREC *b) { int i,j=0,max=a[0].s; for(i=0;iN;i++) if(maxa[i].s)max=a[i].s; /*找出最大值*/ for(i=0;iN;i++) if(max==a[i].s)b[j++]=a[i]; /*找出成绩与max相等的学生的记录,存入结构体b中*/ return j; /*返回最高成绩的学生人数*/ } 解析:该程序使用循环嵌套,第1个for语句的作用是找出最大值。第2个循环的作用是找出与max相等的成绩,也即最高成绩的学生记录,并存入b中。

  • 第2题:

    给定程序MODll.C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第l门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第l门课程的平均分是:76.125000

    请改正函数fun中指定部位的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:


    正确答案:
    (1)doublesum改为doublesunl=0.0;(2)for(i=0;i<2;i*)改为细(i=0;i<n;i++);(3)sum+=ad[i].scom[1]改为sum+=羽[i].score[0];【考点分析】主要考察桩时变量初始化,c语言里临时变量不初始化,它的默认值是不确定的一个值。再者,考察C语言约定数组的下标是从0开始的。【解题思路】(1)doubleⅫ改为double8am=0.0;累加求和需要初始化累加结果的临时变量。(2)for(i_0;i<2;i++)改为for(i_0;i<n;i++);共有11个学生的成绩,需要累加所有学生第一门课的成绩。(3)sum+.std[i].BCOl.e[1]改为8am+=8td[i].score[0];第1门课程的平均分,c语言的下标是从0开始的。

  • 第3题:

    请教:2016年计算机二级考试C++模拟试题简答题10答案

    n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。


      double fun(strec *h)

      {double aver=0.0;

      while(h!=null)

      {aver+=h->s;

      hy=h->next;}

      aver/=n;

      return aver;}

  • 第4题:

    某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。

    例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序在文件PROGl.C中。

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


    正确答案:
    voidfun(STREC*a)inti:a一>ave=0.0:fbr(i=0;i<N;i++)a一>ave=a—>ave+·一>s[i];/*求各门成绩的总和}/a->ave/=N;/}求平均分*/}【考点分析】本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数参数。【解题思路】本题考查自定义形参的相关知识点,程序流程是这样的:在如n()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC·a,此时,引用成员的方式可以使用指向运算符,即a一>ave和a—>s[i],当然也可用(*a),ave和(*a).S[i]。

  • 第5题:

    某学生的记录由学号、8门课成绩和平均分组成,学号和 8门课的成绩已在主函数中给出。请编写fun()函数,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。

    例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5, 87.5,则他的平均分应当是78.875。

    注意:部分源程序给出如下。

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

    试题程序:

    include<stdio.h>

    define N 8

    typedef struct

    { char num [10];

    double s[N];

    double ave;

    } STREC;

    void fun()

    {

    }

    main()

    {

    STREC s={"GA005",85.5,76,69.5,85,91, 72,64.5,87.5);

    int i;

    fun (&s);

    printf("The %s' s student data:\n",s.num)/ /*输出学号*/

    for(i=0;i<N; i++)

    printf("%4.1f\n", s.s[i]);

    /*输出各科成绩*/

    printf("\nave=%7.3f\n",s.ave);

    /*输出平均分*/

    }


    正确答案:void fun(STREC *p) { int i; p->ave=0.0; for(i=0;iN;i++) p->ave=p->ave+p->s[i]; /*求各门成绩的总和*/ p->ave=p->ave/N; /*求平均分*/ }
    void fun(STREC *p) { int i; p->ave=0.0; for(i=0;iN;i++) p->ave=p->ave+p->s[i]; /*求各门成绩的总和*/ p->ave=p->ave/N; /*求平均分*/ } 解析:本题考查自己定义形参的相关知识点,程序流程是这样的,在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC *p,此时,引用成员的方式可以是用指向运算符即p->ave和 p->s[i],当然,也可用(*p).ave和(*p).s[i]。