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

全国等级考试资料网 2022-09-24 05:49:09 218

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(" ");

}

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 ",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。

相关资料

相关阅读