资源描述:
《数据结构实验报告3.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、云南大学数据结构实验报告第三次实验学号:姓名:一、实验目的1、复习结构体、指针;2、掌握链表的创建、遍历等操作;3、了解函数指针。二、实验内容1、(必做题)每个学生的成绩信息包括:学号、语文、数学、英语、总分、加权平均分;采用链表存储若干学生的成绩信息;输入学生的学号、语文、数学、英语成绩;计算学生的总分和加权平均分(语文占30%,数学占50%,英语占20%);输出学生的成绩信息。三、算法描述(采用自然语言描述)首先创建链表存储n个学生的成绩信息,再通过键盘输入学生的信息,创建指针p所指结点存储学生的成绩信息,从键盘读
2、入学生人数,求出学生的总分和加权平均分,输出结果。四、详细设计(画出程序流程图)开始输入学生人数输出学生信息结束输入各学生学号、语文、数学、英语成绩五、程序代码(给出必要注释)#include#includetypedefstructscore{intnumber;intchinese;intmath;intenglish;inttotal;floataverage;structscore*next;}student;//创建链表存储n个学生的信息,通过键盘输入信息student*
3、input_score(intn){inti;student*stu,*p;for(i=0,stu=NULL;inumber);printf("语文分数(0——100):");scanf("%d",&p->chinese);while(p->chinese<0
4、
5、p->chinese>100){printf("请重新
6、输入第%d个学生的语文分数(0——100):",i+1);scanf("%d",&p->chinese);}printf("数学分数(0——100):");scanf("%d",&p->math);while(p->math<0
7、
8、p->math>100){printf("请重新输入第%d个学生的数学分数(0——100):",i+1);scanf("%d",&p->math);}printf("英语分数(0——100):");scanf("%d",&p->english);while(p->english<0
9、
10、
11、p->english>100){printf("请重新输入第%d个学生的英语分数(0——100):",i+1);scanf("%d",&p->english);}p->next=stu;stu=p;}returnstu;}voidvisit(student*stu,void(*fun)()){student*p;for(p=stu;p!=NULL;p=p->next)(*fun)(p);}voidOutput_Score(student*p)//指针p所指结点存储学生的信息,输出信息{printf("学号:%d
12、n",p->number);printf("语文:%d",p->chinese);printf("数学:%d",p->math);printf("英语:%d",p->english);printf("总分:%d",p->total=p->chinese+p->math+p->english);printf("加权平均分:%f",p->average=p->chinese*0.3+p->math*0.5+p->english*0.2);}intmain(){intn;student*stu;print
13、f("请输入学生人数:");scanf("%d",&n);stu=input_score(n);printf("各个学生的信息如下:");visit(stu,Output_Score);}六、测试和结果(给出测试用例以及测试结果)七、用户手册(告诉用户如何使用程序)打开并运行程序,根据提示输入学生人数和学生信息;