问题 问答题

M名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数proc(),它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#define M 8
struet slist
double s;
struct slist * next;
;
typedef struct slist STREC;
double proc(STREC * h)


STREC*treat(double*s)

STREC *h, *p, *q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<M)
/产生8个结点的链表,各分数存入链表中
q=(STREC*)malloc(sizeof(STREC));
p->s=se[i]; i++; p->next=q; p=q;

p->next=NULL;
return h; //返回链表的首地址

void outlist(STREC*h)

STREC *p;
p=h;
printf("head");
do

printf("->%2.Of", p->s); p=p->next;
//输出各分数
while(p->next! =NULL);
printf("n\n");

void main()

double stu[M]=60, 70, 80, 90, 65, 75, 85, 95,
max;
STREC *h;
h=creat(stu);
outlist(h);
max=proc(h);
printf("max=%6.1f\n", max);

答案

参考答案:double proc (STREC *h)
{
double max=h->s;
while (h!=NULL) //判断其是否为终结点
{
if (max<h=>s)max=h->s; //把大的数放到max中
h=h->next;
}
return max; //最后通过返回值返回到主函数中
}

解析: 要找出学生的最高分,要比较所有学生的成绩。定义一个变量max用来存放学生的最高分.初始化为第一个学生的成绩,依次与其后的学生成绩相比较,最后将得到的最高分返回主函数。

填空题
多项选择题