就业数据资源平台
当前位置:首页 > C语言程序设计
2011年计算机二级C语言十套上机题15

2011年计算机二级C语言十套上机题15


3. 编程题


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


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


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


  试题程序:


  #include


  #include


  #define N 8


  struct slist


  { double s;


  struct slist *next;


  };


  typedef struct slist STREC;


  double fun(STREC *h)


  {


  }


  STREC * creat (double *s)


  {


  STREC *h,*p,*q;


  int i=0;


  h=p=(STREC*)malloc(sizeof(STREC));


  p->s=0;


  while(i  {q=(STREC*) malloc(sizeof(STREC));


  p->s=s[i]; i++; p->next=q; p=q;


  }


  p->next=NULL;


  return h; /*返回链表的首地址*/


  }


  outlist(STREC *h)


  {


  STREC *p;


  p=h;


  printf("head");


  do


  {printf("->%2.0f ",p->s);p=p->next;} /*输出各分数*/


  while(p!=NULL);


  printf("\n\n ");


  }


  main()


  {


  double s[N]={56,89,76,95,91,68,75,85}, min;


  STREC *h;


  h=creat(s);


  outlist(h);


  min=fun(h);


  printf("min=%6.1f\n ",min);


  }


  答案及评析:


  double fun(STREC *h)


  { double min=h->s;


  while(h!=NULL) /*通过循环找到最低分数*/


  {if(min>h->s)


  min=h->s;


  h=h->next;


  }


  return min;


  }【解析】在本题中,h为一个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符"->"。由于是链表,所以要使h逐一往后移动,使用的是h=h->next。

就业数据资源平台