注册 登录
编程论坛 VB6论坛

求一段代码.要求比较精简的

lkflsj 发布于 2012-12-13 11:54, 256 次点击
在1-100中生成33个数组.每组3个数.每组数的组合是随机的.每个数组里的数不能重复出现.比如10出现在一个数组里.那么其它数组将不能有10了.程序结束后显示数组结果和剩下的一个数

[ 本帖最后由 lkflsj 于 2012-12-13 11:55 编辑 ]
1 回复
#2
风吹过b2012-12-13 13:36
Option Explicit

Private Sub Command1_Click()

Dim i As Long
Dim j As Long
Dim m As Long

Dim q(1 To 100) As Boolean
Dim jg(1 To 33, 1 To 3) As Long


For i = 1 To 100    '初始化未使用的数据
    q(i) = False
Next i

For i = 1 To 33
    For j = 1 To 3
        m = Int(Rnd() * 99) + 1         '产生一个数据
        Do While q(m)       '是否用过
            '第一种处理办法:重新产生,有可能会继续重复
            'm = Int(Rnd() * 99) + 1
            
            '第二种处理办法:向下搜索第一个未使用的数据
            m = m + 1
            If m > 100 Then m = 1
        Loop
        jg(i, j) = m        '使用该数据
        q(m) = True         '标记为使用了
    Next j
Next i

'显示结果
Cls
For i = 1 To 33
    For j = 1 To 3
    Print jg(i, j);
    Next j
    Print
Next i

'搜索并显示未使用的数据
For i = 1 To 100
    If Not q(i) Then
        Print i
    End If
Next i

End Sub
1