子程序设计2.6 显示学生名次表rank 编制一个程序,要求接受键盘输入的一个班的学生成绩,并存放于一个50 字的grade 数组中,其中 grade+i保存学号为 I+1 的学生成绩。然后根据grade 中的学生成绩,把学生成绩依次填入50 字的 rank 数组中,其中 rank+i 的内容是学号为i+1 的学生的名次。再按学号顺序把名次从终端上显示出来。本题要做的主要工作和例2.2 的内容是完全一样的,只是增加了由用户键入学生成绩及输出学生名次两个部分的内容,因此这三个部分可以用子程序结构来完成。子程序结构划分的层次图如图2.17 所示,可以看出, main 为主要模块,其下一层的三个模块为程序的三大部分。现将各模块说明如下:1.模块名: main 为总模块输入:从键盘输入一个班的学生成绩输出:显示一个班的学生成绩功能:根据输入的学生成绩,计算并显示学生名次。算法如下:一个学生名次等于成绩高于该学生的人数+1. 2.模块名: input 输入:以学号为序型键盘输入一个班的学生成绩。各个成绩之间用逗号隔开, 最后以回车符号结束。输出:把一个班的学生成绩存入grade 数组。功能:接受一个班的学生成绩。调用子模块 decibin 把键盘输入的一个十进制数转换为二进制数。调用子模块 crlf 完成回车,换行功能。3.模块名: rankp 输入:从 grade 数组取得一个班的学生成绩。输出:以学号为序计算出该班每个学生的名次存入rank 数组。功能:计算一个班的学生成绩。 算法为: 一个学生的名次等于成绩高于该生的学生人数加 1. 4,。模块名; output 输入:把 rank 数组取得一个班的学生名次。输出:把一个班的学生名次以学号为序在总端上显示出来。功能:先是一个班的学生名次。调用子模块 decibin 把键盘输入的一个十进制数转换为二进制数。调用子模块 crlf 完成回车,换行功能。5:模块名: decilin 输入:从键盘输入一个十进制数。输出:把该数转换成二进制数并存入BX寄存器中。功能:从键盘输入一个十进制数转换成二进制数并存入BX寄存器中。6.模块名: crlf 输出:向终端发出回车换行符。功能:完成一次回车换行操作。7.模块名: binidec 输入:从 BX寄存器取得一个二进制数。输出:在终端屏幕显示一个十进制数。功能:把 BX寄存器中的二进制数转换为十进制数,并在终端显示出来。调用子模块 DCE_DIV用来作除法运算并显示字符。8.模块名: dec_div 输入:从 BX寄存器中的二进制数除以相应的十的幂,并在屏幕...