永发信息网

汇编 显示学生名次表

答案:1  悬赏:30  手机版
解决时间 2021-04-15 22:35

1、 显示学生名次表

编制一个程序,要求接受从键盘输入的一个班的学生成绩,并存放50字的grade数组中,其中grade+i保存的是学号为i+1的学生的成绩。然后根据grade中的学生的成绩,把学生名次填入50字的rank数组中,其中rank+1的内容是学号为i+1学生的名次。再按学号顺序把名次中终端显示出来。

2、 说明:该程序的模块如下

(1) 主模块:总控模块

输入:从键盘输入一个班的学生成绩

输出:显示一个班的学生名次

功能:根据输入的学生成绩,计算并显示学生的名次。

(2) 模块:input

输入:以学号为顺序从键盘上输入一个班的学生成绩。各个成绩之间用逗号隔开,最后以回车符结束。

输出:把一个班的学生成绩存入grade数组。

功能:接收一个班的成绩。调用子模块decibin(可自己命名)把从键盘输入的一个十进制转换为二进制数。

(3) 模块:rankp

输入:从grade数组中取得一个班的成绩

输出:以学号为序计算出该班每个学生的名次存入rank数组中。

功能:计算一个班的学生名次。算法:一个学生的名次等于成绩高于该生的学生人数加1。

最佳答案

datarea segment
grade dw 50 dup(?)
rank dw 50 dup(?)
count dw ?
mess1 db 'Grade:$'
mess2 db 13,10,'Input Error!',13,10,'$'
mess3 db 'Rank:$'
datarea ends
;
prognam segment
main proc far
assume cs:prognam,ds:datarea
start:
push ds
sub ax,ax
push ax


mov ax,datarea
mov ds,ax


call input
call rankp
call output
ret
main endp


input proc near
lea dx,mess1
mov ah,9
int 21h
mov si,0
mov count,0
enter:
call decbin
inc count
cmp dl,','
je store
cmp dl,13
je exit
jne error
store:
mov grade[si],bx
add si,2
jmp enter
error:
lea dx,mess2
mov ah,9
int 21h
exit:
mov grade[si],bx
call crlf
ret
input endp
;
rankp proc near
mov di,count
mov bx,0
loop1:
mov ax,grade[bx]
mov word ptr rank[bx],0
mov cx,count
lea si,grade
next:
cmp ax,[si]
jg ncount
inc word ptr rank[bx]
ncount:
add si,2
loop next
add bx,2
dec di
jnz loop1
ret
rankp endp
;
output proc near
lea dx,mess3
mov ah,9
int 21h
mov si,0
mov di,count
next1:
mov bx,rank[si]
call bindec
mov dl,','
mov ah,02h
int 21h
add si,2
dec di
jnz next1
call crlf
ret
output endp
;十进制转换成二进制
decbin proc near
mov bx,0
newchar:
mov ah,1
int 21h
mov dl,al
sub al,30h
jl exit0
cmp al,39h
jg exit0
cbw


xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp newchar
exit0: ret
decbin endp
;二进制转换成十进制
bindec proc near


push bx
push cx
push si
push di
mov cx,100d
call decdiv
mov cx,10d
call decdiv
mov cx,1d
call decdiv
pop di
pop si
pop cx
pop bx
ret
bindec endp
;
decdiv proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al


add dl,30h
mov ah,02h
int 21h
ret
decdiv endp
;回车换行
crlf proc near


mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
ret
crlf endp
prognam ends
end start

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑问题,怎样备份啊?有图片看
智新超越教育(益民街)怎么去啊,有知道地址的
reduce的用法
QQ飞车真的好玩吗?
邢台市到浆水镇有多远?
老虎屁股下一句是什么,歇后语-老虎的屁股,后
江苏苏州相城区东桥哪有买麦的
我dNF36级机械诗,打什麽图升级最快
兴业里地址有知道的么?有点事想过去
了解一个人需要多长时间
彩钢夹芯板的生产工艺流程图
老师的辛苦付出句子,老师为我们辛勤付出,我们
诺基亚5530XM行货苏州商场卖多少
如何训练唱歌技巧?应用哪个地方发音?
有谁在南昌美忆影像学过高温瓷像制做
推荐资讯
华港南街地址在什么地方,想过去办事
学习自由搏击有年龄限制吗
手机qq为什么登不上去?以前能登上去为什么突
女:26岁,想解大便却解不下来,啥原因?
如何正确简单的取下隐形眼镜
爬沙虫的药用价值,具体用哪部分入药?
浣溪沙名句,浣溪沙经典名句
MU这款游戏有关于什么而来的?速求详情…
QQ三国怎么点亮!急啊!!
06款现代雅绅特前大灯灯泡是什么型号的
在哪里可以看到无删减版的台湾版的白色巨塔
为什么我的qq号注册不了防沉迷啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?