主题:最强的算法
lz27
[专家分:300] 发布于 2007-09-22 19:34:00
1.不用/或\或mod写一个整数除法函数div1%()
function div1&(beichushu as long,chushu as long)
dim i as long
dim j as long
i=beichushu
do until i<chushu
i=i-chushu
j=j+1
loop
div1%=j
end function
不知道大家看懂了没有,以前我确实写过这样的一个程序,不过是用汇编语言,试试看它的速度...
2.输出图形
*
***
*****
***
*
print "*"
print "***"
print "*****"
print "***"
print "*"
end
\待续...
回复列表 (共5个回复)
沙发
Matodied [专家分:7560] 发布于 2007-09-23 18:27:00
(1)这不就是以减法代替除法吗?谁都会。
不过在被除数很大,除数很小的时候速度就很慢。
(2)有本事不直接打印。
CLS
FOR i=-2 TO 2
s=3-ABS(i)
FOR j=1 TO s*2-1:PRINT "*";:NEXT j:PRINT
NEXT i
END
板凳
QB小猪 [专家分:1200] 发布于 2007-09-25 14:05:00
(2).我可以做到人性化,很简单:
cls
input n 'n代表总行数
m=n\2
for i=-m to m:?string$(n-abs(i),*):next i
end
3 楼
Lovely哆啦 [专家分:1360] 发布于 2007-09-30 21:55:00
楼上的,你的程序出错了吧!
看我的:
CLS
INPUT N
M=N\2
FOR I=-M TO M
PRINT STRING(N-ABS(I)*2,"*")
NEXT I
END
你的每行个数弄错了!
4 楼
lz27 [专家分:300] 发布于 2007-10-02 11:05:00
针对1楼的(2)有本事不直接打印。
就解决一下调用int 0x10 的0x0e功能
'$include:'qb.bi'
dim shared reg as regtype
sub putchar(i as integer)
reg1.ax=&H0e*256+i
interruptx &h10,reg,reg
end sub
putchar(asc("*"))
putchar(10)
putchar(13)
for i=1 to 3
putchar(asc("*"))
next
putchar(10)
putchar(13)
for i=1 to 5
putchar(asc("*"))
next
putchar(10)
putchar(13)
for i=1 to 3
putchar(asc("*"))
next
putchar(10)
putchar(13)
putchar(asc("*"))
putchar(10)
putchar(13)
end
5 楼
lz27 [专家分:300] 发布于 2007-10-02 11:11:00
启动的时候用qb/l参数
貌似n年以前qb45发的帖子教的
我来回复