回 帖 发 新 帖 刷新版面

主题:关于字符串和图形的问题(急!请速回复,多谢多谢!!!)

请哪位大侠帮个忙?谢谢了!
1.输入一单词(要求该单词首尾相同),输出由该单词组成的字符三角形.如:输入单词 TREAT.则输出         T
                    R R
                   E   E 
                  A     A
                 T R E A T
2.让计算机随机产生一段英文字母(大小写均有),编程将大小写英文字母全部转换成大写英文字母,然后按26个英文字母在该段英文中出现的频率大小,将它们重新排序.

回复列表 (共5个回复)

沙发

第一题:
do
  input a$
loop until left$(a$,1)=right$(a$,1)
  cls
  l% = LEN(a$)
FOR i% = 1 TO l%
  LOCATE i%, l% - i% + 1: PRINT MID$(a$, i%, 1)
  LOCATE i%, l% + i% - 1: PRINT MID$(a$, i%, 1)
  LOCATE l%, i% * 2 - 1: PRINT MID$(a$, i%, 1)
NEXT

板凳

第二题的要求不是很明确,
将它们重新的排序的“它们”是不是二十六个大写字母?
如果是的话:

RANDOMIZE TIMER
l% = RND * 16383
FOR i% = 1 TO l%
    j% = RND * 51
    IF j% > 25 THEN j% = j% + 6
    s$ = s$ + CHR$(j% + 65)
NEXT
PRINT s$
s$ = UCASE$(s$)

DIM p%(26)
FOR i% = 1 TO LEN(s$)
    j% = ASC(MID$(s$, i%, 1)) - 64
    p%(j%) = p%(j%) + 1
NEXT

FOR i% = 1 TO 26
    m% = 0
    k% = 0
    FOR j% = 1 TO 26
        IF p%(j%) > m% THEN
           m% = p%(j%)
           k% = j%
        END IF
    NEXT
    z$ = z$ + CHR$(64 + k%)
    p%(k%) = 0
NEXT
PRINT z$

3 楼

当然,
如果对作业的格式不太严格的话,
还可以简化一点的:

dim p%(26)
RANDOMIZE TIMER
l% = RND * 16383
FOR i% = 1 TO l%
    j% = RND * 51
    k%=j% mod 26+1
    p%(k%)=p%(k%)+1
    IF j% > 25 THEN j% = j% + 6
    s$ = s$ + CHR$(j% + 65)
NEXT
PRINT s$
FOR i% = 1 TO 26
    m% = 0
    k% = 0
    FOR j% = 1 TO 26
        IF p%(j%) > m% THEN
           m% = p%(j%)
           k% = j%
        END IF
    NEXT
    z$ = z$ + CHR$(64 + k%)
    p%(k%) = 0
NEXT
PRINT z$

4 楼

多谢MOZ的指教.可是:如果第一题不是用LOCATE呢?是不是应该把单词分为偶数个字母和奇数个字母两种情况?用双重循环又怎么编写呢?谢谢!

5 楼

为什么一定要"双重"循环?
你想怎样"双重"法?
为什么不要用Locate?
没必要分奇数偶数,都一样处理的.

do
  input a$
loop until left$(a$,1)=right$(a$,1)
  cls
  l% = LEN(a$)
FOR i% = 1 TO l%
  if i%=1 then  
     print space$(l%-i%);mid$(a$,i%,1)
  elseif i%<l% then
     print space$(l%-i%);mid$(a$,i%,1);space$(i%*2-2);mid$(a$,i%,1)
  else
     for j%=1 to l%
         print mid$(a$,j%,1);space$(1);
     next
  endif
NEXT

我来回复

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