解题思路:
注意事项:
参考代码:
#include<stdio.h> #include<stdlib.h> #define Maxsize 100 typedef struct { char num[Maxsize];//学号 char name[Maxsize];//姓名 int course[3];//三科成绩 }Student;//一个学生的信息 typedef struct studentnode { Student data;//节点数据域 struct studentnode* next;//节点指针域 }SNode,*SList;//链表节点 SList InitalList();//初始化链表 void InsertNode(SList head);//在链表插入节点 Student TraverseList(SList head,int a[3],int N);//浏览所有节点找出总成绩最高的人并计算三科成绩平均分 int Sum(Student a);//求学生a的成绩总分 int main() { int N;//学生个数 SList head = InitalList();//建立头节点 scanf("%d",&N); //将N个学生的信息插入链表 for(int cont_i = 0;cont_i<N;cont_i++) { InsertNode(head); } int course1[3]={0};//三科的平均成绩 Student best = TraverseList(head,course1,N);//找出总分最高的学生 printf("%d %d %d\n",course1[0],course1[1],course1[2]);//输出三科平均分 printf("%s %s %d %d %d\n",best.num,best.name,best.course[0],best.course[1],best.course[2]);//输出总分最高的学生的信息 return 0; } SList InitalList() { SList output=(SNode*)malloc(sizeof(SNode));//生成头节点空间 //头节点数据域赋值 (output->data).course[0]=-1; (output->data).course[1]=-1; (output->data).course[3]=-1; output->next = NULL; return output; } void InsertNode(SList head) { SNode *newStudent = (SNode*)malloc(sizeof(SNode));//建立节点空间 //将学生信息输入到节点的数据域 scanf("%s %s %d %d %d",&(newStudent->data).num,&(newStudent->data).name,&(newStudent->data).course[0],&(newStudent->data).course[1],&(newStudent->data).course[2]); //将节点插入到链表顶端 newStudent->next = head->next; head->next = newStudent; } Student TraverseList(SList head,int a[3],int N) { Student best={ "ERROR","ERROR",-1,-1,-1 };//初始化最好的学生信息 //int sum[3]={0}; SNode* p = head->next;//从首元节点开始遍历 while(p) { if(Sum(p->data)>Sum(best))//当前学生的总分大于best中的学生的总分 { best = p->data;//进行更换 } //计算三科的总分 a[0] = a[0]+(p->data).course[0]; a[1] = a[1]+(p->data).course[1]; a[2] = a[2]+(p->data).course[2]; //读取下一个学生的信息 p=p->next; } //计算三科的平均分 for(int cont_i = 0;cont_i<=2;cont_i++) { a[cont_i] = a[cont_i]/N; } return best; } //求学生a的成绩总分 int Sum(Student a) { int output = a.course[0]+a.course[1]+a.course[2]; return output; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:774 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:747 |
简单的a+b (C语言代码)浏览:594 |
C语言训练-求素数问题 (C语言代码)浏览:1509 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1215 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:597 |
愚蠢的摄影师 (C++代码)浏览:980 |
循环入门练习5 (C语言代码)浏览:908 |
简单的a+b (C语言代码)浏览:618 |
【偶数求和】 (C语言代码)浏览:460 |