编写一段完整的程序代码,将学生的信息构造成结构体(包括学号,姓名,两门课程成绩和总分)统计某班五名学生课程A和课程B的成绩,计算出每个学生总分后依次将学生学号,姓名和总分输出,利用动态链表实现上述功能
#include <stdio.h>
#include <stdlib.h>
struct Student{
int id;
char name[20];
int scoremath;
int scoreeng;
struct Student* next;
};
int main()
{
struct Student *head = 0, *t,*p;
int i;
head = (struct Student *)malloc(sizeof(Student));
head->next = 0;
p = head;
//录入数据
for (i=0;i<5;i++)
{
if(i==0)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&head->id);
printf("请输入第%d个学生的名字:",i+1);
scanf("%s",head->name);
printf("请输入第%d个学生的数学成绩和英语成绩:",i+1);
scanf("%d %d",&head->scoremath,&head->scoreeng);
}else
{
t = (struct Student *)malloc(sizeof(Student));
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&t->id);
printf("请输入第%d个学生的名字:",i+1);
scanf("%s",t->name);
printf("请输入第%d个学生的数学成绩和英语成绩:",i+1);
scanf("%d %d",&t->scoremath,&t->scoreeng);
t->next = 0;
p->next = t;
p = t;
}
}
//计算总成绩并输出
p = head;
while(p)
{
printf("%d %s %d %d %d\n",p->id,p->name,p->scoremath,p->scoreeng,p->scoremath + p->scoreeng);
p = p->next;
}
//释放空间
p = head;
while(head)
{
p = head->next;
free(head);
head = p;
}
return 0;
}