vb中字母排列组合输出函数

Option Explicit

Private Sub Command1_Click()
    Dim Num, I, J, Temp, Len1 As Long
    Dim FileNO As Long
    Dim Count As Long
    Dim str, strTemp, strArr() As String, Arr() As String
    '********************************************************************
    str = InputBox("请输入字符串,数字或者字母组成:", "提示")
    
    If str = "" Then Exit Sub
    
    '===by gary20130208
    'Len1 = Len(str): ReDim strArr(Len1)
    strArr() = Split(str, " ")
    Len1 = UBound(strArr) + 1
    
'    For I = 1 To Len1
'        strArr(I - 1) = Mid(str, I, 1)
'    Next
    '===
    
    '********************************************************************
    Count = 1
    For I = 2 To Len1
        Count = Count * I
    Next
    ReDim Arr(Count)
    '*********************************************************************
    Randomize
    For I = 0 To Count - 1
        '******************************************
Lab2:   strTemp = ""
        Num = 0
        Do While Num < Len1
Lab1:       Temp = Int(Rnd * Len1)
            If InStr(strTemp, CStr(Temp)) Then GoTo Lab1
            strTemp = strTemp & Temp
            Num = Num + 1
        Loop
        '******************************************
        For J = 0 To UBound(Arr)
            If Arr(J) = strTemp Then GoTo Lab2
        Next
        Arr(I) = strTemp
    Next
    '**********************************************************************
    FileNO = FreeFile
    Open "e:\字符组合.txt" For Output As #FileNO
    '**************************
    For I = 0 To Count - 1
        strTemp = ""
        For J = 1 To Len1
            strTemp = strTemp & strArr(CLng(Mid(Arr(I), J, 1))) & ","
        Next
        Print #FileNO, Left(strTemp, Len(strTemp) - 1)
    Next
    '**************************
    Close #FileNO
End Sub

这是网上找到的一段代码(vb 6.0版本),原来是算单个字符有多少种组合。我在这基础上做了下修改。

比如:A B C D E ,这样就总共有120种组合字符,然后输出到文本文件。

转载于:https://www.cnblogs.com/garyxiao/archive/2013/02/08/2909280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
20200420使用VB6.0求33选6的全组合数(解决变长字符串超过1MB之后写入的问题) 最近需要求组合数(买双色球生成号码用^_) 以前在大学专门学习过VB6.0,今后会迁移到VC6.0。 预计会在2020.5.1强化一下MFC,就可以了! 我也不知道边长字符串到底写入多少回崩溃。(现阶段人也不年轻了,也没有这么多时间去研究了!有兴趣的同学跟帖告诉我一下,在此谢过了!) ​ VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 12825 ClientLeft = 450 ClientTop = 615 ClientWidth = 14535 LinkTopic = "Form1" ScaleHeight = 12825 ScaleWidth = 14535 Begin VB.TextBox Text2 BeginProperty Font Name = "宋体" Size = 14.25 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 12255 Left = 600 MultiLine = -1 'True ScrollBars = 3 'Both TabIndex = 1 Top = 360 Width = 6135 End Begin VB.CommandButton Command2 Caption = "求33选6的全组合数" BeginProperty Font Name = "宋体" Size = 26.25 Charset = 134 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 975 Left = 8040 TabIndex = 0 Top = 5520 Width = 4935 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub Command1_Click() End Sub Private Sub Command2_Click() Dim h1%, h2%, h3%, h4%, h5%, h6% Dim h6sum% Dim i% Dim j% Dim temp% Dim count% Dim guangyayuan(35) As Integer Dim wutongshan(35) As Integer Dim guangyayuan6(35) As Integer Dim hong1%, hong2%, hong3%, hong4%, hong5%, hong6% Dim strWj As String ' For hong1 = 1 To 10 ' 'For hong2 = hong1 To 11 ' For hong2 = hong1 + 1 To 11 ' For hong3 = hong2 + 1 To 12 ' For hong4 = hong3 + 1 To 13 ' For hong5 = hong4 + 1 To 14 ' For hong6 = hong5 + 1 To 15 For hong1 = 1 To 28 For hong2 = hong1 + 1 To 29 For hong3 = hong2 + 1 To 30 For hong4 = hong3 + 1 To 31 For hong5 = hong4 + 1 To 32 For hong6 = hong5 + 1 To 33 'Text2 = Text2 & hong1 & "," & hong2 & "," & hong3 & "," & hong4 & "," & hong5 & "," & hong6 & vbCrLf strWj = strWj & hong1 & "," & hong2 & "," & hong3 & "," & hong4 & "," & hong5 & "," & hong6 & vbCrLf Next hong6 Next hong5 Next hong4 Next hong3 Next hong2 Next hong1 'Close #2 'Open "d:\ScoreW2.txt" For Output As #1 'Open "d:\求12选3的全组合数.txt" For Output As #1 Open "d:\求33选6的全组合数.txt" For Output As #1 'Write #1, Text2 Write #1, strWj Close #1 End Sub 我这里采用了一个最简单粗暴的做法,将每一组的六个号码立即写入磁盘。(具体交给操作系统了) 求33选6的全组合数.txt 大概23MB。 大致内容: "1,2,3,4,5,6 " "1,2,3,4,5,7 " "1,2,3,4,5,8 " "1,2,3,4,5,9 " "1,2,3,4,5,10 " "1,2,3,4,5,11 " "1,2,3,4,5,12 " "1,2,3,4,5,13 " "1,2,3,4,5,14 " "1,2,3,4,5,15 " "1,2,3,4,5,16 " "1,2,3,4,5,17 " "1,2,3,4,5,18 " "1,2,3,4,5,19 " "1,2,3,4,5,20 " "1,2,3,4,5,21 " "1,2,3,4,5,22 " "1,2,3,4,5,23 " "1,2,3,4,5,24 " "1,2,3,4,5,25 " "1,2,3,4,5,26 …… " "25,28,30,31,32,33 " "25,29,30,31,32,33 " "26,27,28,29,30,31 " "26,27,28,29,30,32 " "26,27,28,29,30,33 " "26,27,28,29,31,32 " "26,27,28,29,31,33 " "26,27,28,29,32,33 " "26,27,28,30,31,32 " "26,27,28,30,31,33 " "26,27,28,30,32,33 " "26,27,28,31,32,33 " "26,27,29,30,31,32 " "26,27,29,30,31,33 " "26,27,29,30,32,33 " "26,27,29,31,32,33 " "26,27,30,31,32,33 " "26,28,29,30,31,32 " "26,28,29,30,31,33 " "26,28,29,30,32,33 " "26,28,29,31,32,33 " "26,28,30,31,32,33 " "26,29,30,31,32,33 " "27,28,29,30,31,32 " "27,28,29,30,31,33 " "27,28,29,30,32,33 " "27,28,29,31,32,33 " "27,28,30,31,32,33 " "27,29,30,31,32,33 " "28,29,30,31,32,33 " 读者可能很容易看到会多一个英文的引号,这个怎么解决呢? https://zhidao.baidu.com/question/7939187.html 用vb读写文件时,写成的文本文件每行都有双引号,怎么才能把双引号去掉啊? 怎样写的文件,才能没有双引号啊? wangtk1982 2006-05-30 使用print语句 不用用write 本回答由提问者推荐 3 评论(1) 分享 举报 monkywin 2006-05-30 用print写入文件。 用input读取文本。 修正之后: VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 12825 ClientLeft = 450 ClientTop = 615 ClientWidth = 14535 LinkTopic = "Form1" ScaleHeight = 12825 ScaleWidth = 14535 Begin VB.TextBox Text2 BeginProperty Font Name = "宋体"
20200420使用VB6.0求12选3的全组合数 最近需要求组合数(买双色球生成号码用^_) 以前在大学专门学习过VB6.0,今后会迁移到VC6.0。 预计会在2020.5.1强化一下MFC,就可以了! Option Explicit Private Sub Command1_Click() End Sub Private Sub Command2_Click() Dim h1%, h2%, h3%, h4%, h5%, h6% Dim h6sum% Dim i% Dim j% Dim temp% Dim count% Dim guangyayuan(35) As Integer Dim wutongshan(35) As Integer Dim guangyayuan6(35) As Integer Dim hong1%, hong2%, hong3%, hong4%, hong5%, hong6% Dim strWj As String For hong1 = 1 To 10 'For hong2 = hong1 To 11 For hong2 = hong1 + 1 To 11 For hong3 = hong2 + 1 To 12 'Text2 = Text2 & hong1 & "," & hong2 & "," & hong3 & "," & hong4 & vbCrLf Text2 = Text2 & hong1 & "," & hong2 & "," & hong3 & vbCrLf Next hong3 Next hong2 Next hong1 Close #2 'Open "d:\ScoreW2.txt" For Output As #1 Open "d:\Çó12Ñ¡3µÄÈ«×éºÏÊý.txt" For Output As #1 Write #1, Text2 'Write #1, strWj Close #1 End Sub 使用VB6.0求12选3的全组合数: "1,2,3 1,2,4 1,2,5 1,2,6 1,2,7 1,2,8 1,2,9 1,2,10 1,2,11 1,2,12 1,3,4 1,3,5 1,3,6 1,3,7 1,3,8 1,3,9 1,3,10 1,3,11 1,3,12 1,4,5 1,4,6 1,4,7 1,4,8 1,4,9 1,4,10 1,4,11 1,4,12 1,5,6 1,5,7 1,5,8 1,5,9 1,5,10 1,5,11 1,5,12 1,6,7 1,6,8 1,6,9 1,6,10 1,6,11 1,6,12 1,7,8 1,7,9 1,7,10 1,7,11 1,7,12 1,8,9 1,8,10 1,8,11 1,8,12 1,9,10 1,9,11 1,9,12 1,10,11 1,10,12 1,11,12 2,3,4 2,3,5 2,3,6 2,3,7 2,3,8 2,3,9 2,3,10 2,3,11 2,3,12 2,4,5 2,4,6 2,4,7 2,4,8 2,4,9 2,4,10 2,4,11 2,4,12 2,5,6 2,5,7 2,5,8 2,5,9 2,5,10 2,5,11 2,5,12 2,6,7 2,6,8 2,6,9 2,6,10 2,6,11 2,6,12 2,7,8 2,7,9 2,7,10 2,7,11 2,7,12 2,8,9 2,8,10 2,8,11 2,8,12 2,9,10 2,9,11 2,9,12 2,10,11 2,10,12 2,11,12 3,4,5 3,4,6 3,4,7 3,4,8 3,4,9 3,4,10 3,4,11 3,4,12 3,5,6 3,5,7 3,5,8 3,5,9 3,5,10 3,5,11 3,5,12 3,6,7 3,6,8 3,6,9 3,6,10 3,6,11 3,6,12 3,7,8 3,7,9 3,7,10 3,7,11 3,7,12 3,8,9 3,8,10 3,8,11 3,8,12 3,9,10 3,9,11 3,9,12 3,10,11 3,10,12 3,11,12 4,5,6 4,5,7 4,5,8 4,5,9 4,5,10 4,5,11 4,5,12 4,6,7 4,6,8 4,6,9 4,6,10 4,6,11 4,6,12 4,7,8 4,7,9 4,7,10 4,7,11 4,7,12 4,8,9 4,8,10 4,8,11 4,8,12 4,9,10 4,9,11 4,9,12 4,10,11 4,10,12 4,11,12 5,6,7 5,6,8 5,6,9 5,6,10 5,6,11 5,6,12 5,7,8 5,7,9 5,7,10 5,7,11 5,7,12 5,8,9 5,8,10 5,8,11 5,8,12 5,9,10 5,9,11 5,9,12 5,10,11 5,10,12 5,11,12 6,7,8 6,7,9 6,7,10 6,7,11 6,7,12 6,8,9 6,8,10 6,8,11 6,8,12 6,9,10 6,9,11 6,9,12 6,10,11 6,10,12 6,11,12 7,8,9 7,8,10 7,8,11 7,8,12 7,9,10 7,9,11 7,9,12 7,10,11 7,10,12 7,11,12 8,9,10 8,9,11 8,9,12 8,10,11 8,10,12 8,11,12 9,10,11 9,10,12 9,11,12 10,11,12 "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值