解题思路:

注意事项:
可以作为链表练习的一个题,蛮不错的
参考代码:

#include <stdio.h>

#include <stdlib.h>

struct student

{

        char number[20];

        char name[20];

        int grade1;

        int grade2;

        int grade3;

        struct student* next;

};

void  CreatList(struct student* head,int N);

void  input(struct student* temp);

int sum(struct student* target);


int main(void)

{

    struct student* head=(struct student*)malloc(sizeof(struct student));

    struct student* move=head;


    int N;  //N是学生记录数目

    scanf("%d",&N);

    int average1=0,average2=0,average3=0;

    int all;


      CreatList(head,N);

    struct student* target=head->next;  //作为最大的那个指针指向的结构体


  for(int i=1;i<=N;i++)

    {

        move=move->next;

        all=sum(move);

        target=(sum(target)>all)?target:move;


        average1+=move->grade1;

        average2+=move->grade2;

        average3+=move->grade3;

    }

    average1=average1/N;

    average2=average2/N;

    average3=average3/N;

    printf("%d %d %d\n",average1,average2,average3);

    printf("%s %s %d %d %d\n",target->number,target->name,target->grade1,target->grade2,target->grade3);

        return 0;

}

/*----------------设置头结点-------------*/

void CreatList(struct student* head,int N)

{

    struct student* move=head;

    for(int i=1;i<=N;i++)

    {

        struct student* temp=(struct student*)malloc(sizeof(struct student));

        move->next=temp;


        input(temp);


        temp->next=NULL;

        move=temp;

    }

}

void input(struct student* temp)

{

        scanf("%s%s%d%d%d",temp->number,temp->name,&temp->grade1,&temp->grade2,&temp->grade3);

}

int sum(struct student* target)

{

        return target->grade1+target->grade2+target->grade3;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论