用c语言或c++写一程序

写一子函数,实现动态建立链表,输入学号为001、002、003的3个同学的信息:学号,姓名,三门课成绩,平均分,当输入学号为0时结束建立链表
写一子函数,以上述链表作为实参,要求实现检索并返回成绩最高的同学信息指针
在主函数中使用函数指针实现子函数的调用,并输出“成绩最高的学生姓名+is the best”。

img


#include <stdio.h>
#include <stdlib.h>
typedef struct _linknode
{
    int num;
    char name[20];
    int score[3];
    float avg;
    struct _linknode *next;
}linknode,*linklist;
void creat(linklist head)
{
    linklist q = head;
    linklist p = NULL;;
    int i=0;
    while(true)
    {
        p = (linklist)malloc(sizeof(linknode));
        scanf("%d",&p->num);
        if(p->num==0){
            break;
        }
        scanf("%s%d%d%d",p->name,&p->score[0],&p->score[1],&p->score[2]);
        p->avg = (p->score[0] + p->score[1]+p->score[1])/3.0;
        p->next = NULL;
        q->next = p;
        q = p;
    }
}
 
linklist LinkListSort(linklist head)
{
    float avg=head->next->avg;
    linklist res=head->next,p = head->next;
    while (p->next!=NULL)
    {
       p=p->next;
       if(avg<p->avg){
               avg=p->avg;
               res=p;
       }
    }

    return res;
}
 
int main()
{
    linklist head = (linklist)malloc(sizeof(linknode));
    linklist p = NULL,h;
    head->next = NULL;
    creat(head);
    h = LinkListSort(head);
    if(h!=NULL)
        printf("%s is the best",h->name);
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632