编写一段完整的程序代码,将学生的信息构造成结构体(包括学号,姓名,两门课程成绩和总分)统计某班五名学生课程A和课程B的成绩,计算出每个学生总分后依次将学生学号,姓名和总分输出,利用动态链表实现上述功能
1条回答 默认 最新
- qfl_sdu 2021-07-11 10:39关注
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用