解题思路:
注意事项:
可以作为链表练习的一个题,蛮不错的
参考代码:
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复