回 帖 发 新 帖 刷新版面

主题:Moz的作业本

页码  楼层  题目
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 楼

.
第一题:[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 楼

.
第三题:[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 楼

.
第四题: [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 楼

.
第九题:[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 楼

.
第十题: [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 楼

[em10]

17 楼

一个字:复杂
两个字:很复杂
三个字:非常复杂
四个字:不要太复杂
总之两个字:看不懂.[em8]

18 楼

Moz的作业本 够乱的 :)

难道QB真的没什么希望了吗?!

19 楼

第十一题:[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 楼

.
第十三题: [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

我来回复

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