单选题 [程序说明] 程序先输入10个学生的学号及其成绩,然后按成绩从大到小的顺序进行排序,最后按排序结果输出每个学生的名次、学号及其成绩。
[程序]
SET TALK OFF
DIME N(10),L(10)
FOR I=1 TO 10
INPUT "学号" TO N(I)
INPUT "成绩" TO L(I)
NEXT I
FOR I=1 TO 9
FOR ______ TO 10
IF L(I)<L(J)
B=L(I)
L(I)=L(J)
L(J)=B
C=N(I)
______
______
ENDIF
NEXT J
NEXT I
? "名次","学号","成绩"
FOR I=1 TO 10
______
NEXT I
SET TALK ON
RETURN
【正确答案】 B
【答案解析】[解析] 题中要求成绩从大到小进行排序,应将紧挨的成绩两两比较,即L(I)与L(I+1)进行比较,所以第1空应填J=I+1。
【正确答案】 D
【答案解析】
【正确答案】 C
【答案解析】[解析] 程序段中的IF…ENIDIF是将成绩大与成绩小的交换,并交换相应的学号,交换学号N(I)和N(J)是通过中间变量C来实现的。此交换方式与程序中成绩交换过程一致,所以很容易得出第2、3空的选项。
【正确答案】 A
【答案解析】[解析] 数组N(I)和L(I)分别用来存放学生的学号和成绩。题意最后要求排序后,输出每个学生的名次、学号及成绩。本程序用FOR…NEXT循环来显示出每个学生的名次、学号及成绩,所以第4空应填?I,N(I),L(I)。