例:
   854112232
   435345435
   534223626
   467547865
   473743777
   274388775
   474578547
   598258558
这样的一组数字,怎么用VB计算它们这一组数字的第一位\第二位\第三位\第四位\....出现最多的数字.比如说上面八组数字,第一位出现最多的是"4",第二位出现最多的数字是"7",依次推类.请各位大哥给予指点,小弟感激不尽!!!!

解决方案 »

  1.   

    如果数字比较大,直接用数字类型变量可能会有溢出的问题,建议使用字符串类型存放.
    这样就可以用MID函数来直接获得任意一位上的数字,然后将获得的该位数字放到一个数组中,然后再用一个数字来存放每个数字出现的次数(因为从0到9,因此这个数组只要10个元素就够了)最后对这个数组排续就可以得知出现最多的数字了.
    总结如下:1:获得每个数字的指定位的数字(如果是数字类型存放可以用除法+MOD得到该位数字,用字符串类型存放则可以用MID获得指定位数字)2:统计每个数字出现的频率(用一个0-9,一共10个元素的数组来存放每个数字的出现次数)3:将第2步中的统计数组排续,得到出现频率最高的那个数字就是这个思路了
      

  2.   

    各位大哥们,忘了说一下了,关于“WallesCai”回复的,我首先表示感谢,但这种思路我是有的,只是因为小弟初学,具体代码不知道怎么实现,抱歉!因为我的表达的不够清楚,谅解!
      

  3.   

    呵呵!首先要谢谢KiteGirl(小仙妹)的善意的提醒,我刚学开发没多久,用VB做这个只是想练习自己思路以及代码实现。彩票啊!没有玩过,刚听朋友说起彩票,所以就想做这个程序来试试自己的能力,只是能力不及,所以来问问。不必多虑!谢啦!不过。还继续请各位多多支持小弟!本人感激不尽!!!!
      

  4.   

    说白了,就是要代码!
    Dim str(7) As String
    Dim intNum(9) As Integer
    Private Sub Command1_Click()
        str(0) = "854112232"
        str(1) = "435345435"
        str(2) = "534223626"
        str(3) = "467547865"
        str(4) = "473743777"
        str(5) = "274388775"
        str(6) = "474578547"
        str(7) = "598258558"    Dim intStart As Integer
        intStart = 1  'Start char
        Call SumNo(intStart)    Dim intLoop As Integer
        Dim intMax As Integer
        Dim intIndex As Integer
        '/initial
        intMax = intNum(0)
        intIndex = 0
        For intLoop = 0 To 9
            If intMax < intNum(intLoop) Then
                intMax = intNum(intLoop)
                intIndex = intLoop
            End If
        Next
      MsgBox intIndex
    End SubPrivate Sub SumNo(BitNO As Integer)
        Dim strXx As String * 1
        Dim intLoop As Integer
        For intLoop = 0 To 7
            strXx = Mid$(str(intLoop), BitNO, 1)
            intNum(strXx) = intNum(strXx) + 1
        Next
    End Sub