主题:请教一道数组题目
meizi177
[专家分:70] 发布于 2006-04-07 11:01:00
随机产生m(10<=m<=100)个[m,2*m-5]之间的随机数,找出重复的元素插入到数组b(b数组的初始状态中无任何元素,且要求最终b数组元素不能有重复)中,最后将b数组中的素数个数写入顺序文件"D.DAT"中.
回复列表 (共4个回复)
沙发
moz [专家分:37620] 发布于 2006-04-07 11:26:00
你要买彩票吗?
1. 根据m来定义两个数组
2. 先通过随机数获得第一个数组
3. 再通过重复检查传到第二个数组
4. 检查第二个数组中的质数
5. 写入文件
如果是作业,建议你循规蹈矩的把每一个要求都写好.
如果是应用,那么就要看清楚你的主要目的,中间几个步骤都可以合并.
板凳
meizi177 [专家分:70] 发布于 2006-04-08 08:55:00
谢谢moz,作好了,
只是不知道为什么? 用45版的qb编写的程序用记事本打开都是乱码!是什么原因呢?
3 楼
moz [专家分:37620] 发布于 2006-04-08 10:05:00
如果你说的是程序的话,
请在菜单 File - Save as ...
对话框里,有一个选项是 “Binary(二进制格式,快存快读)”
请选择另一个选项 “Text (文本格式什么什么的)”
4 楼
meizi177 [专家分:70] 发布于 2006-04-09 20:21:00
为了便于检查打印了三个数组, 只是没有写入文件,
CLS
PRINT "*****************原数组******************************"
m = INT(RND * 91 + 10)
DIM a(m), b(m)
FOR i = 1 TO m
a(i) = INT(RND * (m - 4) + m)
PRINT a(i);
NEXT i
PRINT
PRINT "****************符合条件的数**************"
k = 1
FOR i = 1 TO m - 1
f = 0
IF a(i) <> 0 THEN
FOR j = i + 1 TO m
IF a(i) = a(j) THEN a(j) = 0: f = 1
NEXT j
END IF
IF f = 1 THEN b(k) = a(i): k = k + 1
NEXT i
FOR i = 1 TO k - 1
PRINT b(i);
NEXT i
PRINT
PRINT "*****************素数**************************"
FOR i = 1 TO k - 1
f = 1
FOR j = 2 TO SQR(b(i))
IF b(i) MOD j = 0 THEN f = 0: EXIT FOR
NEXT j
IF f = 1 THEN PRINT b(i);
NEXT i
END
我来回复