回 帖 发 新 帖 刷新版面

主题:请教各位大侠!

编程实现十进制数与二进制数、八进制数、十六进制数之间的转换,
      及二进制数与十进制数、八进制数、十六进制数之间的转换。
      输入三个数,分别为:整数,现进制数,将转换成的进制数。
     【例1】输入:73,10,2
            输出:(73)10=(1001001)2
     【例2】输入:1011011111110011,2,16
            输出:(1011011111110011)2=(B7F3)16

回复列表 (共12个回复)

沙发

CLS
INPUT N$
INPUT N
INPUT M
FOR I = LEN(N$) TO 1 STEP -1
A$ = MID$(N$, LEN(N$) + 1 - I, 1)
IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
X = X + A * N ^ (I - 1)
NEXT I
DO
Y = X MOD M
X = X \ M
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
X$ = Y$ + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END

板凳

CLS
INPUT N$, N, M

FOR I = LEN(N$) TO 1 STEP -1
 A$ = MID$(N$, LEN(N$) + 1 - I, 1)
 IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
 X = X + A * N ^ (I - 1)
NEXT I

DO
Y = X MOD M
X = X \ M
IF Y < 10 THEN X$ = LTRIM$(STR$(Y)) + X$ ELSE X$ = CHR$(55 + Y) + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END
                                                   





3 楼

CLS
INPUT N$
INPUT N
INPUT M
FOR I = LEN(N$) TO 1 STEP -1
A$ = MID$(N$, LEN(N$) + 1 - I, 1)
IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
X = X + A * N ^ (I - 1)
NEXT I
DO
Y = X MOD M
X = X \ M
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
X$ = Y$ + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END
[em3][em3][em13]

4 楼

CLS
INPUT N$
INPUT N
INPUT M
FOR I = LEN(N$) TO 1 STEP -1
A$ = MID$(N$, LEN(N$) + 1 - I, 1)
IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
X = X + A * N ^ (I - 1)
NEXT I
DO
Y = X MOD M
X = X \ M
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
X$ = Y$ + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END

5 楼


CLS
INPUT N$
INPUT N
INPUT M
FOR I = LEN(N$) TO 1 STEP -1
A$ = MID$(N$, LEN(N$) + 1 - I, 1)
IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
X = X + A * N ^ (I - 1)
NEXT I
DO
Y = X MOD M
X = X \ M
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
X$ = Y$ + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END

6 楼

CLS
INPUT A$: INPUT B$
A = LEN(A$): B = LEN(B$): L = INSTR(A$, "."): K = INSTR(B$, ".")
IF L = 0 THEN A1 = A ELSE A1 = L - 1: A2 = A - L
IF K = 0 THEN B1 = B ELSE B1 = K - 1: B2 = B - K
IF A1 > B1 THEN M1 = A1 ELSE M1 = B1
IF A2 > B2 THEN M2 = A2 ELSE M2 = B2
DIM A$(-M1 TO M2), B$(-M1 TO M2), S$(-M1 TO M2)
FOR I = -A1 TO A2: A$(I) = MID$(A$, A1 + 1 + I, 1): NEXT I
FOR I = -B1 TO B2: B$(I) = MID$(B$, B1 + 1 + I, 1): NEXT I
FOR I = M2 TO -M1 STEP -1
IF I <> 0 THEN
X = VAL(A$(I)) + VAL(B$(I)) + C
IF X >= 2 THEN C = 1 ELSE C = 0
END IF
S$(I) = LTRIM$(STR$(X MOD 2))
NEXT I
WHILE S$(M2) = "0" AND M2 > 0: M2 = M2 - 1: WEND
IF C <> 0 THEN PRINT USING "#"; C;  ELSE PRINT " ";
FOR I = -M1 TO M2
IF I = 0 THEN
IF A2 <> 0 OR B2 <> 0 THEN PRINT ".";
ELSE
PRINT S$(I);
END IF
NEXT I
END

7 楼

CLS
INPUT N$,N,M
FOR I=LEN(N$) TO 1 STEP -1
A$=MID$(N$,LEN(N$)+1-I,1)
IF ASC(A$)>57 THEN A=ASC(A$)-55 ELSE A=ASC(A$)
B=B+A*N^(I-1)
NEXT I
DO
Y=B MOD M:B=B\M
IF Y>9 THEN X$=CHR$(55+Y)+X$ ELSE X$=CHR$(48+Y)+X$
LOOP UNTIL B=0
PRINT "(";N$;")";N;"=";"(";X$;")";M
END

8 楼

CLS
INPUT N$
INPUT N
INPUT M
FOR I = LEN(N$) TO 1 STEP -1
A$ = MID$(N$, LEN(N$) + 1 - I, 1)
IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
X = X + A * N ^ (I - 1)
NEXT I
DO
Y = X MOD M
X = X \ M
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
X$ = Y$ + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END

9 楼

CLS
INPUT N$
INPUT N
INPUT M
FOR I = LEN(N$) TO 1 STEP -1
A$ = MID$(N$, LEN(N$) + 1 - I, 1)
IF ASC(A$) > 57 THEN A = ASC(A$) - 55 ELSE A = VAL(A$)
X = X + A * N ^ (I - 1)
NEXT I
DO
Y = X MOD M
X = X \ M
IF Y > 9 THEN X$ = CHR$(55 + Y) + X$ ELSE X$ = CHR$(48 + Y) + X$
X$ = Y$ + X$
LOOP UNTIL X = 0
PRINT "("; N$; ")"; N; "="; "("; X$; ")"; M
END

10 楼

1 CLS
DIM t AS DOUBLE
INPUT n$, s
IF s < 2 OR s <> INT(s) OR s > 16 THEN 1
DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
l = LEN(n$): DIM a(l): n$ = UCASE$(n$)
FOR i = 1 TO l
    m$ = MID$(n$, i, 1)
    f = 0
    FOR j = 1 TO s
        READ k$
        IF k$ = m$ THEN f = 1: EXIT FOR
    NEXT j: RESTORE
    IF f = 0 THEN PRINT "ERROR": END
    IF ASC(k$) > 57 THEN a(i) = ASC(k$) - 55 ELSE a(i) = VAL(k$)
NEXT i
r = 0: t = 0
FOR i = l TO 1 STEP -1
    t = t + a(i) * s ^ r: r = r + 1
NEXT i
2 INPUT p
IF p < 2 OR p <> INT(p) OR p > 16 THEN 2
DO UNTIL t = 0
  a$ = LTRIM$(STR$(t - INT(t / p) * p)) + a$
  t = INT(t / p)
LOOP
PRINT "("; n$; ")"; s; "= ( "; a$; " )"; p
END

我来回复

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