学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include <stdio.h>define N 12typedef struct{

题目

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。

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

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

试题程序:

include <stdio.h>

define N 12

typedef struct

{char num[10];

double S;

} STREC;

double fun(STREC *a,STREC *b,STREC *C,int *n,int *m)

{

}

main()

{

STREC s[N]={{“GA05”,65},{“GA03”,86},

{“GA02”,76},{“GA04”,95},{“GA01”,93},

{“GA07”,78},{“GA08”,68},{“GA06”,88},

{“GA09”,60},{“GAll”,54},{“GAl2”,56},

{“GAl0”,98}};

STREC h[N],l[N],t;

FILE *out;

int i,j,m,n;

double ave;

ave=fun(S,h,l,&n,&m);

printf("The %d student data which is higher than %7.3f:\n",n,ave);

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

printf("%s %4.lf\n",h[i].num,

h[i].s);

printf("\n");

printf("The %d Student data which iS lower than%7.3f:\n",m,ave);

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

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

printf("\n");

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

fprintf(out, "%d\n %7.3f\n",n,ave);

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

for(j=i+1;i<n;j++)

if(h[i].s<h[j].s)

{t=h[i];h[i]=h[i];h[j]=t;}

/*分数从现到低排列*/

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

fprintf(out,“%4.1f\n",h[i].s);

fprintf(out,"%d\n %7.3f\n",m,ave);

for(i=0;i<m-1;i++)

for(j=i+1;i<m;j++)

if(l[i].s<l[j].s)

{t=l[i];l[i]=l[j];l[j]=t;}

/*分数从高到低排列*/

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

fprintf(out,"%4.1f\n",l[i].s);

fclose(out);

}


相似考题
更多“学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函 ”相关问题
  • 第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题:

    学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数:

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

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


    正确答案:
    【考点分析】本题考查:查找结构体数组中的最小数据,需要通过for循环语句和if条件语句来完成。【解题思路】本题中第一个循环语句的作用是遍历数组求出最低分数,第二个循环语句的作用是将数组中的元素与最低分比较,查找是否存在与最低分相等的成绩。

  • 第3题:

    已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

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

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


    正确答案:
    解析:该程序功能是求最低分数的学生。本题是关于求解结构体中某些成员的最小值,首先将第一个值设定为最小值,并在循环中将其他所有值与该值进行比较,求得最小值。

  • 第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]。

  • 第6题:

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

    已知学生的记录由学号和学习成绩构成,n名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。


      void fun(stu a[],stu *s)

      {int i,min;

      min=a[0].s;

      for(i=0;i

      if(a.s

      {min=a.s;

      *s=a;}}