回 帖 发 新 帖 刷新版面

主题:求一数组程序

题目:某校举行卡拉OK大奖赛,决赛时共有10名选手参加,有12名评委参加评分,最后计分采用去掉两个最高分和两个最低分,然后算出剩下8位评委分数的平均分,做为最后的成绩,请编写程序排出选手的最后名次.

回复列表 (共2个回复)

沙发

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

板凳


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


这是我的做法,就是感到有点麻烦,有没有好的方法?

我来回复

您尚未登录,请登录后再回复。点此登录或注册