程 序 源 代 码


数制转换
    说明:本程序可以用于进行10进制数据与非10进制(2进制、8进制、16进制)数据之间的转换。首先按程序要求选择转换模式,再输入已知的数或要转换的数的进制制式。程序将自动显示你所需要的进制数据。如果输入非10进制数据有错误时,程序还会自动提示。输入的10进制数据可长达10位,二进制数据可长达100多位。输入的数据只限于正整数。
 
5 CLS : PRINT "            PR020:数制转换": PRINT
10 PRINT "请选择转换模式:(1 OR 2)"
15 PRINT "    1: 10进制→非10进制"
20 PRINT "    2: 非10进制→10进制"
25 PRINT "(注: 中止输入请按Ctrl键+Pause键。)"
30 INPUT "选择: ", m
35 IF m <> 1 AND m <> 2 THEN 10
40 IF m = 1 THEN 110
45 INPUT "已知的数据为几进制:", n
46 IF n > 10 AND n <> 16 THEN PRINT "大于10的进制只用16进制!": GOTO 45
47 IF n = 16 THEN PRINT "如有必要输入字母,请用大写字母!"
50 INPUT "输入已知的数:", x$
55 IF VAL(x$) <> INT(VAL(x$)) THEN PRINT "请输入整数!": GOTO 50
60 y = 0
65 FOR i = 1 TO LEN(x$)
70 v = VAL(MID$(x$, i, 1)): a = ASC(MID$(x$, i, 1))
75 IF v >= n THEN PRINT "数据输入错误!": GOTO 50
80 IF v = 0 AND MID$(x$, i, 1) <> "0" THEN IF a > 70 OR a < 65 THEN PRINT "数据输入错误!": GOTO 50
85 IF a >= 65 AND a < 71 THEN v = a - 55
90 y = y + v * n ^ (LEN(x$) - i)
95 NEXT
100 PRINT y
105 GOTO 50
110 DIM y(255)
115 INPUT "输入要转换的数:", x$
116 IF VAL(x$) <> INT(VAL(x$)) THEN PRINT "请输入整数!": GOTO 115
120 INPUT "要转换成几进制:", n
122 IF n > 10 AND n <> 16 THEN PRINT "大于10的进制1只有10进制!": GOTO 120
125 y = VAL(x$): i = 1
130 y(i) = y MOD n
140 IF y - (y MOD n) = 0 THEN 180
150 y = INT(y / n)
160 i = i + 1
170 GOTO 130
180 FOR k = i TO 1 STEP -1
185 IF n = 16 AND y(k) >= 10 THEN PRINT CHR$(y(k) + 55); : GOTO 200
190 PRINT y(k);
200 NEXT
205 PRINT
210 GOTO 115
220 END
 

<下一个>