| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖, 1 人收藏
标题:刚学VB 用学过的知识写了一段程序碰到个问题 求教~!
只看楼主 加入收藏
ndslpsp82
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-2-26
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:6 
刚学VB 用学过的知识写了一段程序碰到个问题 求教~!
Private Sub Command1_Click()
Text1.FontSize = 20
Text2.FontSize = 20
Text3.FontSize = 20
Text4.FontSize = 20
Text5.FontSize = 20
Text6.FontSize = 20
Text7.FontSize = 20
Dim a, b, c, d, e, f, g As Integer
Randomize
  a = Int((33 * Rnd) + 1)
  b = Int((33 * Rnd) + 1)
  c = Int((33 * Rnd) + 1)
  d = Int((33 * Rnd) + 1)
  e = Int((33 * Rnd) + 1)
  f = Int((33 * Rnd) + 1)
  g = Int((16 * Rnd) + 1)
  Text1 = a
  Text2 = b
  Text3 = c
  Text4 = d
  Text5 = e
  Text6 = f
  Text7 = g
End Sub
大家不要笑话啊
不好意思 可能看上去很繁琐  刚学几天  试着写了  运行正确  但是有一点
如何让  text1——text6  显示的数据不重复
也就是如果  text1 有了1  后面5个不可以有1
搜索更多相关主题的帖子: 知识 
2010-02-26 20:33
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:4 
那就必须校验已经生成的数。

无知
2010-02-26 23:55
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:4 
希望你能看懂. 好好学.

--------------------------------
Private Sub Command1_Click()
Text1.FontSize = 20
Text2.FontSize = 20
Text3.FontSize = 20
Text4.FontSize = 20
Text5.FontSize = 20
Text6.FontSize = 20
Text7.FontSize = 20
'DIM 定义变量时,每个变量都要明确写出类型来,不写的均为 Variant
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer, g As Integer

Randomize

  a = Int((33 * Rnd) + 1)           '产生 a
  
  Do                                '循环开始
    b = Int((33 * Rnd) + 1)         '产生b
  Loop While b = a                  '如果 b=a 那么继续循环,否则循环结束
  
  Do
  c = Int((33 * Rnd) + 1)
  Loop While c = b Or c = a         '如果 c=b  或者 c=a 那么继续循环,否则循环结束
  
  Do
  d = Int((33 * Rnd) + 1)
  Loop While d = c Or d = b Or d = a
  
  Do
  e = Int((33 * Rnd) + 1)
  Loop While e = d Or e = c Or e = b Or e = a
  
  Do
  f = Int((33 * Rnd) + 1)
  Loop While f = e Or f = e Or f = d Or f = c Or f = b Or f = a
  
  Do
  g = Int((16 * Rnd) + 1)
  Loop While g = f Or g = e Or g = e Or g = d Or g = c Or g = b Or g = a
  
  Text1 = a
  Text2 = b
  Text3 = c
  Text4 = d
  Text5 = e
  Text6 = f
  Text7 = g
End Sub


授人于鱼,不如授人于渔
早已停用QQ了
2010-02-27 10:20
allanwu244
Rank: 2
等 级:论坛游民
帖 子:134
专家分:20
注 册:2007-7-24
收藏
得分:4 
学习了
版主的解答是很容易理解
我想再问两个问题
Txet1-7能否设置成一个循环?譬如用控件数组?
Do Loop While 能否有一个更简便的循环?循环嵌套..?
我是真的不懂,希望得到解答.
                                                      谢谢

边学边做,天天向上.
2010-02-27 12:30
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
收藏
得分:4 
程序代码:
Option Explicit
Private Const COUNT As Long = 6
Sub main()
    Dim data(COUNT) As Long                 '6个数的数组
    Dim i As Long, j As Long                '两个用于计数和循环的变量
    Dim tmp As Long                         '临时值
    Randomize                               '初始化种子
    Do While (i < COUNT)                    '开始循环,直到取到6个不同的值
        tmp = CLng((33 * Rnd) + 1)          '取一个随机值
        If i > 0 Then                       '判断是否有重复
            For j = 0 To i
                If data(j) = tmp Then Debug.Print "重复值:" & tmp: GoTo NextLoop    '有重复则重新循环取值
            Next
        End If
        data(i) = tmp                       '取到一个值
        i = i + 1                           '计数加1
NextLoop:                                   '继续下一次循环
    Loop
    For i = 0 To COUNT - 1                  '输出
        Debug.Print data(i)
    Next
End Sub
简便的就这样.如果还要简化的话,可以用Dictionary对象,还可以去掉中间的那个循环
2010-02-27 16:23
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
回楼上的:新手不要建议他们 使用 goto 命令

程序代码:
Option Explicit
Private Sub Command1_Click()
Dim a As Integer, d As Integer
Dim b(6) As Integer
Dim c As Boolean
Randomize
For a = 0 To 6                          '7个数, 0 - 6
    Text1(a).FontSize = 20              '初始化字体大小   
    Do
        b(a) = Int((33 * Rnd) + 1)          '产生1个
        c = False                           '假设不重复
        For d = 0 To a - 1                  '搜索与前面的数
            If b(d) = b(a) Then             '如果相同
                c = True                    '设置有重复
                Exit For                    '发现有重复,不用再继续搜索了
            End If
        Next d
    Loop While c                        '如果有重复,则继续产生随机数   
    Text1(a).Text = b(a)                '显示结果
Next a
End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2010-02-27 16:58
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:4 
程序代码:
Private Function GetRndArrayNumber(ByVal nCount&, vRet, ByVal nMaxRnd&, Optional ByVal nMinRnd& = 0) As Boolean
    Randomize
    If 0 = nCount& Then Exit Function
    nCount& = Abs(nCount&)
    Dim i&, j&, n&(): ReDim n&(nCount& - 1)
    For i = 0 To nCount& - 1
repeat: n(i) = Int((nMaxRnd& - nMinRnd& + 1) * Rnd + nMinRnd&)
        For j = 0 To i - 1
            If n(j) = n(i) Then GoTo repeat
        Next j
    Next i
    vRet = n
    GetRndArrayNumber = True
End Function

汗,当小孩子呵护呀!~
2010-02-27 21:34
快速回复:刚学VB 用学过的知识写了一段程序碰到个问题 求教~!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060969 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved