100分·······改错QB45题

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:08:43
1. 改错
考试文件夹下源程序test1.bas用于从随机数据文件”xscj.dat”中读入学生成绩数据,然后求出总分,并按总分降序排列后在屏幕上输出。程序有五处错误,请改正之,修改后将源程序文件保存在考生文件夹下的“DTQK”子文件夹中。
注意:不得增加行或删除行,也不得更改程序结构。

DECLARE SUB sort (xh() AS STRING, cj() AS INTEGER, L AS INTEGER)
CLS
TYPE xs
xh AS STRING * 6
yw AS INTEGER
sx AS INTEGER
yy AS INTEGER
END
DIM x AS xs
OPEN "C:\qbtest\xscj.dat" FOR RANDOM AS #1 LEN = LEN(x)
DIM rec AS INTEGER
rec = LOF(1) \ LEN(x)
DIM xhsz(rec) AS STRING, cjsz(rec) AS INTEGER
FOR i = 1 TO rec
GET #1, x
xhsz(i) = x.xh
cjsz(i) = x.yw + x.sx + x.yy
NEXT i
CALL sort(xhsz(), cjsz())
FOR i = 1 TO rec
PRINT xhsz(i), cjsz(i)
NEXT i
CLOSE
END

SUB sort (xh() AS STRING, cj() AS INTEGER, L AS INTEGER)
FOR i = 1 TO L - 1
FOR j = 1 TO L - 1
IF cj(i) < cj(j) THEN
SWAP cj(i), cj(j)
SWAP xh(i), xh(j)
END IF

DECLARE SUB sort (xh() AS STRING, cj() AS INTEGER, L AS INTEGER)
CLS
TYPE xs
xh AS STRING * 6
yw AS INTEGER
sx AS INTEGER
yy AS INTEGER
END type
DIM x AS xs
OPEN "C:\qbtest\xscj.dat" FOR RANDOM AS #1 LEN = LEN(x)
DIM rec AS INTEGER
rec = LOF(1) \ LEN(x)
DIM xhsz(rec) AS STRING, cjsz(rec) AS INTEGER
FOR i = 1 TO rec
GET #1, i,x
xhsz(i) = x.xh
cjsz(i) = x.yw + x.sx + x.yy
NEXT i
CALL sort(xhsz(), cjsz(),(rec))
FOR i = 1 TO rec
PRINT xhsz(i), cjsz(i)
NEXT i
CLOSE
END

SUB sort (xh() AS STRING, cj() AS INTEGER, L AS INTEGER)
FOR i = 1 TO L - 1
FOR j = i+1 TO L
IF cj(i) < cj(j) THEN
SWAP cj(i), cj(j)
SWAP xh(i), xh(j)
END IF
NEXT j
NEXT i
END SUB