一组数字求每个数字出现的次数的vb代码

首先感谢你的支持。为什么查询只能在0-9之间,我想在0-99之间查询.另外想把查询得数据显示在Text1.Text里(只显示排名前十位的)。数据的输入最好在Text1里进... 首先感谢你的支持。为什么查询只能在0-9之间,我想在0-99之间查询.另外想把查询得数据显示在Text1.Text里(只显示排名前十位的)。数据的输入最好在Text1里进行
且数据与数据之间自动添加空格和换行。真诚希望你在百忙之中给鄙人一答复。最后祝:身体健康,万事如意,合家欢乐.........好人一生平安!!!!!!
请详细解释下面代码的意思合用法,放到vb中出现问题如“无效的外部过程”
VERSION 5#
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 915
ClientLeft = 60
ClientTop = 345
ClientWidth = 8460
LinkTopic = "Form1"
ScaleHeight = 915
ScaleWidth = 8460
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command1
Caption = "Do Now"
Height = 375
Left = 7200
TabIndex = 1
Top = 240
Width = 1095
End
Begin VB.TextBox Text1
Height = 375
Left = 120
TabIndex = 0
Top = 240
Width = 6735
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Const MaxNum = 99 ' 定义最大数字
Dim arrNumber() As Integer
展开
 我来答
iq0050
2007-07-27 · TA获得超过119个赞
知道答主
回答量:154
采纳率:0%
帮助的人:0
展开全部
"自动添加空格和换行"说的太模糊了,怎么自动?如何判断你一个数字是输入完了?你的输入存在1位和2位数,无法自动加空格呀.
另外,你说的查询指的是什么?查询的数据指的是什么?显示的方法是什么(一行一个,还是中间空格)?输入的数据怎么处理(你的输入和输了都在TEXT1.text)?

Form1.frm
----------------------------------------------------------
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 915
ClientLeft = 60
ClientTop = 345
ClientWidth = 8460
LinkTopic = "Form1"
ScaleHeight = 915
ScaleWidth = 8460
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command1
Caption = "Do Now"
Height = 375
Left = 7200
TabIndex = 1
Top = 240
Width = 1095
End
Begin VB.TextBox Text1
Height = 375
Left = 120
TabIndex = 0
Top = 240
Width = 6735
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Const MaxNum = 99 ' 定义最大数字
Dim arrNumber() As Integer

Private Sub Command1_Click()
Dim strInput As String
strInput = Text1.Text

' 每两位取一个数,根据值在数组相应位上数量加1
Dim arrInputNumber
arrInputNumber = Split(Text1.Text, " ")

' 判断数字输入次数,存入数组
Dim i As Integer
For i = LBound(arrInputNumber) To UBound(arrInputNumber)
arrNumber(arrInputNumber(i)) = arrNumber(arrInputNumber(i)) + 1 ' 输入的每个数字,在数组的相应索引位上+1
Next i

' 输出结果
Text1.Text = ""

' 数组中值最大的10位的索引,即为所求的结果
' 输出方法:找出最大值,输出索引,值为0.再找最大值,输出索引,.....直到输出10个数为止.
' 若最多出现的次数不足10,如只输入(0102),则只按顺序输出输入的数.
Dim OutputCounter As Integer '输出的数字统计
OutputCounter = 0
While OutputCounter < 10 And HaveNumber
Dim MaxIndex As Integer
MaxIndex = 0
For i = LBound(arrNumber) To UBound(arrNumber)
If arrNumber(i) > arrNumber(MaxIndex) Then
MaxIndex = i
End If
Next i
If Text1.Text = "" Then
Text1.Text = Format(MaxIndex, "00")
Else
Text1.Text = Text1.Text & " " & Format(MaxIndex, "00")
End If
arrNumber(MaxIndex) = 0
OutputCounter = OutputCounter + 1
Wend
End Sub

Private Sub Form_Load()
ReDim arrNumber(0 To MaxNum) As Integer ' 按最大数字,重定义数组,最终数组每元素的值就是相应位数字出现的次数
Dim i As Integer
For i = LBound(arrNumber) To UBound(arrNumber)
arrNumber(i) = 0
Next i
End Sub

' 只允许输入数字
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Len(Text1.Text) Mod 3 = 2 Then
Text1.Text = Text1.Text & " "
Text1.SelStart = Len(Text1.Text)
End If
If KeyAscii = 8 Then
Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
Text1.SelStart = Len(Text1.Text)
End If
If Not (IsNumeric(Chr(KeyAscii)) Or KeyAscii = 8) Then
KeyAscii = 0
End If

End Sub

' 判断是否还存在输入的数字
Private Function HaveNumber() As Boolean
HaveNumber = False
Dim i As Integer
For i = LBound(arrNumber) To UBound(arrNumber)
If arrNumber(i) <> 0 Then
HaveNumber = True
Exit Function
End If
Next i
End Function

看到我给你回复的消息没?不要把这些代码粘到VB里.
打开一个"记事本"程序,把从
VERSION 5.00
开始向下的代码,粘到记事本里,然后保存文件,名字为"Form1.frm"

打开VB新建一个工程.把新建工程里自带的Form1.frm删除,把记事本新保存的Form1.frm文件添加进去就行了.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式