链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。 场景:一个年级,相当链表A 该年级5个班,每个班5个人,相当于链表B1--B5 做一个学生成绩管理系统 学生成绩有语文 数学 英语 功能: 录入成绩 找三科总分的最高分 最低分 算出平均分
场景:一个年级,相当链表A
该年级5个班,每个班5个人,相当于链表B1–B5
做一个学生成绩管理系统
学生成绩有语文 数学 英语
功能: 录入成绩 找三科总分的最高分 最低分 算出平均分)
场景
一个年级,相当链表A
该年级5个班,每个班5个人,相当于链表B1–B5
做一个学生成绩管理系统
学生成绩有语文 数学 英语
功能: 录入成绩 找三科总分的最高分 最低分 算出平均分)
头文件
#include <stdio.h> //编译预处理命令
#include <stdlib.h> //标准库函数头文件
成绩结构体
struct Chengji
{
int yuwen;
int shuxue;
int yingyu;
int ban;
int geshu;
float sum;
struct Chengji *next;
};
合班级结构体
struct Banji
{
struct Chengji *head;
struct Banji *next;
};
头插法
struct Chengji* insertStuMesage(struct Chengji *head,struct Chengji *new)
{
if(head == NULL)
{head = new;}
else
{new->next = head;head = new;}
return head;
}
struct Banji* insertClaMesage(struct Banji *head,struct Banji *new)
{
if(head == NULL)
{
head = new;
}
else
{
new->next = head;
head = new;
}
return head;
}
创建成绩
struct Chengji* creatChengji(struct Chengji *head,int i)
{
int num;
float sum;
struct Chengji *new = NULL;
for(num=1;num<6;num++)
{
new = (struct Chengji*)malloc(sizeof(struct Chengji));
printf("请输入%d班第%d个学生的语文成绩;\n",i,num);
scanf("%d",&(new->yuwen));
printf("请输入%d班第%d个学生的数学成绩;\n",i,num);
scanf("%d",&(new->shuxue));
printf("请输入%d班第%d个学生的英语成绩;\n",i,num);
scanf("%d",&(new->yingyu));
sum = new->yuwen+new->shuxue+new->yingyu;
new->sum =sum;
new->geshu =num;
new->ban =i;
head = insertStuMesage(head,new);
}
return head;
}
创建班级
struct Banji* creatBanji(struct Banji *head)//创建班级
{
struct Banji *new = NULL;
struct Chengji *Head = NULL;
int i;
for(i=1;i<6;i++)
{
new = (struct Banji*)malloc(sizeof(struct Banji));
Head = creatChengji(Head,i);
new->head = Head;
head = insertClaMesage(head,new);
}
return head;
}
求总分最大
int getMax(struct Banji *head)
{
struct Banji *p1 = head;
struct Chengji *p2=(struct Chengji *)malloc(sizeof(struct Chengji));
p2 = p1->head;
int i=0;
int j=0;
int max = 0;
int ban = 0;
int geshu = 0;
while( i < 5 )
{
while( j < 25 )
{
if(max < p2->sum)
{
max = p2->sum;
ban = p2->ban;
geshu = p2->geshu;
}
p2 = p2->next;
j++;
}
p1 = p1->next;
i++;
}
printf("最高总分为:%d班的第%d个同学,总分为:%d\n",ban,geshu,max);
printf("\n");
}
求总分最小
int getMin(struct Banji *head)
{
struct Banji *p1 = head;
struct Chengji *p2=(struct Chengji *)malloc(sizeof(struct Chengji));
int i=0;
int j=0;
int ban = 0;
int geshu = 0;
int min = 150;
p2 = p1->head;
while(i < 5)
{
while(j < 25)
{
if(min > p2->sum)
{
min = p2->sum;
ban = p2->ban;
geshu = p2->geshu;
}
p2 = p2->next;
j++;
}
p1 = p1->next;
i++;
}
printf("最低总分为:%d班的第%d个同学,总分为:%d\n",ban,geshu,min);
printf("\n");
}
求总分平均分
float getAvge(struct Banji *head)//总分平均分
{
struct Banji *p1 = head;
struct Chengji *p2=(struct Chengji *)malloc(sizeof(struct Chengji));
int i=0;
int j=0;
float avge;
float sum=0;
p2 = p1->head;
while(j < 25)
{
sum = sum+p2->sum;
p2 = p2->next;
j++;
}
avge = sum/25;
printf("年级平均分为:%.lf\n",avge);
printf("\n");
}
主函数
int main()
{
struct Banji *head;
head = creatBanji(head);
getMax(head);
getMin(head);
getAvge(head);
system("pause");
return 0;
}