题目:一个年级,相当链表A;一个班级,相当于链表B
该年级5个班,每个班5个人,相当于链表B1–B5
做一个学生成绩管理系统
学生成绩有语文 数学
功能: 录入成绩 找出最三科总分的最高分 最低分
#include <stdio.h>
#include <stdlib.h>
struct Stu {
char name[12];
int china;
int math;
int sum;
struct Stu *next;
};
struct Class {
int num;
struct Stu *msg;
struct Class *next;
};
struct Stu *addStu(struct Stu *headStu,struct Stu *newStu){
struct Stu *p = headStu;
if (headStu == NULL){
return newStu;
}
while(p->next != NULL)
p = p->next;
p->next = newStu;
return p;
}
struct Stu *creatStu(struct Stu *headStu) {
int j;
struct Stu *newStu;
struct Stu *p = headStu;
for (j = 1; j < 6; ++j){
newStu = (struct Stu *)malloc(sizeof(struct Stu));
printf("姓名:");
scanf("%s",newStu->name);
printf("语文成绩:");
scanf("%d",&(newStu->china));
printf("数学成绩:");
scanf("%d",&(newStu->math));
newStu->sum = newStu->china + newStu->math;
headStu = addStu(headStu,newStu);
}
return headStu;
}
struct Class *addClass(struct Class *headClass,struct Class *newClass){
struct Class *p = headClass;
if (headClass == NULL){
return newClass;
}
while(p->next != NULL)
p = p->next;
p->next = newClass;
return headClass;
}
struct Class *creatClass(struct Class *headClass) {
int i;
struct Class *newClass;
for (i = 1; i < 6; i++) {
newClass = (struct Class *)malloc(sizeof(struct Class));
newClass->num = i;
printf("-----------正在录入%d班的信息-----------\n",i);
newClass->msg = creatStu(NULL);
headClass = addClass(headClass,newClass);
}
return headClass;
}
void printMsg(struct Class *headClass){
struct Class *p = headClass;
struct Stu *p1;
while(p != NULL) {
printf("*******%d班成绩如下*******\n",p->num);
p1 = p->msg;
while(p1 != NULL){
printf("姓名:%s 语文:%d 数学:%d\n",p1->name,p1->china,p1->math);
p1 = p1->next;
}
p = p->next;
}
}
void getMaxStu(struct Class *headClass){
int mark;
struct Class *p = headClass;
struct Stu *p1;
struct Stu *max = p->msg;
while(p != NULL) {
p1 = p->msg;
while(p1 != NULL){
if((p1->sum) > (max->sum)){
max = p1;
mark = p->num;
}
p1 = p1->next;
}
p = p->next;
}
printf("%d班 %s同学全段最高分:%d china=%d math=%d\n",mark,max->name,max->sum,max->china,max->math);
}
void getMinStu(struct Class *headClass){
int mark;
struct Class *p = headClass;
struct Stu *p1;
struct Stu *min = p->msg;
while(p != NULL) {
p1 = p->msg;
while(p1 != NULL){
if((p1->sum) < (min->sum)){
min = p1;
mark = p->num;
}
p1 = p1->next;
}
p = p->next;
}
printf("%d班 %s同学全段最低分:%d china=%d math=%d\n",mark,min->name,min->sum,min->china,min->math);
}
int main() {
struct Class *headClass;
headClass = creatClass(headClass);
printMsg(headClass);
printf("\n");
getMaxStu(headClass);
getMinStu(headClass);
return 0;
}