早教吧 育儿知识 作业答案 考试题库 百科 知识分享

学生成绩名次表问题描述:建设一个年级(M个班)的学生参加某门课程的考试,每个班最多有N个学生,请输出各班的成绩名次表(M个)、以班级为单位的成绩名次表(1个)、以及以年级为

题目详情
学生成绩名次表
问题描述:建设一个年级(M个班)的学生参加某门课程的考试,每个班最多有N个学生,请输出各班的成绩名次表(M个)、以班级为单位的成绩名次表(1个)、以及以年级为单位的成绩名次表(1个)。
设计要求:
1.功能:每个班级的学生记录按学号顺序排列,每个学生记录至少包含排列名次、学号、成绩3个字段。
2.输入:随机产生M*N个成绩。
3.输出:
(1)输出每个班级的成绩名次表,具有相同成绩的名次相同;
(2)输出以班级为单位的成绩名次表。
(3)输出以年级为单位的成绩名次表,具有相同成绩的名次相同。
▼优质解答
答案和解析
课后题吧,我这有
;把0--100d之间的30个数存入以GRADE为首地址的30个数组中,
;GRADE+1表示学号为i+1的学生的成绩。另一个数组RANK为30个
;学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。
;编写一程序,根据GRADE 中的学生成绩,讲学生名次填入RANK数组中。(提示:一个学生的名次等于成绩高于这个学生是人数加1)
DATAS SEGMENT
;此处输入数据段代码
GRADE DW 88,75,95,63,98,78,87,78,90,60;自行定义 ;成绩
COUNT EQU ($-GRADE)/2
RANK DW COUNT DUP (1) ;排名,初始值为1,大家都第一名,同一起跑线哈
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV SI,0 ;要排名的学生号码
MOV CX,COUNT
L1:
MOV AX,GRADE[SI] ;获得第SI号学生的成绩
MOV BX,RANK[SI] ;获得第SI号学生的初始排名

MOV DX,CX ;保存CX
MOV DI,0 ;要比较的学生的号码
MOV CX,COUNT
L2:
CMP AX,GRADE[DI] ;逐个比较
JNB L3
INC BX ;低于某一个学生的成绩,则排名加1
L3:
ADD DI,2
LOOP L2

MOV RANK[SI],BX ;保存排名
ADD SI,2
MOV CX,DX
LOOP L1

MOV AH,4CH
INT 21H
CODES ENDS
END START
看了学生成绩名次表问题描述:建设一...的网友还看了以下: