主题:急!
小精灵LS
[专家分:580] 发布于 2007-04-05 17:33:00
键盘输如N和M,求出N的M次方。
回复列表 (共6个回复)
沙发
chyx [专家分:450] 发布于 2007-04-05 18:42:00
这是M的N次方
CLS
INPUT m, n
DIM a(1000), b(1000), c(1000)
b$ = "1"
WHILE s <> n
s = s + 1
a$ = LTRIM$(STR$(m))
la = LEN(a$): lb = LEN(b$): lc = la + lb
FOR i = 1 TO la: a(i) = VAL(MID$(a$, la + 1 - i, 1)): NEXT i
FOR i = 1 TO lb: b(i) = VAL(MID$(b$, lb + 1 - i, 1)): NEXT i
b$ = ""
FOR i = 1 TO la: FOR j = 1 TO lb
x = a(i) * b(j): w = i + j - 1
c(w) = c(w) + x MOD 10
c(w + 1) = c(w + 1) + c(w) \ 10 + x \ 10
c(w) = c(w) MOD 10
NEXT j, i
WHILE c(lc) = 0 AND lc > 1: lc = lc - 1: WEND
FOR i = lc TO 1 STEP -1: b$ = b$ + LTRIM$(STR$(c(i))): NEXT i
FOR i = 1 TO lc: c(i) = 0: NEXT i
WEND: PRINT LTRIM$(STR$(M));"^";LTRIM$(STR$(N));"=";b$
板凳
hhhchy [专家分:300] 发布于 2007-04-06 17:06:00
cls
input n,m
print n^m
end
简单明了!
3 楼
游戏之王 [专家分:540] 发布于 2007-04-08 16:55:00
CLS
INPUT M
INPUT N
DIM A(1000), B(1000), C(1000)
B$ = "1"
WHILE S <> N
S = S + 1: A$ = LTRIM$(STR$(M))
LA = LEN(A$): LB = LEN(B$): LC = LA + LB
FOR I = 1 TO LA: A(I) = VAL(MID$(A$, LA + 1 - I, 1)): NEXT I
FOR I = 1 TO LB: B(I) = VAL(MID$(B$, LB + 1 - I, 1)): NEXT I
B$ = ""
FOR I = 1 TO LA: FOR J = 1 TO LB
X = A(I) * B(J): W = I + J - 1
C(W) = C(W) + X MOD 10
C(W + 1) = C(W + 1) + C(W) \ 10 + X \ 10
C(W) = C(W) MOD 10
NEXT J, I
WHILE C(LC) = 0 AND LC > 1: LC = LC - 1: WEND
FOR I = LC TO 1 STEP -1: B$ = B$ + LTRIM$(STR$(C(I))): NEXT I
FOR I = 1 TO LC: C(I) = 0: NEXT I
WEND
PRINT LTRIM$(STR$(M)); "^"; LTRIM$(STR$(N)); "="; B$
END
4 楼
Lovely哆啦 [专家分:1360] 发布于 2007-04-08 16:58:00
CLS
INPUT m, n
DIM a(1000), b(1000), c(1000)
b$ = "1"
WHILE s <> n
s = s + 1
a$ = LTRIM$(STR$(m))
la = LEN(a$): lb = LEN(b$): lc = la + lb
FOR i = 1 TO la: a(i) = VAL(MID$(a$, la + 1 - i, 1)): NEXT i
FOR i = 1 TO lb: b(i) = VAL(MID$(b$, lb + 1 - i, 1)): NEXT i
b$ = ""
FOR i = 1 TO la: FOR j = 1 TO lb
x = a(i) * b(j): w = i + j - 1
c(w) = c(w) + x MOD 10
c(w + 1) = c(w + 1) + c(w) \ 10 + x \ 10
c(w) = c(w) MOD 10
NEXT j, i
WHILE c(lc) = 0 AND lc > 1: lc = lc - 1: WEND
FOR i = lc TO 1 STEP -1: b$ = b$ + LTRIM$(STR$(c(i))): NEXT i
FOR i = 1 TO lc: c(i) = 0: NEXT i
WEND: PRINT LTRIM$(STR$(M));"^";LTRIM$(STR$(N));"=";b$
5 楼
随便你好 [专家分:530] 发布于 2007-04-08 16:58:00
CLS
INPUT m, n
DIM a(1000), b(1000), c(1000)
b$ = "1"
WHILE s <> n
s = s + 1
a$ = LTRIM$(STR$(m))
la = LEN(a$): lb = LEN(b$): lc = la + lb
FOR i = 1 TO la: a(i) = VAL(MID$(a$, la + 1 - i, 1)): NEXT i
FOR i = 1 TO lb: b(i) = VAL(MID$(b$, lb + 1 - i, 1)): NEXT i
b$ = ""
FOR i = 1 TO la: FOR j = 1 TO lb
x = a(i) * b(j): w = i + j - 1
c(w) = c(w) + x MOD 10
c(w + 1) = c(w + 1) + c(w) \ 10 + x \ 10
c(w) = c(w) MOD 10
NEXT j, i
WHILE c(lc) = 0 AND lc > 1: lc = lc - 1: WEND
FOR i = lc TO 1 STEP -1: b$ = b$ + LTRIM$(STR$(c(i))): NEXT i
FOR i = 1 TO lc: c(i) = 0: NEXT i
WEND: PRINT LTRIM$(STR$(M));"^";LTRIM$(STR$(N));"=";b$
6 楼
Matodied [专家分:7560] 发布于 2007-04-20 17:52:00
2楼的,人家是让你用高精度!
CLS
INPUT n,m
DIM a(n),b(n),s(n):l$="1"
FOR i=1 TO m
a$=l$:b$=LTRIM$(STR$(n))
ERASE a,b,s
GOSUB gjdmult '调用高精度乘法子程序
l$=""
FOR j=ls TO 1 STEP -1
l$=l$+RTRIM$(LTRIM$(STR$(s(j))))
NEXT j
NEXT i
PRINT n;"^";m;"=";l$
END
gjdmult: '定义高精度乘法子程序
la=LEN(a$):lb=LEN(b$):ls=la+lb
DIM a(la),b(lb),s(ls)
FOR k=1 TO la:a(k)=VAL(MID$(a$,la+1-k,1)):NEXT k
FOR k=1 TO lb:b(k)=VAL(MID$(b$,lb+1-k,1)):NEXT k
FOR ka=1 TO la:FOR kb=1 TO lb
d=a(ka)*b(kb):v=ka+kb-1
s(v)=s(v)+d MOD 10
s(v+1)=s(v+1)=s(v)\10+d\10
s(v)=s(v) MOD 10
NEXT kb,ka
IF s(ls)=0 THEN ls=ls-1
RETURN
你们上面怎么都是WHILE循环,我就用FOR,不行吗?
我来回复