编程题 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)
{
q=(STREC*)malloc(sizeof(STREC));
q->s=s[i];
i++;
p->next=q;
p=q;
}
p->next=0;
return h;
}
outlist(STREC *h)
{
STREC *p;
p=h->next;
printf("head");
do
{
printf("->%2.0f",p->s);
p=p->next;
}
while(p!=0);
printf("\n\n");
}
main()
{
double s[N]={85,76,69,85,91,72,64,87}, max;
STREC *h;
FILE *out;
h=creat(s);
outlist(h);
max=fun(h);
printf("max=%6.1f\n",max);
out=fopen("out.dat", "w");
fprintf(out, "max=%6.1f",max);
fclose(out);
}
答案是: double fun(STREC *h)
{
double max;
STREC *q=h;
max=h->s;
do
{
if(q->s>max)
max=q->s;
q=q->next;
}
while(q!=0);
return max;
}