学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:include<stdio.h>define N 16typedef struct{ char mum[10);int s;}STREC;int fun (STREC a[ ]){}main (){STREC s[N]={{“GA005”

题目

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是按分数的高低排列学生的记录,低分在前。

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

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

试题程序:

include<stdio.h>

define N 16

typedef struct

{ char mum[10);

int s;

}STREC;

int fun (STREC a[ ])

{

}

main ()

{

STREC s[N]={{“GA005”,88},{“GA003”,64},

{“CA002”,77},{“GA004”,89},{“GA001”,54},

{“GA007”,72},{“GA008”,72},{“GA006”,65},

{“GA015”,83},{“GA013”,95},{“GA012”,55},

{“GA014”,68},{“GA01l”,78},{“GA017”,53},

{“GA018”,92},{“GA016”,82}};

int i;

FILE *out;

fun(s);

printf(“The data after sorted :\n”);

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

{

if((i)%4==0)

/*每行输出4个学生记录*/

printf(“\n”);

printf(“%s %4d ”,s[i].num,s[i].s);

}

printf(“\n”);

ut=fopen(“out21.dat”,“w”);

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

{

if((i)%4==0&&i)

fprintf(out,“\n”);

fPrintf(out,“%4d”,s[i].s);

}

fprintf(out,“\n”);

fClose(out);

}


相似考题
参考答案和解析
正确答案:int fun(STREC a[]) { int ij; STREC t; for(i=l;iN;i++) /*用冒泡法进行排序进行N-1次比较*/ for(j=0;jN-1;j++) /*在每—次比较中要进行N-1次两两比较*/ if(a[j].s>a[j+1].s) /*按分数的高低排列学生的记录低分在前*/ { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } }
int fun(STREC a[]) { int i,j; STREC t; for(i=l;iN;i++) /*用冒泡法进行排序,进行N-1次比较*/ for(j=0;jN-1;j++) /*在每—次比较中要进行N-1次两两比较*/ if(a[j].s>a[j+1].s) /*按分数的高低排列学生的记录,低分在前*/ { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } 解析:冒泡法算法思路:如果有N个数,则要进行N-1次比较,在每—次比较中要进行N-1次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要求从小到大排序,则大的数要放在后。反之则对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,所以第1次比较结束后,最大(或最小)数肯定在最后,第2次比较结束后,次最大(或次最小)数肯定在倒数的第2个数,依次类推,所以进行第一次比较时必须比较到最后一个数,而进行第2次比较时只要比较到倒数的第2个数即可,所以进行第 i次比较I时只需比较N-i次即可(这种算法较难理解,但它是最好的)。
更多“学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的 ”相关问题
  • 第1题:

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

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

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


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

  • 第2题:

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

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

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


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

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

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

    请勿改动主函数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]。

  • 第5题:

    请教: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;}}