博文

QBASIC 替换递归的快速排序(2005-08-18 18:28:00)

摘要:m% = 16000 DIM SHARED s(m%) RANDOMIZE TIMER FOR i% = 1 TO m%     s(i%) = RND NEXT QSort3 1, m% 调用排序 --------------------------------------------------- 第一种: 标准的递归形式 SUB QuickSort (l%, h%) IF l% < h% THEN   IF h% - l% = 1 THEN      IF s(l%) > s(h%) THEN SWAP s(l%), s(h%)   ELSE      r% = INT(RND * (h% - l% + 1)) + l%      SWAP s(h%), s(r%)      p = s(h%)      i% = l%      j% = h%      DO       DO WHILE (i% < j%) AND (s(i%) <= p)          i% = i% + 1       LOOP       DO WHILE (j% > i%) AND (s(j%) >= p)          j% = j% - 1       LOOP   &nb......

阅读全文(3603) | 评论:0

密码的单向函数(2005-08-17 15:06:00)

摘要:我对密码没有什么研究,只是听说有单向检测的密码函数,我就从字面上的解释去试试凭空想一个出来了. 1. 用键盘输入一串密码 2. 利用它的ASC码做运算 3. 利用ASC码乘上一个质数来计算一个值作为保存 初步的试算是:比如密码 "ABC" 储存一个密码值= A*2 + B*5 + C*7 +...... 检查密码的时候依此计算与密码值比较是否相符. 但具体如何降低巧合的机率,还需要进一步的优化 input "请输入密码:",a$ m&=1 n$="  2  3  5  7  13 17 19 23 29 31 37 39 41 ......" for i%=1 to len(a$)    m&=m&+asc(mid$(a$,i%,1)*val(mid$(n$,i*3,3)) next 密码值=m&......

阅读全文(7223) | 评论:0

关于文本方式下屏幕内容的保存(2005-08-05 13:38:00)

摘要:我很少搞图形的,图形屏幕也就用那两句get,put来保存了, 我只是说说文本方式的保存。 因为以前为自己做程序的时候老是不知道该怎么办, 因为全屏幕需要处理的数据比较少,就先说说全屏幕处理了. A 我第一次做的程序是用screen语句的   保存     dim s(25,80,1)     for i=1 to 25       for j=1 to 80         s(i,j,0)=screen(i,j,0)         s(i,j,1)=screen(i,j,1)     next j,i     恢复     locate 1,1     for i=1 to 25       for j=1 to 80         color s(i,j,1) mod 16, s(i,j,1)\16         print chr$(s(i,j,0);     next j,i B   后面,我知道了&HB800,我就利用BSAVE,BLOAD了     sub scrf(f$)     def seg =&HB800     if f$="" then        f$="~&q......

阅读全文(7152) | 评论:0

关于日期(公历)和星期几的问题(2005-08-03 11:47:00)

摘要:print "今天是星期";mid$("日一二三四五六",(Date2Number&(date$) mod 7)*2+1,2) DEFLNG A-Z FUNCTION Date2Number& (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 Date2Number& = (y * 365 + y \ 4 - y \ 100 + y \ 400 + VAL(MID$("    0 31 59 90120151181212243273304334", m * 3, 3)) + r * (m > 1) + d) END FUNCTION deflng a-z FUNCTION Number2Date$ (day&) d$ = "00-00-0000" y = day& / 365.254 DO   n = day& - (y * 365 + y \ 4 - y \ 100 + y \ 400)   IF n < 0 THEN y = y - 1 LOOP WHILE n < 0 y = y + 1 r = ((y MOD 4 = 0 AND y MOD 100 <> 0) OR (y MOD 400 = 0)) FOR m = 12 TO 1 STEP -1 k = VAL(MID$("    0 31 59 90120151181212243273304334", m * 3, 3)) + r * (m > 1) IF n > k THEN EXIT FOR NEXT d = n - k MID$(d$, 1, 1) = CHR$(48 + m \ 10) MID$(d$, 2, 1) = CHR$(48 + m MOD ......

阅读全文(4337) | 评论:4

关于质数(素数)(2005-08-03 11:39:00)

摘要:do input Q& if Q&=IsZhiShu&(Q&) then print Q&;"是质数" loop while Q& FUNCTION IsZhiShu& (a&) f% = FREEFILE OPEN "质数表" FOR RANDOM AS #f% LEN = LEN(a&) IF LOF(f%) = 0 THEN      z& = 2      PUT #f%, 1, z&      z& = 3      PUT #f%, 2, z& END IF e& = LOF(f%) \ LEN(a&) GET #f%, e&, z& SELECT CASE a& CASE IS <= 2   IsZhiShu& = 2 CASE IS >= z&   DO UNTIL z& >= a&     DO       z& = z& + 2       q& = SQR(z&)       i& = 2       DO         GET #f%, i&, k&         IF z& MOD k& = 0 THEN EXIT DO    &nb......

阅读全文(3891) | 评论:0