主题:Moz的作业本
moz
[专家分:37620] 发布于 2005-11-09 12:34:00
页码 楼层 题目
1 1-10 目录
2 11 第一题:关于质数的题目
2 11 第二题:关于分解质因数的题目
2 12 第三题:关于排列组合的题目
2 13 第四题:一个用"*"号列印的倒置三角形点编写好??
*******
*****
***
*
2 13 第五题: 编程输出菱形米字号
*
***
*****
*******
*****
***
*
2 13 第六题: 蛇形矩阵
1 2 6
3 5 7
4 8 12
9 11 13
10 14 15
2 13 第七题: 数字图形编程
3
323
32123
3210123
32123
323
3
2 13 第八题: 两个数字图形的编程思路和方法!!!
第一个 第二个
1 12 11 10 1 1 1 1
2 13 16 9 1 2 2 1
3 14 15 8 1 2 2 1
4 5 6 7 1 1 1 1
2 14 第九题: QB打字母菱星怎么打啊?
A
A B A
A B C B A
A B C D C B A
A B C B A
A B A
A
2 15 第十题: 一个数列,已知它的前三个数是1,1,2.第四数是前三个数的和,
以后每个数分别都等于它前三个数之和
蜗牛爬树中ing...........................................
回复列表 (共98个回复)
11 楼
moz [专家分:37620] 发布于 2005-11-08 17:45:00
.
第一题:[size=5] [color=FF00FF] 关于质数的题目 [/color] [/size]
下面是一个求大于等于某数的质数的函数
短整形的范围内应该够用的了,
一般情况下计算时间不会超过一秒钟的.
------------------------------------------
defint a-z
FUNCTION NextZS% (a%)
static s$
IF Len(s$) = 0 THEN s$=mki$(2)+mki$(3)+mki$(5)+mki$(7)
e = len(s$)\2
z=cvi(right$(s$,2))
SELECT CASE a%
CASE IS <= 2
NextZS% = 2
CASE IS >= z
DO UNTIL z >= a
DO
if e>fre(" ")\4-10 or z>32765 then
print "Error! Out of Memory!"
exit function
endif
z = z + 2
if (z mod 3) and (z mod 5) then
i = 4
q = SQR(z)
DO
k=cvi(mid$(s$,i*2-1,2))
IF z MOD k = 0 THEN EXIT DO
i = i + 1
LOOP UNTIL k > q
end if
LOOP UNTIL k > q
e = e + 1
s$=s$+mki$(z)
'PRINT e, z
LOOP
NextZS% = z
CASE IS < z
l = 1
r = e
DO
m = (r + l) / 2
b=cvi(mid$(s$,m*2-1,2))
IF a > b THEN l = m ELSE r = m
LOOP UNTIL r - l < 2
NextZS%=cvi(mid$(s$,r*2-1,2))
END SELECT
END FUNCTION
--------------------------------------------
怎样利用这个函数?
比如说打印1-30000的质数表
for i%=1 to 30000
i%=NextZS%(i%)
print i%;
next
用不了一秒钟.
如果你需要更大范围的质数表,
你可以找我要,
我可以用电子邮件把我算得的质数表给你发过去,
已经算到八位数了.
具体使用参见:[url=http://www.programfan.com/club/showbbs.asp?id=90603&page=3]关于质数(素数)我有我主张[/url]
--------------------------------------------------
第二题:[size=5] [color=FF00FF] 关于分解质因数的题目 [/color] [/size]
这需要用到第一题的求质数的函数.
FUNCTION fenjie$ (x%)
if x%=0 then
fenjie$="0"
exit function
elseif x%<0 then
x%=-x%
k$="-1"
end if
j% = 2
DO UNTIL x% <= 1
IF x% MOD j% = 0 THEN
x% = x% / j%
IF k$=""THEN k$=LTRIM$(STR$(j%))ELSE k$=k$+"*"+LTRIM$(STR$(j%))
ELSE
j%=nextZS%(j%+1)
END IF
LOOP
fenjie$ = k$
END FUNCTION
12 楼
moz [专家分:37620] 发布于 2005-11-08 17:59:00
.
第三题:[size=5] [color=FF0000] 关于排列组合的题目 [/color] [/size]
--------------------------------------------------------------------
我把排列和组合的简单函数都放在这里了,
最明显的题目就是:
在M$中任选K个字母
input "M$,k:",M$,k
a$=right$(M$,k)
do
b$=a$
do
print b$,
loop until nextpl$(b$)=a$
loop until nextzh$(M$,a$)=""
end
'-----------------------------------------------------这是组合函数
FUNCTION nextzh$ (a$, b$)
fOR i = 1 TO LEN(b$)
IF INSTR(1, a$, MID$(b$, i, 1)) > i THEN
MID$(b$, 1, i) = MID$(a$, INSTR(1, a$, MID$(b$, i, 1)) - i, i)
nextzh$ = b$
EXIT FUNCTION
END IF
NEXT
END FUNCTION
'-----------------------------------------------------这是排列函数:
function nextpl$(a$)
l=len(a$)
for e=(l-1) to 1 step -1
if mid$(a$,e,1)<mid$(a$,e+1,1) then exit for
next
if e>0 then
FOR i = l TO (e + 1) STEP -1
IF MID$(a$, i, 1) > MID$(a$, e, 1) THEN EXIT FOR
NEXT
b$ = MID$(a$, i, 1)
MID$(a$, i, 1) = MID$(a$, e, 1)
MID$(a$, e, 1) = b$
end if
FOR i = (e + 1) TO (l + e + 1) \ 2
j = l + e + 1 - i
b$ = MID$(a$, i, 1)
MID$(a$, i, 1) = MID$(a$, j, 1)
MID$(a$, j, 1) = b$
NEXT
nextpl$=a$
end function
'--------------------------------------------------------
13 楼
moz [专家分:37620] 发布于 2005-11-08 18:21:00
.
第四题: [size=5] [color=FF00FF] 一个用"*"号列印的倒置三角形点编写好?? [/color] [/size]
*******
*****
***
*
作者:飞鸟12
发表时间:2005-10-30 16:02:00
----------------------------------------------------------------------------
FOR i = 4 TO 1 STEP -1
PRINT SPC(4 - i); STRING$(2 * i - 1, "*")
NEXT i
第五题: [size=5] [color=FF00FF] 编程输出菱形米字号 [/color] [/size]
作者:英子 发表时间:2005-11-3 15:27:00
*
***
*****
*******
*****
***
*
编程输出以上图形,要求有循环结构语句设计!
我还是抄袭飞鸟的答案:
FOR i = -3 TO 3
PRINT SPC(abs(i)); STRING$(2*(4-abs(i))-1, "*")
NEXT i
第六题: [size=5] [color=FF00FF] 蛇形矩阵 [/color] [/size]
作者:cixiqianjin 发表时间:2005-10-26 19:43:00
---------------------------------------------------------------------------
1 2 6
3 5 7
4 8 12
9 11 13
10 14 15
----------------------------------------------------------------------
input "h,l:",h,l
dim s(h,l)
xx=1
yy=-1
for i=1 to h*l
x=x+xx
y=y+yy
if x<1 or x>h or y<1 or y>l then swap xx,yy
if x>h then
x=h
y=y+2
endif
if y>l then
y=l
x=x+2
endif
if x<1 then x=1
if y<1 then y=1
s(x,y)=i
next
for i=1 to h
print
for j=1 to l
print using "###";s(i,j);
next j,i
第七题: [size=5] [color=FF00FF] 数字图形编程 [/color] [/size]
主题:一道编程题 作者:陈贺QB 发表时间:2005-8-19 13:01:00
---------------------------------------------------------------------------
3
323
32123
3210123
32123
323
3
-----------------------------------------------------------------------
作者:igdx 发表时间:2005-10-29 17:29:00 第 11 楼
for i=-3 to 3
print tab(24+3*abs(i));
for j=abs(i)-3 to 3-abs(i)
print chr$(48+abs(i)+abs(j));
next j
print
next i
----------------------------------------------------------------------
第八题: [size=5] [color=FF00FF] 两个数字图形的编程思路和方法!!! [/color] [/size]
作者:jwj001 发表时间:2005-10-24 14:43:00
-----------------------------------------------------------------------
第一个
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
第二个
1 1 1 1
1 2 2 1
1 2 2 1
1 1 1 1
------------------------------------------------------------------------
第一题的第一种方法:
DEFINT A-Z
INPUT a
b = a * 2
d = a
c = 1 - d
DIM h(a * a)
FOR i = b TO 2 STEP -1
FOR j = 1 TO i \ 2
c = c + d
g = g + 1
h(c) = g
NEXT
d = (a + 1 - ABS(d)) * (d \ a - d MOD a)
NEXT
FOR i = 1 TO a * a
PRINT USING "###"; h(i);
IF i MOD a = 0 THEN PRINT
NEXT
第一题的第二种解法:
DEFINT A-Z
INPUT a
IF a > 25 THEN END
CLS
b = a * 2
x1 = 1
y = 1
FOR i = b TO 2 STEP -1
FOR j = 1 TO i \ 2
x = x + x1
y = y + y1
g = g + 1
LOCATE x, y
PRINT USING "###"; g;
NEXT
IF x1 = 0 THEN
x1 = -y1 \ 3
y1 = 0
ELSE
y1 = x1 * 3
x1 = 0
END IF
NEXT
有了第一题,第二题就简单多了:
DEFINT A-Z
INPUT a
IF a > 25 THEN END
CLS
b = a * 2
x1 = 1
y = 1
FOR i = b TO 2 STEP -1
if x1=1 then g=g+1 '这里加一句就行了
FOR j = 1 TO i \ 2
x = x + x1
y = y + y1
'g = g + 1 这一句不要
LOCATE x, y
PRINT USING "###"; g;
NEXT
z1 = x1
x1 = -y1 \ 3
y1 = z1 * 3
NEXT
14 楼
moz [专家分:37620] 发布于 2005-11-08 18:36:00
.
第九题:[size=5] [color=00ff00] QB打字母菱星怎么打啊? [/color] [/size]
作者:江湖小虾米 发表时间:2005-10-25 20:21:00
----------------------------------------------------------------------------
A
A B A
A B C B A
A B C D C B A
A B C B A
A B A
A
--------------------------------------------------------
a$ = "D"
x% = ASC(a$ + CHR$(32)) - ASC("A")
FOR i% = 0 TO x% * 2
y% = x% - ABS(i% - x%)
PRINT SPACE$((x% - y%) * 2);
FOR j% = 0 TO y% * 2
PRINT CHR$(y% - ABS(j% - y%) + ASC("A")); CHR$(32);
NEXT
PRINT
NEXT
------------------------------------------
15 楼
moz [专家分:37620] 发布于 2005-11-08 18:39:00
.
第十题: [size=5] [color=FF00FF] 一个数列,已知它的前三个数是1,1,2.第四数是前三个数的和,以后每个数分别都等于它前三个数之和 [/color] [/size]
作者:英子 发表时间:2005-10-17 22:09:00
----------------------------------------------------------------------------
a=1 : b=1 : c=2
print a,b,c,
for i=1 to 27
c=a+b+c
print c,
b=c-a-b
a=c-a-b
next
----------------------------------------------------------------------------
16 楼
xiaophai [专家分:20] 发布于 2005-11-08 19:05:00
[em10]
17 楼
xiaophai [专家分:20] 发布于 2005-11-08 19:07:00
一个字:复杂
两个字:很复杂
三个字:非常复杂
四个字:不要太复杂
总之两个字:看不懂.[em8]
18 楼
飞鸟12 [专家分:2830] 发布于 2005-11-09 12:11:00
Moz的作业本 够乱的 :)
难道QB真的没什么希望了吗?!
19 楼
moz [专家分:37620] 发布于 2005-11-09 12:46:00
第十一题:[size=5] [color=FF00FF] 编程打印图形 [/color] [/size]
作者:haizzz 发表时间:2005-10-15 15:16:00
----------------------------------------------------------------------------
5
444
33333
2222222
111111111
作者:飞鸟12 发表时间:2005-10-16 7:47:00
----------------------------------------------------------------------------
INPUT "n <10:", n
FOR i = 1 TO n
PRINT SPC(n - i); STRING$(2 * i - 1, n - i + 49)
NEXT i
20 楼
moz [专家分:37620] 发布于 2005-11-11 13:46:00
.
第十三题: [size=5] [color=FF00FF] 今天是星期几的问题 [/color] [/size]
DEFLNG A-Z
FUNCTION week% (d$)
y = VAL(MID$(d$, 7, 4))
m = VAL(d$)
d = VAL(MID$(d$, 4, 2))
r = ((y MOD 4 = 0 AND y MOD 100 <> 0) OR (y MOD 400 = 0))
y = y - 1
day&=(y*365+y\4-y\100+y\400+VAL(MID$(" 0 31 59 90120151181212243273304334",m*3,3))+r*(m>2)+d)
week% = day& MOD 7
END FUNCTION
我来回复