早教吧作业答案频道 -->其他-->
用链表完成学生成绩管理总体设计:学生成绩由学生姓名、学号、数学、英语和语文三门课程组成,采用链表形式实现对这三门成绩;要求:(1)采用链表形式实现对学生成绩的添加,删
题目详情
用链表完成学生成绩管理
总体设计:学生成绩由学生姓名、学号、数学、英语和语文三门课程组成,采用链表形式实现对这三门成绩;
要求: (1)采用链表形式实现对学生成绩的添加,删除,修改
(2)统计当前链表中有多少个学生;
(3)统计每门成绩的最高分,最低分和平均分;
总体设计:学生成绩由学生姓名、学号、数学、英语和语文三门课程组成,采用链表形式实现对这三门成绩;
要求: (1)采用链表形式实现对学生成绩的添加,删除,修改
(2)统计当前链表中有多少个学生;
(3)统计每门成绩的最高分,最低分和平均分;
▼优质解答
答案和解析
#include"stdio.h"
#include"stdlib.h"
int num1=0;
struct student
{
char name[10];
int num;
float math,eng,chinese;
struct student *next;
};
struct student *creat()//创建学生链表
{
struct student *head,*p1,*p2;
head=p1=p2=(struct student *)malloc(sizeof(struct student));
scanf("%s%d%f%f%f",p1->name,&p1->num,&p1->math,&p1->eng,&p1->chinese);
while(p1->num!=0)
{
p1=(struct student *)malloc(sizeof(struct student));
scanf("%s%d%f%f%f",p1->name,&p1->num,&p1->math,&p1->eng,&p1->chinese);
p2->next=p1;
p2=p1;
num1++;
}
printf("学生的数目为:%d\n",num1);
return head;
}
struct student *cr(struct student *head1)//插入学生节点
{
struct student *p1,*p2,*p0;
p1=p2=head1;
p0=(struct student*)malloc(sizeof(struct student));
scanf("%s%d%f%f%f",p1->name,&p1->num,&p1->math,&p1->eng,&p1->chinese);
while(p1->numnum&&p1->num!=0)
{
p2=p1;p1=p1->next;
}
if(p1->num==0)
printf("***");
else
if(p1==head1)
{ p0->next=p1;head1=p0;num1++;}
else
{
p2->next=p0;p0->next=p1;num1++;
}
printf("学生的数目为:%d\n",num1);
return head1;
}
struct student *sc(struct student *head2)//删除学生节点
{
struct student *p1,*p2,*p0,*t;
int n;
scanf("%d",&n);
p1=p2=head2;
while(p1->num!=n&&p1->num!=0)
{
p2=p1;p1=p1->next;
}
if(p1->num!=n)
printf("***");
else
if(head2->num==n)
{ t=head2->next;
head2->next=head2;
free(head2);
head2=t;num1--;
}
else
{p0=p2->next;
p2->next=p1->next;
free(p0);num1--;
}
printf("学生的数目为:%d\n",num1);
return head2;
}
void mp(struct student *head3)//求各门分数最大值,最小值,平均值
{
struct student *p1;
float max1,mix1,max2,mix2,max3,mix3,sum1=0,sum2=0,sum3=0;
max1=mix1=head3->math;
max2=mix2=head3->eng;
max3=mix3=head3->chinese;
p1=head3;
while(p1->num!=0)
{
if(p1->math>max1)
max1=p1->math;
if(p1->math mix1=p1->math;
sum1+=p1->math;
if(p1->eng>max2)
max2=p1->eng;
if(p1->eng mix2=p1->eng;
sum2+=p1->eng;
if(p1->chinese>max3)
max3=p1->chinese;
if(p1->chinese mix3=p1->chinese;
sum3+=p1->chinese;
p1=p1->next;
}
printf("数学最高分数,最低分数,平均分数:%f %f %f\n",max1,mix1,sum1/num1);
printf("英语最高分数,最低分数,平均分数:%f %f %f\n",max1,mix1,sum2/num1);
printf("语文最高分数,最低分数,平均分数:%f %f %f\n",max1,mix1,sum3/num1);
}
void print(struct student *m)
{
while(m->num!=0)
{printf("%s---%d--%f--%f--%f\n",m->name,m->num,m->math,m->eng,m->chinese);
m=m->next;
}
}
void main()
{
struct student *g,*m,*k;
printf("建立学生链表:\n");
g=creat();
print(g);
printf("插入学生节点:\n");
m=cr(g);
print(m);
printf("删除学生节点:\n");
k=sc(g);
print(k);
mp(k);//求各门分数最大值,最小值,平均值
}
#include"stdlib.h"
int num1=0;
struct student
{
char name[10];
int num;
float math,eng,chinese;
struct student *next;
};
struct student *creat()//创建学生链表
{
struct student *head,*p1,*p2;
head=p1=p2=(struct student *)malloc(sizeof(struct student));
scanf("%s%d%f%f%f",p1->name,&p1->num,&p1->math,&p1->eng,&p1->chinese);
while(p1->num!=0)
{
p1=(struct student *)malloc(sizeof(struct student));
scanf("%s%d%f%f%f",p1->name,&p1->num,&p1->math,&p1->eng,&p1->chinese);
p2->next=p1;
p2=p1;
num1++;
}
printf("学生的数目为:%d\n",num1);
return head;
}
struct student *cr(struct student *head1)//插入学生节点
{
struct student *p1,*p2,*p0;
p1=p2=head1;
p0=(struct student*)malloc(sizeof(struct student));
scanf("%s%d%f%f%f",p1->name,&p1->num,&p1->math,&p1->eng,&p1->chinese);
while(p1->num
{
p2=p1;p1=p1->next;
}
if(p1->num==0)
printf("***");
else
if(p1==head1)
{ p0->next=p1;head1=p0;num1++;}
else
{
p2->next=p0;p0->next=p1;num1++;
}
printf("学生的数目为:%d\n",num1);
return head1;
}
struct student *sc(struct student *head2)//删除学生节点
{
struct student *p1,*p2,*p0,*t;
int n;
scanf("%d",&n);
p1=p2=head2;
while(p1->num!=n&&p1->num!=0)
{
p2=p1;p1=p1->next;
}
if(p1->num!=n)
printf("***");
else
if(head2->num==n)
{ t=head2->next;
head2->next=head2;
free(head2);
head2=t;num1--;
}
else
{p0=p2->next;
p2->next=p1->next;
free(p0);num1--;
}
printf("学生的数目为:%d\n",num1);
return head2;
}
void mp(struct student *head3)//求各门分数最大值,最小值,平均值
{
struct student *p1;
float max1,mix1,max2,mix2,max3,mix3,sum1=0,sum2=0,sum3=0;
max1=mix1=head3->math;
max2=mix2=head3->eng;
max3=mix3=head3->chinese;
p1=head3;
while(p1->num!=0)
{
if(p1->math>max1)
max1=p1->math;
if(p1->math
sum1+=p1->math;
if(p1->eng>max2)
max2=p1->eng;
if(p1->eng
sum2+=p1->eng;
if(p1->chinese>max3)
max3=p1->chinese;
if(p1->chinese
sum3+=p1->chinese;
p1=p1->next;
}
printf("数学最高分数,最低分数,平均分数:%f %f %f\n",max1,mix1,sum1/num1);
printf("英语最高分数,最低分数,平均分数:%f %f %f\n",max1,mix1,sum2/num1);
printf("语文最高分数,最低分数,平均分数:%f %f %f\n",max1,mix1,sum3/num1);
}
void print(struct student *m)
{
while(m->num!=0)
{printf("%s---%d--%f--%f--%f\n",m->name,m->num,m->math,m->eng,m->chinese);
m=m->next;
}
}
void main()
{
struct student *g,*m,*k;
printf("建立学生链表:\n");
g=creat();
print(g);
printf("插入学生节点:\n");
m=cr(g);
print(m);
printf("删除学生节点:\n");
k=sc(g);
print(k);
mp(k);//求各门分数最大值,最小值,平均值
}
看了用链表完成学生成绩管理总体设计...的网友还看了以下:
(8分)为探究高温对酶活性的影响,某同学设计了如下实验:(1)实验过程与结果:①取两个洁净试管编号 2020-05-12 …
设计不同装置制取二氧化碳气体(填编号)设计3中发案.1.注射器2破试管3.锥形瓶4.平底烧瓶5.烧 2020-05-14 …
双色球红球和篮球号码数学计算方法,怎么计算哦?请多指教哈~例如:334期开奖号码12345---6 2020-06-04 …
某同学完成了以下关于酶特性的实验操作:取两支试管并编号1、2,各注入2mL3%H2O2溶液;向1号 2020-06-18 …
信息资源管理方式主要有三种:人工管理、文件管理和数据库管理.下列选项中,属于人工管理的是()A.用 2020-07-01 …
一道奇葩数学题有四个大小不一的管子通向水池.开1、2、3号管12分钟灌满,开2、3、4号管15分钟 2020-07-04 …
刘虹同学在学习半导体二极管具有单向导电性后,家里LED使用的是发光二极管,她想利用其中一个发光二极管 2020-11-28 …
生活污水排水管设计秒流量按照公式计算:qu=0.12α根号Np+qmax式中qu--计算管道段污水设 2020-12-03 …
学号分别为1、2、3、4、5的五个学生在计算机机房操作编号分别为1、2、3、4、5的计算机.如果第i 2020-12-10 …
学号分别为1、2、3、4、5的五个学生在计算机机房操作编号分别为1、2、3、4、5的计算机.如果第i 2020-12-10 …