11284023+实验3+统计学生成绩
- 格式:doc
- 大小:113.50 KB
- 文档页数:4
成绩统计是对学生的成绩进行数据分析和统计的过程。
在python中,我们可以使用各种数据结构和函数来实现成绩统计。
下面是一些相关的参考内容:1.学生成绩数据的存储学生成绩数据可以使用列表或字典来存储。
例如,创建一个包含学生姓名和成绩的字典列表:students = [{'name': '张三', 'score': 85},{'name': '李四', 'score': 92},{'name': '王五', 'score': 78},{'name': '赵六', 'score': 88}]2.计算平均成绩使用for循环遍历学生列表,累加所有成绩并计算平均值:total_score =0for student in students:total_score += student['score']average_score = total_score / len(students)print("平均成绩为:", average_score)3.查找最高分和最低分使用for循环遍历学生列表,同时使用max()和min()函数查找最高分和最低分:max_score = max(student['score'] for student in students) min_score = min(student['score'] for student in students)print("最高分为:", max_score)print("最低分为:", min_score)4.成绩分类统计可以使用if条件语句将成绩分为优秀、良好、及格和不及格四个等级,并统计各个等级的人数:excellent_count =0# 优秀人数good_count =0# 良好人数pass_count =0# 及格人数fail_count =0# 不及格人数for student in students:if student['score'] >=90:excellent_count +=1elif student['score'] >=80:good_count +=1elif student['score'] >=60:pass_count +=1else:fail_count +=1print("优秀人数:", excellent_count)print("良好人数:", good_count)print("及格人数:", pass_count)print("不及格人数:", fail_count)5.成绩排序可以使用sorted()函数和lambda表达式根据成绩对学生列表进行排序:sorted_students = sorted(students, key=lambda student: stud ent['score'], reverse=True)for student in sorted_students:print(student['name'], "的成绩为:", student['score'])以上是关于成绩统计的一些参考内容,你可以根据自己的实际需求进行相应的修改和扩展。
运动会分数统计实验报告运动会分数统计实验报告摘要:本实验旨在通过对运动会分数统计的实际操作,探究运动会分数统计的方法和技巧,以及分析其对参赛队伍和个人的影响。
通过实验数据的收集和分析,得出了一些有关运动会分数统计的结论,并提出了一些建议,以提高运动会分数统计的准确性和公正性。
引言:运动会是学校体育活动的重要组成部分,也是培养学生体质和团队合作精神的重要途径。
而分数统计是运动会的重要环节,直接关系到参赛队伍和个人的成绩和名次。
因此,如何准确地统计运动会的分数,成为了一个备受关注的问题。
本实验旨在通过实际操作,探究运动会分数统计的方法和技巧,以及分析其对参赛队伍和个人的影响。
实验方法:本实验选择了一所中学的运动会作为研究对象,通过观察和记录实际比赛的数据,进行分数统计的实验操作。
首先,我们收集了各个项目的比赛成绩,并记录在表格中。
然后,根据比赛项目的规则和要求,对每个参赛队伍和个人的得分进行统计。
最后,对统计结果进行分析和总结。
实验结果:通过实验操作和数据分析,我们得出了以下结论:1. 分数统计的准确性对参赛队伍和个人的成绩和名次具有重要影响。
在实验中,我们发现一些不准确的分数统计可能导致参赛队伍和个人的成绩出现偏差,从而影响到他们的名次和奖励。
2. 分数统计的公正性是保证运动会公平竞争的关键。
在实验中,我们发现一些不公正的分数统计可能导致某些队伍或个人受到不公平的待遇,从而影响到他们的参与积极性和比赛结果。
3. 分数统计需要专业的技术和方法支持。
在实验中,我们发现一些分数统计工作人员的技术水平和操作方法对结果的准确性和公正性具有重要影响。
因此,提高分数统计工作人员的专业素养和技术能力,是保证运动会分数统计准确性和公正性的关键。
讨论与建议:基于以上实验结果,我们提出了以下建议,以提高运动会分数统计的准确性和公正性:1. 加强分数统计工作人员的培训和技术支持。
通过提供专业的培训和技术指导,提高分数统计工作人员的技术水平和操作方法,以确保他们能够准确地统计比赛成绩。
用Excel函数快速统计学生期中考试成绩期中考试结束,各学科考试成绩迅速汇总到班主任这里。
这时候,班主任最忙的,就是要迅速统计各学科成绩的各项指标,比如平均分、最高分、优秀率、及格率以及各学科分数的频率统计等等。
虽然现在普遍都在使用Excel进行这项工作,不过,要想使这项工作能够高效准确地完成,那还得请Excel函数来帮忙才行。
汇总到班主任这里的成绩表如图1所示,各科成绩分布在C2:C95单元格区域。
我们先在K2:Q15单元格区域建立如图2所示表格用以存放各项统计结果。
先点击M3单元格,输入如下公式:=AVERAGE(C2:C95),回车后即可得到语文平均分。
点击M4单元格,输入公式:=MAX(C$2:C$95),回车即可得到语文成绩中的最高分。
优秀率是计算分数高于或等于85分的学生的比率。
点击M5单元格,输入公式:=COUNTIF(C$2:C$95,">=85")/COUNT(C$2:C$95),回车所得即为语文学科的优秀率。
点击M6单元格,输入公式:=COUNTIF(C$2:C$95,">=60")/COUNT(C$2:C$95),回车所得即为及格率。
选中M3:M6单元格,拖动填充句柄向右填充公式至Q6单元格,松开鼠标,各学科的统计数据就出来了。
再选中M5:Q6单元格区域,点击菜单命令“格式→单元格”,打开“单元格格式”对话框。
点击“数字”选项卡,在左侧“分类”列表中选择“百分比”,如图3所示,确定后可将M5:Q6单元格区域的数据转变成百分比形式。
至于各科分数段人数的统计,那得先选中M8:M15单元格,在编辑栏中输入公式:=FREQUENCY(C$2:C$95,$K$8:$K$15)。
然后按下“Ctrl+Shift+Enter”快捷键,可以看到在公式的最外层加上了一对大括号。
现在,我们就已经得到了语文学科各分数段人数了。
在K 列中的那些数字,就是我们统计各分数段时的分数分界点。
Excel 学生成绩、各种报表统计常用公式1、分数段人数统计90—100分:=COUNTIF (C4:C18,"〉=90”)80—89分:=COUNTIF(C4:C18,"〉=80")—COUNTIF (C4:C18,”〉=90") 70—79分:=COUNTIF(C4:C18,”>=70”)-COUNTIF(C4:C18,”>=80") 60-69分:=COUNTIF(C4:C18,"〉=60")-COUNTIF (C4:C18,"〉=70”) 50—59分:=COUNTIF(C4:C18,”>=50")-COUNTIF (C4:C18,”>=60") 41-49分:=COUNTIF(C4:C18,"〉40”)-COUNTIF(C4:C18,”>=50") 40分及以下:=COUNTIF (C4:C18,"〈=40”)2、最高分:=MAX (C4:C18,G4:G18,K4:K18,O4:O13)最低分:=MIN (C4:C18,G4:G18,K4:K18,O4:O13)总分:=SUM (C4:C18,G4:G18,K4:K18,O4:O13)平均分:=AVERAGE (B4:D4)3、与考人数、记分人数:=COUNT (C4:C18,G4:G18,K4:K18,O4:O18)优生人数:=COUNTIF (C4:C18,">=80”)差生人数:=COUNTIF(C4:C18,”〈=40")双科合格人数:=SUMPRODUCT ((C4:C18〉=60)*(D4:D18>=60)) 双科优秀人数:=SUMPRODUCT ((C4:C18〉=80)*(D4:D18>=80))4、条件求和: =SUMIF (B2:B56,"男",K2:K56) ——假设B 列存放学生的性别,K 列存放学生的分数,则此函数返回的结果表示求该班男生的成绩之和;5、学生分数转化为等级评定:=IF (A4>=80,"优”,IF(A4〉=70,"良”,IF (A4〉=60,”合格",”待合格”))) =CHOOSE(IF (A1>=80,1,IF (A1〉=70,2,IF(A1〉=60,3,4))),”优","良”,”合格",”待合格”)=IF (C4>=80,”优”,IF(C4>=70,"良",IF (C4〉=60,”合格",IF (ISNUMBE R (C4),"待合”=LOOKUP(A1,{01、2、3、4要与优、良、合格、待合格相对应=LOOKUP(A1,{0,60,70,80,90},{"不及格","及格","中",”良",”优"})=IF(E4<60,"D",IF(E4〈70,”C",IF(E4<80,"B”,"A")))=if(A1<60,”E",if(A1〈70,”D”,if(A1〈80,"C”,if(A1〈90,"B”,”A"))))=IF(A1〈60,"不及格”,IF(A1〈70,"及格",IF(A1〈80,”中”,IF(A1< 90,”良”,"优"))))=IF(A1>=90,"优”,IF(A1〈90,”良”,"if(a1<70,”中”,if(a1=<60,"及格”,”很差”)))=IF(AND(C5〉=90,C5<=100),"A”,IF(AND(C5〉=80,C5<90),”B”,IF(AND(C5>=70,C5〈80),”C",IF(C5〈70,”D”,E)))).多科目等级评定:=CONCATENATE(IF(C2>=80,”A”,IF(C2>=60,”B”,"C")),IF(D2>= 80,"A",IF(D2>=60,"B”,”C”)),IF(E2>=80,"A”,IF(E2〉=60,”B”,”C")))=IF(C2>=80,"A",IF(C2>=60,”B”,"C”))&IF(D2>=80,”A”,IF(D 2〉=60,"B",”C"))&IF(E2>=80,”A”,IF(E2〉=60,”B”,"C"))6、18位身份证号码转换成出生日期的函数公式:如果E2中是身份证,在F2中求出出生日期,=DATE(MIDB(E2,7,4),MIDB(E2,11,2),MIDB(E2,13,2))格式为yyyy—m-d,可更改为yyyy-mm-dd的格式。
Excel项目二制作学生成绩统计表(电子课件)教学目标一、理论知识点:1.熟练掌握多工作表操作;不同工作表之间数据的复制、粘贴、单元格引用;工作表的命名等;2.熟练掌握单元格的相对引用与绝对引用;3.熟练掌握一些常用函数的用法(如COUNT、SUM、AVERAGE、MAX、MIN、COUNTIF、RANK等);二、实际操作能力能熟练使用Excel的公式和函数解决工作中遇到的实际问题。
教学重点:1.多工作表的操作;2.单元格的相对引用与绝对引用3.常用函数的使用;教学难点:1.单元格的相对引用与绝对引用2.RANK函数和COUNTIF函数的使用课时安排(共计90分钟,详见要求说明)教学过程讲授与演示内容一、使用SUM函数计算学生的总分(以下面的实训项目方式讲授)(10分钟)理论上:介绍Excel 2003中SUM函数的使用。
实践上:使用SUM函数计算学生成绩的总分。
方法是:单击I3单元格,输入“=SUM(C3:H3)”后回车,计算出学号为01学生的总分。
选中C3单元格,将鼠标移至右下角的填充柄,向下拖动至12行。
计算出所有学生的总分。
二、使用RANK函数统计学生的名次(以下面的实训项目方式讲授)(25分钟)理论上:介绍Excel 2003中RANK函数的使用以及单元格的相对引用和绝对引用。
实践上:使用RANK函数统计学生的名次。
方法是:单击J3单元格,输入“=RANK(I3,$I$3:$I$12)”后回车,计算出学号为01学生的名次。
单击I3单元格,将鼠标移至右下角的填充柄,向下拖动至12行,计算出所有学生的名次。
得到下表:三、工作表改名(以下面的实训项目方式讲授)(10分钟)理论上:介绍Excel 2003中多工作表的操作实践上:将工作表sheet1和sheet2改名为“学生成绩表”和“学生成绩统计表”。
方法是:1、双击工作表标签“Sheet1”,输入新工作表名为“学生成绩表”。
2、双击工作表标签“Sheet2”,输入新工作表名为“学生成绩统计表”。
结构体应⽤-统计学⽣成绩设计⼀个程序,统计⼀个班(最多有35⼈)的学⽣成绩,要求能实现如四个功能:(1)由键盘输⼊每个学⽣的学号和四门课程的成绩。
(2)计算每个学⽣的平均分和总分。
(3)按总分从⾼到低排出名次,并按名次输出每个学⽣的情况,包括:学号、各科成绩、平均分和总分。
(4)根据⽤户要求输出某门课程(由键盘输⼊课程号)成绩在90分以上(含90分)且总分在前五名的学⽣情况,包括:学号、各科成绩、平均分和总分。
具体要求如下:(1)每个功能为⼀个独⽴的函数。
(2)所有的输⼊之前都要有提⽰。
⽅法说明:⾸先,在主函数中定义以下⼏个数组:num[35] 整型⼀维数组,依次(按输⼊的顺序)存放学⽣的学号。
a[35][6] 实型⼆维数组,其中的每⼀⾏依次(按输⼊的顺序)存放⼀个学⽣的四门课程(课程号分别为1,2,3,4)的成绩、平均分与总分。
order[35] 整型⼀维数组,按名次存放学⽣情况的输⼊序号,即order[k]存放第k+1名(C语⾔中数组下标是从0开始)学⽣情况的输⼊序号。
然后依次调⽤四个功能函数。
#include<stdio.h>#include<conio.h>#define M 35 /*调试时可将此数值该得⼩⼀些*/#define N 6int number=0;void input(int num[M],float a[M][N]){int k=0,n;float a0,a1,a2,a3;printf("请输⼊学⽣信息:\n");printf("学号\t课程[1]\t课程[2]\t课程[3]\t课程[4]\n");scanf("%d%f%f%f%f",&n,&a0,&a1,&a2,&a3);while(n>=0 && k<35){number++;num[k]=n;a[k][0]=a0;a[k][1]=a1;a[k][2]=a2;a[k][3]=a3;k++;scanf("%d%f%f%f%f",&n,&a0,&a1,&a2,&a3);}}void count(float a[M][N]){int k;for(k=0;k<N;k++){a[k][5]=a[k][0]+a[k][1]+a[k][2]+a[k][3];a[k][4]=a[k][5]/4;}}void sort(float a[M][N],int order[M]){int i,j,k,n,temp;float d;for(i=0;i<M;i++)order[i]=i;for(i=0;i<M;i++){n=order[i];d=a[n][5];k=i;for(j=i+1;j<M;j++){n=order[j];if(a[n][5]>d){d=a[n][5];k=j;}}if(k!=i){temp=order[i];order[i]=order[k];order[k]=temp;}}printf("学⽣信息排序后结果为:\n");printf("名次\t学号\t课程[1]\t课程[2]\t课程[3]\t课程[4]\t平均分\t总分\n");for(i=0;i<number;i++){k=order[i];printf("第%d名\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",i+1,k+1,a[k][0],a[k][1],a[k][2],a[k][3],a[k][4],a[k][5]); }}void serch(int num[M],float a[M][N],int order[M]){int m=0,i,j,k,flag=0;while(m<1 || m>4){printf("请输⼊课程号(1或2或3或4):");scanf("%d",&m);}printf("学号\t课程[1]\t课程[2]\t课程[3]\t课程[4]\t平均分\t总分\n");for(i=0;i<5;i++){k=order[i];if(a[k][m-1]>=90){printf("%d\t",num[k]);flag=1;for(j=0;j<N;j++)printf("%.2f\t",a[k][j]);printf("\n");}}if(flag==0)printf("⽆学⽣信息!\n");}void main(){int num[M]={0};float a[M][N]={0};int order[M];char flag;input(num,a);count(a);sort(a,order);printf("是否需要查询?(y/n):");getchar();scanf("%c",&flag);while(flag=='Y'||flag=='y'){serch(num,a,order);printf("是否需要查询?(y/n):");getchar();scanf("%c",&flag);}getch();}。
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
《统计学》实验报告一姓名:王璐专业:财政学(税收方向)学号:2010128107日期:2012年10 月9 日地点:实验中心701实验项目一描述性统计、区间估计在EXCEL里的实现一、实验目的1、掌握利用EXCEL菜单进行数据的预处理;2、掌握利用EXCEL进行描述性统计;3、掌握利用EXCEL进行区间估计。
二、实验要求1、EXCEL环境与数据预处理的操作;2、描述性统计,包括统计图表的绘制;数据分组处理;集中趋势描述、离散程度描述、分布形状描述。
3、区间估计,包括总体均值、总体比例、总体方差的区间估计计算。
三、实验内容(一)分类数据的描述性统计实验数据:餐厅服务质量和价位评价.XLS顾客服务质量评价的频数表(按性别分)、条形图、饼图(二)数值性数据的描述性统计实验数据:城乡居民储蓄数据.XLS随着生活水平的逐渐提高,居民的储蓄存款也在日益增加,数据2.XLS是自1990年~2006年城乡居民人民币储蓄存款额,储蓄存款包括定期和活期(单位:元)。
利用EXCEL,对数据2.XLS作如下分析:1、城乡居民人民币活期存款的众数、中位数和均值是多少?2、城乡居民人民币定期存款的方差和标准差是多少?3、定期存款和活期存款相比,哪种数据的变动性更大?(三)总体参数的区间估计1、成绩分析。
实验数据:期末成绩.XLS1假设学生的各门期末考试成绩均服从正态分布,选定一门课程,并给出该门课程平均成绩的置信水平为95%的区间估计。
2、顾客满意度分析。
某超市为了了解顾客对其服务的满意度,随机抽取了其会员中的50个样品进行电话调查,如果有38个顾客对此超市的服务表示满意,试求对该超市服务满意的顾客比例的95%置信区间。
四、实验结果(一)分类数据的描述性统计A顾客服务质量评价频数表(按性别分)评价等级男女极好45 21很好98 52好49 35一般20 11差9 10B条形图C.饼状图2(二)数值性数据的描述性统计解答:1.众数:无中位数:11615.9 均值:18553.592.方差:887955495.60 标准差:29798.583.活期存款的离散系数=标准差/均值=0.963602定期存款的离散系数=标准差/均值=0.696094因为0.963602>0.696094 所以,活期存款的变动性更大(三)总体参数的区间估计解答:1.根据区间估计的计算公式:均值±半径由题可得,均值=71.89474,半径=1.312076,得出最终结果,置信区间为:(70.5827,73.2068)2.根据总体比例的区间估计公式:比例±半径由题可得,比例 p=38/50=0.76,半径=0.1184 ,得出最终结果,置信区间为:(0.6416,0.8784)五、实验心得我个人认为自己的动手能力比较差,所以在做上机实验前,心里略有担心。
学生考试成绩统计表 -。
学生考试成绩汇总表本文档旨在展示学生考试成绩的汇总情况。
通过统计和总结学生们在不同考试科目中的表现,以促进对学生成绩的全面了解和管理。
为了得到准确的成绩汇总结果,采取以下统计方法:2.统计科目:统计所有考试科目的成绩,包括语文、数学、英语等。
3.统计指标:统计各科目的平均分、最高分、最低分以及及格率。
4.统计时间:每次考试结束后,对所有学生的成绩进行及时统计。
以下是学生考试成绩的汇总表格:张三。
| 85.| 92.| 78.| 255.|李四。
| 92.| 87.| 90.| 269.|王五。
| 78.| 80.| 75.| 233.|根据以上成绩汇总表格,我们可以得出以下分析结果:语文平均分为XX分,数学平均分为XX分,英语平均分为XX分。
可以根据平均分来评估学生在各科目的整体表现。
语文最高分为XX分,数学最高分为XX分,英语最高分为XX分。
语文最低分为XX分,数学最低分为XX分,英语最低分为XX分。
可以通过最高分和最低分来评估学生在各科目的优劣程度。
语文及格率为XX%,数学及格率为XX%,英语及格率为XX%。
可以通过及格率来评估学生在各科目中的整体合格情况。
通过学生考试成绩的汇总分析,可以全面了解学生在各科目中的表现和水平。
此外,从平均分、最高分、最低分和及格率等指标可以进一步评估学生的研究成绩和进步情况。
以上汇总表格和分析结果将帮助学校和教师们更好地了解学生的研究情况,为他们提供针对性的教育和研究指导。
注意:本文档中的数据仅作为展示目的,不引用无法确认的内容。
实验三、统计学生成绩
一、 实验目的
1、 熟悉汇编语言各种跳转指令的功能和用法。
2、 学会用程序流程图来分析和设计分支程序。
3、 通过顺序和分支结构来熟悉汇编语言程序设计的主要方法。
4、 了解和掌握程序设计过程中算法的选择。
二、 实验内容
设有20个学生成绩分别56、78、67、40、87、99、63、51、74、100,90,80,68、
88、55、66、84、96、45、73分。编写程序实现统计低于60分、60-69分、70-79分、80-89
分、90-99分及100分的人数,并分别存放在s5、s6、s7、s8、s9、s10单元中。
三、 算法及截图:
DATA SEGMENT
BUF DB 56,78,67,40,87,99,63,51,74,100,90,80,68,88,55,66,84,96,45,73
S5 DB ?
S6 DB ?
S7 DB ?
S8 DB ?
S9 DB ?
S10 DB ?
COUNT EQU $-BUF
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,0
MOV AH,0
MOV BL,0
MOV BH,0
MOV CL,0
MOV CH,0
LEA SI,BUF;目标地址传送指令: 将一个近地址指针写入到指定的寄存器。将存储
器中BUF所指的地址传送给S1
LOPA: CMP BUF[SI],3CH
;
JNAE L1 ;BUF[S1]<=3CH
JAE L2 ;BUF[S1]>3CH
L1: INC AL
; 加1指令 INC
指令功能 目标操作数AL+1
INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数。INC
指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位。
MOV S5,AL
JMP LOPB
LOPB: INC SI
CMP SI,COUNT-7
JBE LOPA
JMP EXIT
L2: CMP BUF[SI],46H
JNAE L3
JAE L4
L3: INC AH
MOV S6,AH
JMP LOPB
L4: CMP BUF[SI],50H
JNAE L5
JAE L6
L5: INC BL
MOV S7,BL
JMP LOPB
L6: CMP BUF[SI],5AH
JNAE L7
JAE L8
L7: INC BH
MOV S8,BH
JMP LOPB
L8: CMP BUF[SI],64H
JNAE L9
JAE L10
L9: INC CL
MOV S9,CL
JMP LOPB
L10: INC CH
MOV S10,CH
JMP LOPB
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
四实验步骤
1、 设计编写代码.
2、 在EDIT或其它编辑方式下输入源程序,并以XXX.ASM名保存。
3、 用MASM 文件汇编源程序,C>MASM XXX; 如有错误,回到第一步,如没错误,到第
三步.
4、 用LINK连接程序,C>LINK XXX; 形成XXX.EXE文件。
5、 在DEBUG环境下运行调试程序:C> DEBUG XXX.EXE回车,使用U命令反汇编自己
编写的程序,查找到断点地址,用G命令使程序执行到完成初始化的功能;此时使用D
命令查看数据段的内容,是否有学生的分数并查看s5、s6、s7、s8、s9、s10字节变量
的地址及内容。然后查找程序功能结束的命令对应的断点地址,用G命令使程序运行到
断点;此时再使用D命令查看存储各分数段的学生人数是否正确。如正确,调试结束;
否则,从新单步调试查找错误。再从第一步修改源程序开始。
五、 实验总结
通过本次实验,我
熟悉了汇编语言各种跳转指令的功能和用法。学会用程序流程图来分
析和设计分支程序。通过顺序和分支结构来熟悉汇编语言程序设计的主要方法。了解和掌握
了程序设计过程中算法的选择。
六、 思考题
1、 请问存放学生分数的变量物理地址是什么?
0000H到0013H
0014,0015,0016,0017,0018,0019
s1对应的内存是0014,后面依次为0015,0016…0019:
2、 请问各分数段的变量地址是多少?
0014,0015,0016,0017,0018,0019
3、 如果想在屏幕上显示结果:
在debug 里输入指令 D 0014 0019 就会显示各组的count。