Email:Dansnow@21cn.com OICQ:99118 (仅此一个号码)

特别邀请CCB管理论坛

论坛名称:溯雪论坛  版主:dansnow CCB http://www.netXeyes.com/


将文章加入您的收藏夹 将本页发给您的朋友 将本页输出到打印机
文章标题: 用QBasic生成字典的小技巧    搜索CCB所有的帖子 查看CCB的信息 回复时引用此贴 复制此贴内容 将本贴子内容通过email打包下载 给CCB留言 给CCB发信 访问CCB的主页 CCB的OICQ号码:9999 CCB的IP地址:61.143.154.* 删除此帖子

总是有人说现在学DOS没用了,其实,很多时候DOS还是很方便的,例如,如果你的机子还装有DOS6,里面有QBASIC,你就可以用它来非常方便地生成字典了,应该说,很多时候要写些小程序,用QBASIC来完成最简便快捷,而你不需要安装什么大型的复杂的编程语言程序,只要你装了DOS5/DOS6,用里面的QBASIC就行了,而且QBASIC的语法也不复杂,一般就算没学过的人,只要英语水平一般,都可以看得懂,我认为,QBASIC可以说是DOS时代最简单也最普及的一程脚本语言,虽然正式的QB4.5也算是一种编译语言,但用的人不多,用得多还是DOS带的这种只能解释的QBASIC1.0。

好了,不想说太多关于QBASIC的,本文也不是想详细介绍QBASIC(如果确实有很多人想了解QBASIC,我以后会考虑写一个关于QBASIC的教程),也不是详细讲解QBASIC的用法的,只是想如何介绍如何用QBASIC来生成字典,在也许是在没有字典生成工具的时候按照自己意思生成字典的最方便的一种方法吧。如果你的系统上没有安装DOS6,可以到还安装有DOS6的朋友的机子上拷贝QBASIC.*回来也可以用。

一、生成顺序的数字

OPEN "C:\NUMBER.DIC" FOR OUTPUT AS #1 '打开指定文件用于输出
FOR I = 1 TO 10000 '开始由1到10000的循环
PRINT #1, I '将I的值打印到#1,即上面指
'定的文件中
NEXT I '下一循环值
CLOSE '关闭所有打开的文件,这是
'个好习惯

很简单,是吧,这样文件中会生成
1
2
3
...
10
11
12
...
100
101
102
...
9999
10000
这样的序列,不过,有时有些地方需要位数一样长的序列,例如要:
00001
00002
...
00101
00102
这样的,那怎么办呢?方法有很多,不过主要有两种,先来看看第一种

方法同上面的例子,只是在生成后人为补上前面的0,即:
OPEN "C:\NUMBER.DIC" FOR OUTPUT AS #1
FOR I = 1 TO 10000
'-----------------------
A$=STR$(I) '先把I转换成字符串以便按字符串来运算
DO WHILE LEN(A$) < 5 '如果串的长度小于5,则循环
A$ = "0" + A$ '在字符串前面补0
LOOP '循环直到A$的长度足够
'------------------------
PRINT #1, A$ '这次打印的是A$,不是I
NEXT I
CLOSE


其实在这种情况下,还有更方便的方法,而且程序效率也更高:

OPEN "C:\NUMBER.DIC" FOR OUTPUT AS #1
FOR I = 100001 TO 110000 '注意这里变了,先产生六位的
A$ = STR$(I) '转为字符串
A$ = RIGHT$(A$,5) '再把左边一位丢掉,即取右边五个字符:)
PRINT #1, A$
NEXT I
CLOSE

二,日期字典的生成
很多人的信箱用的密码是生日,一般都是801125或19801125之类的形式,如果你用一个日期字典去扫描一下,你会吃惊用生日做字典的人的人数之多,下面再谈谈如何生成一个日期字典:

OPEN "C:\DATE.DIC" FOR OUTPUT AS #1
FOR Y=60 TO 80
FOR M=1 TO 12
FOR D=1 TO 31
A$=STR$(Y)+STR$(M)+STR$(D)
NEXT D
NEXT M
NEXT Y
CLOSE

看!其实多简单,这样一个包含1960至1980的所有有效日期的字典就做成了,如果想要八位的日期,只要把上面第二句中的FOR Y=60 TO 80改为FOR Y=1960 TO 1980就行了。当然,这样里面还包含有600231这个的不合理日期,如果你有兴趣,可以根据历法的算法把这些日期去掉,不过我觉得反正机器多扫几个也差不了多少,去不去都没所谓。

三,字母字典
这里再举个简单的字母方面的字典吧:
OPEN "C:\3CHR.DIC" FOR OUTPUT AS #1
FOR I = 65 TO 90
FOR J = 65 TO 90
FOR K = 65 TO 90
A$ = CHR$(I) + CHR$(J) + CHR$(K)
PRINT #1, A$
NEXT K
NEXT J
NEXT I

FOR I = 97 TO 122
FOR J = 97 TO 122
FOR K = 97 TO 122
A$ = CHR$(I) + CHR$(J) + CHR$(K)
PRINT #1, A$
NEXT K
NEXT J
NEXT I
CLOSE #1

这是一个生成三个字符的字母的组合,前半部分是生成三个大写字母的组合的,65到90就是A到Z的ASCII码,后半段是生成三个小写字母的组合的,97到122是a到z的ASCII码。为了简单起见,没有生成大小写混合的情况。

※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※

其实,一个好的字典档会是成功的一半,现在很多地方有字典生成器,去下一个当然是最简单最方便的,可是如果你刚好手头上没有字典生成器,又有QBASIC,上面说的就是一个解决的办法,当然,所举的都是些简单的例子,只是想起个抛砖引玉的作用,只要你对QBASIC有一定的了解,你一定能编出更完善更复杂的字典生成程序的,以上内容仅供参考。
——————————
《溯雪论坛发帖守则》

本论坛不欢迎如下类型的帖子,此类帖子会被关闭或删除,本人恕不回复。
一,溯雪完全无关
二,无内容或内容过于简单,标题无意义的
三,个人联系的帖子。和标题为“某某请进”之类的
四,要求代破密码的
五,同一帖子多次重复的,灌水的
六,政治敏感话题,语言不文明,攻击他人的
七,溯雪手册中已有详细介绍或前面帖子中已有大量回复的
离线
 MSIE 4.01 Windows 98
作者: CCB http://dansnow.yeah.net/ 时间:2000-09-24.07:46:12 来源: C.Space
Re:用QBasic生成字典的小技巧    搜索杀手所有的帖子 查看杀手的信息 回复时引用此贴 复制此贴内容 将本贴子内容通过email打包下载 给杀手留言 给杀手发信 访问杀手的主页 回复 Re:用QBasic生成字典的小技巧 杀手的IP地址:210.76.48.* 删除此帖子

好! 真的很感谢你啊·O·


你的语法VB中通用的,呵呵~~
——————————
欢迎高手交流!

欢迎来●黑色之睛●论坛,交流、学习!
离线
 MSIE 5.01 Windows 95
作者: 杀手 http://secueyes.myetang.com/ 时间:2000-09-24.09:41:01 来源:黑龙江

Re:用QBasic生成字典的小技巧    搜索CCB所有的帖子 查看CCB的信息 回复时引用此贴 复制此贴内容 将本贴子内容通过email打包下载 给CCB留言 给CCB发信 访问CCB的主页 CCB的OICQ号码:9999 回复 Re:用QBasic生成字典的小技巧 CCB的IP地址:61.143.154.* 删除此帖子

是的,我觉得现在要学编程的人,如果不是想以编程谋生的话,从QBASIC开始学还是很不错的,简单易学,成本低,只要有DOS6或QBASIC.*就行了,而且QB是结构化的,并且学了之后以后用VB的话,几句不用再学语法,只要学些可视化方面的内容就行了,所以我还是很喜欢QB,有时一些小的程序我还是喜欢用QB来做。
——————————
《溯雪论坛发帖守则》

本论坛不欢迎如下类型的帖子,此类帖子会被关闭或删除,本人恕不回复。
一,溯雪完全无关
二,无内容或内容过于简单,标题无意义的
三,个人联系的帖子。和标题为“某某请进”之类的
四,要求代破密码的
五,同一帖子多次重复的,灌水的
六,政治敏感话题,语言不文明,攻击他人的
七,溯雪手册中已有详细介绍或前面帖子中已有大量回复的
离线
 MSIE 4.01 Windows 98
作者: CCB http://dansnow.yeah.net/ 时间:2000-09-24.09:58:05 来源: C.Space

管理选项: 关闭主题 | 从精华区中移出 | 删除主题
本论坛言论纯属发表者个人意见,与 蓝色巴别塔 立场无关
论坛服务由 蓝色巴别塔 提供 技术支持:Yuzi工作室