回 帖 发 新 帖 刷新版面

主题:是英雄就编这道题

输入一个带括号的表达式,允许用:
数字(含负数)
+,-,*,/,\,MOD
要求算出其结果(保留5位小数)
注:
1/7*7=1
5/3*12=20

回复列表 (共17个回复)

11 楼

我也非英雄

12 楼

FFKK竟敢抄我的!!!!!!!!!!!!!!!!!!

13 楼

CLS
INPUT S$
L = LEN(S$): DIM F$(L), N(L): J = 1
FOR I = 1 TO L
A$ = MID$(S$, I, 1)
IF A$ < "0" OR A$ > "9" THEN
F$(J) = A$: N(J) = VAL(B$): J = J + 1: B$ = ""
ELSE B$ = B$ + A$
END IF
NEXT I: N(J) = VAL(B$)
FOR I = 1 TO J
IF F$(I) = "^" THEN N(I) = N(I) ^ N(I + 1): GOSUB 10
NEXT I
FOR I = 1 TO J
IF F$(I) = "*" THEN N(I) = N(I) * N(I + 1): GOSUB 10
IF F$(I) = "/" THEN N(I) = N(I) / N(I + 1): GOSUB 10
NEXT I
FOR I = 1 TO J
IF F$(I) = "+" THEN N(I) = N(I) + N(I + 1): GOSUB 10
IF F$(I) = "-" THEN N(I) = N(I) - N(I + 1): GOSUB 10
NEXT I
PRINT S$; "="; N(1)
END
10
FOR Q = I TO L - 2: F$(Q) = F$(Q + 1): N(Q + 1) = N(Q + 2): NEXT Q
I = I - 1: J = J - 1
RETURN

14 楼

楼上你没“()” 、“\”、mod
????????!!!!!!!!!!

15 楼

[quote]简单简单!!!
CLS
INPUT A$
L = LEN(A$)
DIM A$(L), B(L)
PRINT A$; "=";
DO
  Q = INSTR(A$, ")")
  IF Q <> 0 THEN
    K = 0
    DO
      K = INSTR(K + 1, A$, "(")
      IF K < Q AND K <> 0 THEN P = K
    LOOP UNTIL K = 0 OR K > Q
    AA$ = MID$(A$, 1, P - 1)
    AB$ = MID$(A$, P + 1, Q - (P + 1))
    AC$ = MID$(A$, Q + 1)
    GOSUB 100
    AB$ = LTRIM$(STR$(B(1)))
    A$ = AA$ + AB$ + AC$
  END IF
LOOP UNTIL Q = 0
AB$ = A$
GOSUB 100
PRINT USING"########.#####";B(1)
END
100
T$ = ""
J = 1
LA = LEN(AB$)
FOR I = 1 TO LA
  X$ = MID$(AB$, I, 1)
  IF X$ = "-" AND MID$(AB$ , I + 1,1)>="0" AND MID$(AB$ ,I + 1, 1)<="9" THEN 
    T$=T$+X$
  ELSEIF X$ = "+" OR X$ = "-" OR X$ = "*" OR X$ = "/" OR X$ = "\" X$ = "^" OR X$="M" THEN
    IF X$ = "M" THEN 
      X$=X$+MID$(AB$ ,I + 1,2)
      I=I+2
    END IF
    A$(J) = X$
    B(J) = VAL(T$)
    T$ = ""
    J = J + 1
  ELSE
    T$ = T$ + X$
  END IF
NEXT I
B(J) = VAL(T$)
FOR T = 1 TO J
  IF A$(T) = "^" THEN B(T) = B(T) ^ B(T + 1): GOSUB 200
NEXT T
FOR T = 1 TO J
  IF A$(T) = "*" THEN B(T) = B(T) * B(T + 1): GOSUB 200
  IF A$(T) = "/" THEN B(T) = B(T) / B(T + 1): GOSUB 200
NEXT T
FOR T = 1 TO J
  IF A$(T) ="\" TTHEN B(T) = B(T) \ B(T + 1): GOSUB 200
NEXT T
FOR T=1 TO J
  IF A$(T) = "MOD" THEN B(T) = B(T) MOD B(T + 1):GOSUB 200 
FOR T = 1 TO J
  IF A$(T) = "+" THEN B(T) = B(T) + B(T + 1): GOSUB 200
  IF A$(T) = "-" THEN B(T) = B(T) - B(T + 1): GOSUB 200
NEXT T
RETURN
200
FOR P = T TO LA - 2
  A$(P) = A$(P + 1)
  B(P + 1) = B(P + 2)
NEXT P
J = J - 1
T = T - 1
RETURN
[em2][/quote]

16 楼

不是英雄,不会做

17 楼

不懂。看后来的程式学习学习

我来回复

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