VB题目 源码
- 提问者网友:聂風
- 2021-05-06 17:36
设计一个VB6小程序,在文本框输入或粘贴一段数字,有的数字后面带括号,且无论该小括号与前面的数字有多远,即使有换行,小括号内的数字都属于左边离它最近的那串数字的次数,而数字后面没有小括号的要被视作有小括号,只不过里面的数字是1而已。注意小括号为英文输入法的小括号(),不是中文输入法的(),同时分开数字的逗号也是英文输入法下的。点击按钮后将所有数字的次数计算出来,生成.txt格式的文本弹出(即使用Shell "C:\WINDOWS\NOTEPAD.EXE " & App.Path & "\数字总次数.txt", 1),在文本内,数字的次数按从高到低顺序排列,次数一样的列在一起。下面的举例包含上面所说的所有情况:
2(6),08(4),15(3),9(2),36(说明:本列数字小括号内的数字全部紧跟左侧数字,2有6次,0和8 有4次,1和5都是3次,9是2次,3与6都是1次,7没出现)
9 (8),1 (7),23458 (5),0(4),6(说明:本列数字与次数有空格)
3(9),48(8),6
(7),5
(6),09(5),1(4),2(2)(说明:本列有换行,如6有7次,5有6次)
169(6),045(5),2(3),38(2)
则最终结果,在弹出的.txt文件中显示:
9(21),1(20),58(19),04(18),3(17),2(16),6(15),7(0),
注意上面的7没有出现,所以次数是0次,要求自己验证通过!不要错误的还发!!万分感谢。如果难以实现,我可以输入得规范些,如将1次的也带括号,前面的数字与后面的括号可以没有空格,但是换行是必要的。
- 五星知识达人网友:怀裏藏嬌
- 2021-05-06 18:22
Option Explicit
Private Type Number
Nfig As String
Nnum As Integer
End Type
Private s As String
Private a(0 To 9) As Number
Private Sub Command1_Click()
Dim num As Integer
Dim i, j, k As Integer
Dim t, fig As String
For i = 0 To 9
a(i).Nfig = i
a(i).Nnum = 0
Next i
s = Text1.Text
i = 0
Do While i < Len(s)
i = i + 1
t = Mid(s, i, 1)
If IsNumeric(t) Then
num = 1
j = i
Do
i = i + 1
t = Mid(s, i, 1)
Loop Until Not (IsNumeric(t))
fig = Mid(s, j, i - j)
Do While Not (IsNumeric(t)) And t <> "(" And i <= Len(s)
i = i + 1
t = Mid(s, i, 1)
Loop
If t = "(" Then
i = i + 1
j = i
t = Mid(s, i, 1)
Do While t <> ")"
i = i + 1
t = Mid(s, i, 1)
Loop
num = Val(Mid(s, j, i - j))
Else
i = i - 1
End If
j = 1
Do
k = Val(Mid(fig, j, 1))
a(k).Nnum = a(k).Nnum + num
j = j + 1
Loop Until j > Len(fig)
End If
Loop
For i = 0 To 8
For j = i To 9
If a(i).Nnum < a(j).Nnum Then
fig = a(i).Nfig
num = a(i).Nnum
a(i).Nfig = a(j).Nfig
a(i).Nnum = a(j).Nnum
a(j).Nfig = fig
a(j).Nnum = num
End If
Next j
Next i
num = -1
j = -1
For i = 0 To 9
If a(i).Nnum = num Then
a(j).Nfig = a(j).Nfig + a(i).Nfig
Else
num = a(i).Nnum
j = j + 1
a(j).Nfig = a(i).Nfig
a(j).Nnum = num
End If
Next i
Dim FileNum As Integer
FileNum = FreeFile
Open App.Path & "\数字总次数.txt" For Output As FileNum
For i = 0 To j
t = a(i).Nfig + "(" + CStr(a(i).Nnum) + "),"
Print #FileNum, t;
Next i
Close FileNum
Shell "C:\WINDOWS\NOTEPAD.EXE " & App.Path & "\数字总次数.txt", vbNormalFocus
End Sub
- 1楼网友:一把行者刀
- 2021-05-06 19:06