回 帖 发 新 帖 刷新版面

主题:打印字母三角。

? 5
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA

我用定义函数做了一个

COPY$的用处是反向中取,比如COPY$("258",2,2),就是"52",不是"58"。
RVR$是反向,RVR$("123456789")="987654321"
以下用两种函数来做,用RVR$的不用COPY$,用COPY$的不用RVR$,输出最后两个三角。

DECLARE FUNCTION COPY$ (a$, i!, j!)
DECLARE FUNCTION RVR$ (a$)
CLS
INPUT n
a$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
a$ = a$ + a$
b$ = RVR$(a$)
PRINT TAB(n); "A"
FOR i = 2 TO n
  PRINT TAB(n + 1 - i); LEFT$(a$, i); RIGHT$(b$, i - 1)
NEXT i
PRINT TAB(n); "A"
FOR i = 2 TO n
  PRINT TAB(n + 1 - i); LEFT$(a$, i); COPY$(a$, i - 1, i);
NEXT i
END

FUNCTION COPY$ (a$, i!, j!)
  IF i > LEN(a$) OR i < 1 THEN PRINT "ERROR!"
  x$ = ""
  c = i - j + 1
  FOR k = i TO c STEP -1
    IF k < 1 THEN EXIT FOR
    x$ = x$ + MID$(a$, k, 1)
  NEXT k
  COPY$ = x$
END FUNCTION

FUNCTION RVR$ (a$)
  x$ = ""
  FOR i = 1 TO LEN(a$)
    x$ = x$ + MID$(a$, LEN(a$) + 1 - i, 1)
  NEXT i
  RVR$ = x$
END FUNCTION

回复列表 (共3个回复)

沙发

楼主的输入不能大于52.
看我的,小心撑爆你的记事本(查看结果时关掉"自动换行")

DECLARE SUB ccc (m!)
COMMON SHARED p$
OPEN "zimu.out" FOR OUTPUT AS #1
p$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
INPUT n
FOR i = 1 TO n
    PRINT #1, SPACE$(n - i); LEFT$(p$, i);
    IF i > 26 THEN CALL ccc(i - 26)
    FOR j = i - 1 TO 1 STEP -1
    PRINT #1, MID$(p$, j, 1);
    NEXT j
    PRINT #1,
NEXT i
CLOSE #1
END

SUB ccc (m)
PRINT #1, LEFT$(p$, m);
IF m > 26 THEN CALL ccc (m - 26)
IF m > 26 THEN m = 27
FOR j = m - 1 TO 1 STEP -1
    PRINT #1, MID$(p$, j, 1);
NEXT j
END SUB

板凳

本来就不应该大于52 大于52怎么在屏幕显示

3 楼

屏幕是显示不了,输出到文件就行了,总会有办法的

我来回复

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