阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某班级有N名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N等于6,学生信息、所选课程及成绩用链表结构存储,如图2-5所示。 程序中相应的类型定义如下:

admin2008-05-15  34

问题 阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
   某班级有N名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N等于6,学生信息、所选课程及成绩用链表结构存储,如图2-5所示。
   程序中相应的类型定义如下:
   #define  N  6
   struct node{
      char cname[5];    /*课程名*/
      int grade;    /*成绩*/
      struct node *next;  /*指针,指示某学生选修的下一门课程及成绩*/
   };
    struct student{
      char xh[5];    /*学号*/
      char name[20];    /*姓名*/
      struct node*link;  /*指针,指示出选修的课程及成绩链表*/
   }stud_info[N];
   
            图2-5
   smd_mb[]为一个全局数组。
   函数func(char kc[],int*num)的功能是统计选修了课程名为kc的学生的人数,并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num带回选修课程比的学生人数。
【C函数】
   double func(char kc[],int*num)
   {
     int i,count=0,sum=0;  /*count用于记录选修课程名为kc的学生的人数*/
     double avg=0.0;
     struct node *p;
     for(i=0;i<N;i++){
       p=(1);    /*取第i个学生所修课程链表的头指针*/
       while (p)  {
         if((2)){
            sum=(3);
            count++;
            break;;
         }/*if*/
         p=p->next;
           }/*while*/
      }
     (4);
   if((5))
      avg=(double)sum/count;    /*计算平均成绩*/
      return avg;
   }/*func*/

选项

答案(1)stud_info[i].link,或其等价形式 (2)!strcmp(p->cname,kc),或其等价形式 (3)sum+p->grade,或其等价形式 (4)*num=count,或其等价形式 (5)count!=0,或count>0,或其等价形式

解析 本题考查链表的查找运算。
   函数time(char kc[],int*num)的功能是统计选修了课程名为kc的学生的人数,并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num返回选修课程 kc的学生人数。
   函数中用count计算选修课程kc的人数、用sum记录学生该课程的成绩总和<除以学生人数即可得到平均成绩)。
   stud_info[]为一个全局数组,stud_info[0]是第0个学生的信息,stud_info[1]是第1个学生的信息,依次类推。
   对于每个学生,用一个单链表存储其选修的课程及成绩,链表的头指针为smd info link,显然,应遍历为每个学生建立的单链表。空(1)处应填入“stud info.link”。
   对于链表中的一个结点,应查看其课程名是否等于给定的课程名kc,若相等,则将其成绩累加至sum。因此空(2)处应填入“!strcmp(p->cname,kc)”,空(3)处应填入“sum+p->grade"。
   由于需要参数*num返回选修课程比的人数,所以空(4)处应填入“*num=count”。
   平均成绩等于成绩总和除以选课人数,因此,选课人数应不等于0,所以空(5)处填入“count>0”或“count!=0”。
转载请注明原文地址:https://jikaoti.com/ti/KZW7FFFM
0

最新回复(0)