N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

admin2009-02-15  51

问题 N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。
   注意:部分源程序给出如下。   
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。   
   试题程序:
   #include <stdio.h>
    #include  <Stdlib.h>
   #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<N)
   /*产生8个节点的链表,各分数存入链表中*/
     {q=(STREC*)  malloc(sizeOf(STREC));
     p->S=S;  i++;  p->next=q;  p=q;
     }
   p->next=NULL;
   return  h;
   /*返回链表的首地址*/
   }
   outlist(STREC  *h)
   {
   STREC  *p;
   p=h;
   printf("head");
   do
     {printf("->%2.of  ",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.If\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。
转载请注明原文地址:https://kaotiyun.com/show/ZTID777K
0

最新回复(0)