主题:求一数组程序
蓝色的水晶
[专家分:90] 发布于 2007-11-19 19:14:00
题目:某校举行卡拉OK大奖赛,决赛时共有10名选手参加,有12名评委参加评分,最后计分采用去掉两个最高分和两个最低分,然后算出剩下8位评委分数的平均分,做为最后的成绩,请编写程序排出选手的最后名次.
回复列表 (共2个回复)
沙发
tujunqiang [专家分:150] 发布于 2007-11-19 21:28:00
CLS
DIM a(12), b(10)
FOR p = 1 TO 10
GOSUB 200
GOSUB 300
b(p) = s / 8: PRINT b(p)
NEXT p
FOR m = 1 TO 9
FOR n = m + 1 TO 10
IF a(m) < a(n) THEN SWAP a(m), a(n)
NEXT n, m
FOR i = 1 TO 10
IF a(i) = a(i - 1) THEN PRINT i - 1, a(i) ELSE PRINT i, a(i)
NEXT i
END
200
REM jifen
FOR a = 1 TO 12
INPUT "shu ru feng shu: "; a(a)
NEXT a
FOR x = 1 TO 11
FOR y = x + 1 TO 12
IF a(x) < a(y) THEN SWAP a(x), a(y)
NEXT y, x
RETURN
300 REM add
s = 0
FOR k = 3 TO 10
s = s + a(k)
NEXT k
RETURN
板凳
蓝色的水晶 [专家分:90] 发布于 2007-11-20 19:17:00
CLS
DIM a(12), sum(10), xm$(10)
REM 求10个人的去掉最高分和最低分后的成绩
p=1
FOR i = 1 TO 10
INPUT xm$(i)
FOR j = 1 TO 12
INPUT a(j)
NEXT j
FOR m = 1 TO 11
FOR n = m + 1 TO 12
IF a(m) > a(n) THEN
SWAP a(m), a(n)
END IF
NEXT n
NEXT m
FOR k = 3 TO 10
sum(P) = sum(P) + a(k)
NEXT k
aver(P) = sum(P) / 8
P = P + 1
NEXT i
REM 对10个人的成绩进行排序
FOR i = 1 TO 9
FOR j = i + 1 TO 10
IF aver(i) < aver(j) THEN
SWAP aver(i), aver(j)
SWAP xm$(i), xm$(i)
END IF
NEXT j
NEXT i
REM 按名次输出
FOR i = 1 TO 10
PRINT i, xm$(i), aver(i)
NEXT i
END
这是我的做法,就是感到有点麻烦,有没有好的方法?
我来回复