主题:关于字符串和图形的问题(急!请速回复,多谢多谢!!!)
梧桐秋雨1229
[专家分:0] 发布于 2005-11-13 19:48:00
请哪位大侠帮个忙?谢谢了!
1.输入一单词(要求该单词首尾相同),输出由该单词组成的字符三角形.如:输入单词 TREAT.则输出 T
R R
E E
A A
T R E A T
2.让计算机随机产生一段英文字母(大小写均有),编程将大小写英文字母全部转换成大写英文字母,然后按26个英文字母在该段英文中出现的频率大小,将它们重新排序.
回复列表 (共5个回复)
沙发
moz [专家分:37620] 发布于 2005-11-13 20:14:00
第一题:
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
板凳
moz [专家分:37620] 发布于 2005-11-13 20:39:00
第二题的要求不是很明确,
将它们重新的排序的“它们”是不是二十六个大写字母?
如果是的话:
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 楼
moz [专家分:37620] 发布于 2005-11-13 20:44:00
当然,
如果对作业的格式不太严格的话,
还可以简化一点的:
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 楼
梧桐秋雨1229 [专家分:0] 发布于 2005-11-14 17:46:00
多谢MOZ的指教.可是:如果第一题不是用LOCATE呢?是不是应该把单词分为偶数个字母和奇数个字母两种情况?用双重循环又怎么编写呢?谢谢!
5 楼
moz [专家分:37620] 发布于 2005-11-15 16:34:00
为什么一定要"双重"循环?
你想怎样"双重"法?
为什么不要用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
我来回复