主题:问题
BakerHam
[专家分:30] 发布于 2007-05-05 20:06:00
进制的程序!
回复列表 (共6个回复)
沙发
wzc1996 [专家分:1680] 发布于 2007-05-05 20:07:00
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
板凳
Matodied [专家分:7560] 发布于 2007-05-06 08:48:00
可以有小数的:
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
d = INSTR(n$, ".")
IF d = 0 THEN l = LEN(n$): GOTO 3
DIM b(LEN(n$) - d): l = d - 1
3 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
IF d = 0 THEN 4
x = 0
FOR i = d + 1 TO LEN(n$)
x = x + 1
m$ = MID$(n$, i, 1)
f = 0: RESTORE
FOR j = 1 TO s
READ k$
IF k$ = m$ THEN f = 1: EXIT FOR
NEXT j
IF f = 0 THEN PRINT "ERROR!": END
IF ASC(k$) > 57 THEN b(x) = ASC(k$) - 55 ELSE b(x) = VAL(k$)
NEXT i
4 t = 0: r = 0
FOR i = l TO 1 STEP -1
t = t + a(i) * s ^ r: r = r + 1
NEXT i
IF d = 0 THEN 5
r = -1
FOR i = 1 TO x
t = t + b(i) * s ^ r: r = r - 1
NEXT i
5 INPUT p
IF p < 2 OR p <> INT(p) OR p > 16 THEN 5
zs = INT(t)
DO UNTIL zs = 0
a$ = LTRIM$(STR$(zs - INT(zs / p) * p)) + a$
zs = INT(zs / p)
LOOP
IF d = 0 THEN 6
xs = t - INT(t)
DO UNTIL xs = 0
b$ = b$ + LTRIM$(STR$(INT(xs * p)))
xs = xs * p
xs = xs - INT(xs)
LOOP
6 PRINT "( "; n$; " )"; s; "= ( "; a$;
IF d <> 0 THEN PRINT " . "; b$;
PRINT " )"; p
END
3 楼
BakerHam [专家分:30] 发布于 2007-05-06 10:08:00
组合数的答案
输入10、4
送分得
4 楼
wzc1996 [专家分:1680] 发布于 2007-05-06 10:16:00
210
5 楼
wzc1996 [专家分:1680] 发布于 2007-05-06 10:17:00
CLS
INPUT m, n
s = 1: s1 = 1: s2 = 1
FOR i = 1 TO m: s = s * i: NEXT
FOR j = 1 TO n: s1 = s1 * j: NEXT
FOR ij = 1 TO m - n: s2 = s2 * ij: NEXT
zhs = s / (s1 * s2)
PRINT zhs
6 楼
Matodied [专家分:7560] 发布于 2007-05-07 17:37:00
你是要把所有的组合都打印出来,还是只要输出组合的总个数?
这个程序可以输出所有的组合(从小到大排列)
如:输入4,3
输出 1 2 3
1 2 4
1 3 4
2 3 4
Total:4
1 CLS
INPUT m, n
IF m < 1 OR m <> INT(m) OR m > 25 OR n < 1 OR n > m OR n > 10 OR n <> INT(n) THEN 1
DIM a(n)
FOR i = 1 TO n: a(i) = i: NEXT i
DO
s = s + 1
PRINT "("; s; ")";
FOR j = 1 TO n: PRINT a(j); : NEXT j: PRINT
i = n
DO
a(i) = a(i) + 1
IF i <= n THEN FOR j = i + 1 TO n: a(j) = a(j - 1) + 1: NEXT j
IF a(i) <= m + i - n THEN EXIT DO
i = i - 1
IF i = 0 THEN END
LOOP
LOOP
END
说好给分!!!!!!!!!!!!!
我来回复