| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1017 人关注过本帖
标题:刚学VB,遇到问题,用VB怎么实现数字的组合呢?我怎么老出错
只看楼主 加入收藏
快乐黑宝
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-26
结帖率:0
收藏
已结贴  问题点数:10 回复次数:9 
刚学VB,遇到问题,用VB怎么实现数字的组合呢?我怎么老出错
我要用VB编一个程序,计算并输出01,02--33,这33个数字中抽出6个从小到大的组合,要求输出所有的组合,我编写了如下的程序,可是输出只有最后一个组,为什么呢?错在哪里,高手指点啊
Private Sub Command1_Click()
Dim a, b, c, d, e, f, g As Integer
Dim s As String
For a = 1 To 28
For b = a + 1 To 29
For c = b + 1 To 30
For d = c + 1 To 31
For e = d + 1 To 32
For f = e + 1 To 33
s = a & b & c & d & e & f
Text1.Text = s
Next
Next
Next
Next
Next
Next
End Sub
搜索更多相关主题的帖子: 计算 计算 
2011-12-27 11:55
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
收藏
得分:3 
TEXT1.MultiLine= True
将Text1.Text = s
修改成 Text1.Text = Text1.Text & VBCRLF & s

天道酬勤
2011-12-27 16:41
快乐黑宝
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-26
收藏
得分:0 
回复 2楼 apple0072011
我改完了,但是在试运转的时候总是卡住,只能结束退出,怎么回事呢?
修改完如下:Private Sub Command1_Click()
Dim a, b, c, d, e, f, g As Integer
Dim s As String
For a = 1 To 28
For b = a + 1 To 29
For c = b + 1 To 30
For d = c + 1 To 31
For e = d + 1 To 32
For f = e + 1 To 33
s = a & b & c & d & e & f
Text1.Text = Text1.Text & vbCrLf & s
Next
Next
Next
Next
Next
Next
End Sub
2011-12-28 16:33
hjycom
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-12-18
收藏
得分:3 
你的For...Next循环语句就使用错了
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer , d As Integer, e As Integer, f As Integer, g As Integer
Dim s As String
For a = 1 To 28
For b = a + 1 To 29
For c = b + 1 To 30
For d = c + 1 To 31
For e = d + 1 To 32
For f = e + 1 To 33
s = a & b & c & d & e & f
Text1.Text = Text1.Text & vbCrLf & s
Next f
Next e
Next d
Next c
Next b
Next a
End Sub
2011-12-28 22:16
hjycom
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2011-12-18
收藏
得分:0 
可能是你For 循环使用的太多了
2011-12-28 22:19
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
收藏
得分:0 
回复 3楼 快乐黑宝
程序没有问题,只是循环太多了,比较慢,耐心一点
Private Sub Command1_Click()
Dim a, b, c, d, e, f, g As Integer
Dim s As String
For a = 1 To 28
    For b = a + 1 To 29
        For c = b + 1 To 30
            For d = c + 1 To 31
                For e = d + 1 To 32
                    For f = e + 1 To 33
                        s = a & b & c & d & e & f
                        Text1.Text = Text1.Text & vbCrLf & s
                    Next
                Next
            Next
        Next
    Next
Next
End Sub

Private Sub Form_Load()

End Sub

Private Sub Text1_Change()
    Text1.SelStart = Len(Text1.Text)
    Text1.SelLength = 0
End Sub
这样就能看到结果了

[ 本帖最后由 apple0072011 于 2011-12-29 16:42 编辑 ]

天道酬勤
2011-12-29 16:37
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:3 
比起耐心,咱更推荐改用别的算法。
2011-12-29 16:46
apple0072011
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:249
专家分:989
注 册:2011-8-17
收藏
得分:0 
向bczgvip老师学习,有什么好的算法

天道酬勤
2011-12-29 16:54
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
呃,说是算法好像有点不妥吧。应该说效率。
把那固定的数据写道文件中,再添加到资源,之后直接加载,速度不就是上去了?
还有,这个问题楼主不说得更清楚,那么大家认为还有讨论的价值吗?
“不用考虑效率。”那就当我没说吧。只是咱的PC伤不起!
2011-12-30 14:29
老顽童989
Rank: 2
来 自:湖北武汉
等 级:论坛游民
威 望:1
帖 子:56
专家分:20
注 册:2011-5-19
收藏
得分:0 
呵呵,这是双色球的组合,用循环是很慢的,PC伤不起哦。如果是从500里取200的组合,你就没辙哦,我有更快的算法!!
    联系方法:E-mail  01ZZF@  给你发窗体文件

我喜欢编程
2012-07-14 11:31
快速回复:刚学VB,遇到问题,用VB怎么实现数字的组合呢?我怎么老出错
数据加载中...
 
   



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

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