子程序完成部分功能。在设计子程序的过程中,我依据结构化代码的流程进行划分,自然形成了读取输入、找出最小、打印输出的思路。这一思路是没有问题的,但存在子程序划分还不够细致的问题,比如,读取输入子程序代码过于冗长,这是因为我没有把输入格式检查、错误提示单独作为子过程进行独立编写。这是设计中的一大不足,这一缺陷也让我在调试子程序的时候颇费周折。这次教训一定要铭记。实验中比较大小的方式有多种,如何采用更加简洁有效的方式是值得思考的问题。我一开始也不免陷入到比较数字大小的常规方法中,但由于汇编输入具有特殊性,即输入的是ASCII码而非数字的大小,且存在将两个字符进行连接成为两位数的需求,而输出时又需要进行反过程。考虑到ASCII也是可以比较的,且十位数和个位数是可以分别比较的这一情况,我采用了巧妙的方式进行处理。这说明,在实际的编程中,需要根据具体情况调整一般方法,使得方法更加简洁可行且有效。
第22页
f微机原理软件实验报告
实验四子程序设计
一、实验目的
1进一步掌握子程序设计方法;2进一步掌握基本的DOS功能调用。
二、实验内容
1从键盘上输入某班学生的某科目成绩。输入按学生的学号由小到大的顺序输入。2统计检查每个学生的名次。3将统计结果在屏幕上显示。4为便于观察,输入学生数目不宜太多,以不超过一屏为宜。输出应便于阅读尽可能考虑美观。5输入要有检错手段。
三、预习思考
1如何确定一个学生在这门科目中的名次?答:有两种基本思路,一是抽取每个学生的成绩和其他所有学生的成绩进行比较,然后统计比其分数高的学生,得出该学生的名次;二是把学生成绩存入连续内存区域,即数组方式,取得每个学生的成绩偏移量,即成绩指针。然后比较指针所指的成绩的大小,根据比较结果移动指针完成排序。具体排序时可以采用诸多的方式,比如冒泡法,快速排序法等等,均是可行的。本实验采用第二种方式,用冒泡法予以具体实现。2输入结束后,采用什么方法进行比较以得到学生的名次最为简单?答:如上问所述,采用冒泡排序法可获得较好的时间和空间性能。冒泡法平均时间性能ON2。相比于直接比较,性能有所改善。但相对于快速排序、归并排序等优化的算法的时间复杂度ONlog2N还不
第23页
f微机原理软件实验报告够好。但后两者使用汇编实现代码的复杂度和编程要求要高。考虑到学生人数比较少,使用冒泡法是比较简洁的,时间性能是可以接受的。3准备好模块层r