回 帖 发 新 帖 刷新版面

主题:问题

进制的程序!

回复列表 (共6个回复)

沙发


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

板凳

可以有小数的:
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 楼

组合数的答案
输入10、4
送分得

4 楼

210

5 楼

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 楼

你是要把所有的组合都打印出来,还是只要输出组合的总个数?
这个程序可以输出所有的组合(从小到大排列)
如:输入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
说好给分!!!!!!!!!!!!!

我来回复

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