回 帖 发 新 帖 刷新版面

主题:高难度

1.从键盘输入一个二进制小数,将这个小数化为十进制数!

回复列表 (共11个回复)

沙发

hfjasdfhdfwekurh

板凳

CLS
INPUT N$
FOR I = LEN(N$) TO 1 STEP -1
 A = VAL(MID$(N$, LEN(N$) + 1 - I, 1))
 X = X + A * 2 ^ (I - 1)
NEXT I
PRINT X
                                                   

3 楼

CLS
INPUT A$, M, N
D = INSTR(A$, ".")
IF D = 0 THEN Z$ = A$ ELSE Z$ = LEFT$(A$, D - 1): X$ = MID$(A$, D + 1)
FOR I = 1 TO LEN(Z$)
B = ASC(MID$(Z$, I, 1))
IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
IF B >= M THEN PRINT "DATA ERROR!": END
S1 = S1 + B * M ^ (LEN(Z$) - I)
NEXT I
FOR I = 1 TO LEN(X$)
B = ASC(MID$(X$, I, 1))
IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
IF B >= M THEN PRINT "DATA ERROR!": END
S2 = S2 + B * M ^ (-I)
NEXT I
M$ = "0123456789ABCDEF"
DO UNTIL S1 = 0
ZZ$ = MID$(M$, S1 MOD N + 1, 1) + ZZ$
S1 = S1 \ N
LOOP
DO UNTIL LEN(XX$) = LEN(X$)
C = INT(S2 * N)
XX$ = XX$ + MID$(M$, C + 1, 1)
S2 = S2 * N - C
LOOP
IF ZZ$ <> "" THEN PRINT ZZ$; : GOTO 10
PRINT "0";
10 IF D > 0 THEN PRINT "."; XX$
END

4 楼

CLS
INPUT N$
FOR I = LEN(N$) TO 1 STEP -1
 A = VAL(MID$(N$, LEN(N$) + 1 - I, 1))
 X = X + A * 2 ^ (I - 1)
NEXT I
PRINT X

5 楼

CLS
INPUT A$, M, N
D = INSTR(A$, ".")
IF D = 0 THEN Z$ = A$ ELSE Z$ = LEFT$(A$, D - 1): X$ = MID$(A$, D + 1)
Q$ = Z$: GOSUB 10
Q$ = X$: GOSUB 10
M$ = "0123456789ABCDEF"
DO
  ZZ$ = MID$(M$, S1 MOD N + 1, 1) + ZZ$
  S1 = S1 \ N
LOOP UNTIL S1 = 0
DO UNTIL LEN(XX$) = LEN(X$)
  C = INT(S2 * N)
  XX$ = XX$ + MID$(M$, C + 1, 1)
  S2 = S2 * N - C
LOOP

PRINT ZZ$; : IF D > 0 THEN PRINT "."; XX$
END
10 FOR I = 1 TO LEN(Q$)
  B = ASC(MID$(Q$, I, 1))
  IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
  IF B >= M THEN PRINT "DATA ERROR!": END
  IF Q$ = Z$ THEN S1 = S1 + B * M ^ (LEN(Q$) - I) ELSE S2 = S2 + B * M ^ (-I)
NEXT I
RETURN



6 楼

CLS
INPUT A$
FOR I = LEN(A$) TO 1 STEP -1
 A = VAL(MID$(A$, LEN(A$) + 1 - I, 1))
 X = X + A * 2 ^ (I - 1)
NEXT I
PRINT X
END

7 楼


CLS
INPUT A$, M, N
D = INSTR(A$, ".")
IF D = 0 THEN Z$ = A$ ELSE Z$ = LEFT$(A$, D - 1): X$ = MID$(A$, D + 1)
FOR I = 1 TO LEN(Z$)
  B = ASC(MID$(Z$, I, 1))
  IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
  IF B >= M THEN PRINT "DATA ERROR!": END
  S1 = S1 + B * M ^ (LEN(Z$) - I)
NEXT I
FOR I = 1 TO LEN(X$)
  B = ASC(MID$(X$, I, 1))
  IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
  IF B >= M THEN PRINT "DATA ERROR!": END
  S2 = S2 + B * M ^ (-I)
NEXT I
M$ = "0123456789ABCDEF"
DO
  ZZ$ = MID$(M$, S1 MOD N + 1, 1) + ZZ$
  S1 = S1 \ N
LOOP UNTIL S1 = 0
DO UNTIL LEN(XX$) = LEN(X$)
  c = INT(S2 * N)
  XX$ = XX$ + MID$(M$, c + 1, 1)
  S2 = S2 * N - c
LOOP
IF ZZ$ <> "" THEN PRINT ZZ$;
IF D > 0 THEN PRINT "."; XX$
END

[em5]

8 楼

CLS
INPUT A$, M, N
D = INSTR(A$, ".")
IF D = 0 THEN Z$ = A$ ELSE Z$ = LEFT$(A$, D - 1): X$ = MID$(A$, D + 1)
FOR I = 1 TO LEN(Z$)
  B = ASC(MID$(Z$, I, 1))
  IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
  IF B >= M THEN PRINT "DATA ERROR!": END
  S1 = S1 + B * M ^ (LEN(Z$) - I)
NEXT I
FOR I = 1 TO LEN(X$)
  B = ASC(MID$(X$, I, 1))
  IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
  IF B >= M THEN PRINT "DATA ERROR!": END
  S2 = S2 + B * M ^ (-I)
NEXT I

M$ = "0123456789ABCDEF"
DO
  ZZ$ = MID$(M$, S1 MOD N + 1, 1) + ZZ$
  S1 = S1 \ N
LOOP UNTIL S1 = 0
DO UNTIL LEN(XX$) = LEN(X$)
  C = INT(S2 * N)
  XX$ = XX$ + MID$(M$, C + 1, 1)
  S2 = S2 * N - C
LOOP

PRINT ZZ$; : IF D > 0 THEN PRINT "."; XX$
END

9 楼

CLS
INPUT N$
FOR I = LEN(N$) TO 1 STEP -1
 A = VAL(MID$(N$, LEN(N$) + 1 - I, 1))
 X = X + A * 2 ^ (I - 1)
NEXT I
PRINT X
END

10 楼

CLS
INPUT A$, M, N
D = INSTR(A$, ".")
IF D = 0 THEN Z$ = A$ ELSE Z$ = LEFT$(A$, D - 1): X$ = MID$(A$, D + 1)
FOR I = 1 TO LEN(Z$)
B = ASC(MID$(Z$, I, 1))
IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
IF B >= M THEN PRINT "DATA ERROR!": END
S1 = S1 + B * M ^ (LEN(Z$) - I)
NEXT I
FOR I = 1 TO LEN(X$)
B = ASC(MID$(X$, I, 1))
IF B > 64 AND B < 71 THEN B = B - 55 ELSE B = B - 48
IF B >= M THEN PRINT "DATA ERROR!": END
S2 = S2 + B * M ^ (-I)
NEXT I
M$ = "0123456789ABCDEF"
DO UNTIL S1 = 0
ZZ$ = MID$(M$, S1 MOD N + 1, 1) + ZZ$
S1 = S1 \ N
LOOP
DO UNTIL LEN(XX$) = LEN(X$)
C = INT(S2 * N)
XX$ = XX$ + MID$(M$, C + 1, 1)
S2 = S2 * N - C
LOOP
IF ZZ$ <> "" THEN PRINT ZZ$; : GOTO 10
PRINT "0";
10 IF D > 0 THEN PRINT "."; XX$
END[/quote]

我来回复

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