您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构-实验1-成绩分析
《算法设计与分析》实验报告-1-1、实验目的(1)复习C(或C++)语言的基本描述方法;(2)掌握结构体及数组的用法;(3)提高运用C(C++)语言解决问题的能力;(4)通过实验程序,分析它们的时间复杂度。2、实验内容一个班级有10个学生,每个学生有学号、姓名以及数学、物理、英语、语文和体育5门课成绩信息,分别编写3个括函数实现下列要求:(1)求数学的平均成绩。(2)对于有两门或两门以上课程不及格的学生,输出他们的学号、姓名、各门课成绩及平均成绩。(3)输出成绩优良的学生(平均成绩大于85分或全部课程80分以上)的学号、姓名、各门课成绩及平均成绩。3、实验要求(1)利用C(C++)语言完成程序设计。(2)上机调试通过实验程序。(3)输入10个学生的学号、姓名和数学、物理、英语、语文、体育5门课的成绩,检查程序运行的正确性。(4)总结整个程序的组成和设计思想。(5)撰写实验报告(把输入实验数据及运行结果用抓图的形式粘贴到实验报告上)。4、实验步骤与源程序⑴实验步骤我先从具体的问题中抽象出适当的数学模型,然后设计出相应的算法,如求数学平均成绩的算法,还有输出两门以上课程不及格的学生,输出他们的基本信息,和输出成绩优良的学生的基本成绩的算法,接下来就是编写程序,然后不断调试,直到没有错误⑵源代码#includestdio.h#includestring.h#definem5typedefstructst{intid;charname[16];intcls[5];floatave;structst*next;}students;students*head;《算法设计与分析》实验报告-2-intn;voidaverage(){inti,j;floatsum,aver;students*p;printf(\n\t数学平均成绩\n);for(i=0;i1;i++){j=0;sum=0;p=head;while(p-next){sum=sum+p-cls[i];p=p-next;j++;}aver=sum/j;printf(\n\t数学平均成绩:%5.2f\n,aver);}}voidnopass(){inti,t;students*p;p=head;printf(\n\t有两门或两门以上课程不及格的学生\n);printf(\n\t学号数学物理英语语文体育平均成绩\n);while(p-next){i=0;t=0;while(im){if(p-cls[i]60)《算法设计与分析》实验报告-3-{t++;}i++;if(t=2){printf(\t%7d,p-id);for(i=0;im;i++)printf(%6d,p-cls[i]);printf(%8.2f\n,p-ave);i=m;}}p=p-next;}}voidgood(){students*p;p=head;inti,j,t=0;printf(\n\t优秀(平均成绩大于85分或全部课程80分以上)学生\n);printf(\n\t学号数学物理英语语文体育平均成绩\n);while(p-next){if(p-ave85.0){printf(\t%7d,p-id);for(i=0;im;i++)printf(%6d,p-cls[i]);printf(%8.2f\n,p-ave);t++;}else{i=0;《算法设计与分析》实验报告-4-j=0;while(im){if(p-cls[i]80)j++;i++;}if(j==5){printf(\t%7d,p-id);for(i=0;im;i++)printf(%6d,p-cls[i]);printf(%8.2f\n,p-ave);t++;}}p=p-next;}if(t=0)printf(\t\t\t无成绩优秀学生\n);}voidmain(){students*p,*q;inti,j;floatsum;printf(\n\t欢迎进入学生成绩管理系统\n);head=newstudents;q=head;for(i=0;i3;i++){printf(\n\t请输入第%d位学生的学号,姓名(以回车分隔):,i+1);p=q;scanf(%d\n,&p-id);scanf(%s,&p-name);j=0;《算法设计与分析》实验报告-5-printf(\t请输入第%d位学生的数学成绩:,i+1);scanf(%d,&p-cls[j]);j++;printf(\t请输入第%d位学生的物理成绩:,i+1);scanf(%d,&p-cls[j]);j++;printf(\t请输入第%d位学生的英语成绩:,i+1);scanf(%d,&p-cls[j]);j++;printf(\t请输入第%d位学生的语文成绩:,i+1);scanf(%d,&p-cls[j]);j++;printf(\t请输入第%d位学生的体育成绩:,i+1);scanf(%d,&p-cls[j]);q=newstudents;q-next=NULL;p-next=q;}p=head;while(p-next){sum=0;for(j=0;jm;j++)sum=sum+p-cls[j];p-ave=sum/m;p=p-next;}average();nopass();good();}5、测试数据与实验结果(可以抓图粘贴)调试结果如图所示:《算法设计与分析》实验报告-6-6、结果分析与实验体会本次实验是老师给了范例程序,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉很有意思。比如我在输入的时候想要规定精度,像scanf(%7.2f,&a)这样做是不合法的,而且,在具体操作中我对上学期所学的C语言的理论知识得到巩固,达到验证的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现调试程序的重要作用,特别是对函数的调用有了深刻的理解。通过实际操作,学会C语言程序编程的基本步骤、基本算法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力,提高实际操作水平。
本文标题:数据结构-实验1-成绩分析
链接地址:https://www.777doc.com/doc-5309967 .html