内容正文:
专题 字符串处理及排序(一)
★ 字符串处理
1、(杭八中期末)创建VB程序,统计英语短文中字母出现的次数,并输出出现次数最多的字母和未出现的字母。要求字母不区分大小写,均表示为大写字母。程序运程界面如图所示。算法如下:
①获取输入的英语短文,存入变量s
②统计字母出现次数
依次取出s中的每个字符
如果是大写字母,计算其在字母表中的位置n,并计数
如果是小写字母,计算其在字母表中的位置n,并计数
(用数组a存放26个字母出现的次数,a(1)存放“A”出现的次数,a(2)存储“B”出现的次数,……,a(26)存储“Z”出现的次数。)
③找出最大出现次数
④找出出现次数最多和未出现过的字母并输出
(1)若Text1中输入“The longest journey begins with the first step.”,未出现的字母是
(2)实现上述功能的VB程序如下,在其中①②③划线处填定相应代码,完善程序。
Private Sub Command1_Click()
Dim i As Integer, n As Integer, max As Integer
Dim a(1 To 26) As Integer '数组a存放26个字母出现的次数。
Dim s As String, c As String '变量s存放输入的短文
Dim s1 As String, s2 As String '变量s1、s2分别存放出现次数最高和未出现的字母组成的字符串
s = Text1.Text
For i = 1 To Len(s) '统计字母出现次数
c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Then
(1)
ElseIf c >= "a" And c <= "z" Then
n = Asc(c) - 32 - Asc("A") + 1
a(n) = a(n) + 1
End If
Next i
max = a(1) '找出最大出现次数
For i = 1 To 26
If (2) Then
max = a(i)
End If
Next i
For i = 1 To 26 '找出出现次数最多和未出现过的字母
If (3) Then
s1 = s1 + " " + Chr(Asc("A") + i - 1)
ElseIf a(i) = 0 Then
s2 = s2 + " " + Chr(Asc("A") + i - 1)
End If
Next i
Label2.Caption = "出现次数最多的字母是:" & s1 & " 出现次数为:" & Str(max)
Label3.Caption = "未出现的字母是:" & s2
End Sub
2、(杭八中期末)某同学设计了一个VB程序用于分析“纸牌游戏”中发到手的牌的信息,各牌面值在程序中的输入值和输出值如图所示。程序运行界面如图所示,在文本框Text1中输入数字代表玩家手中的牌的信息,点击“分析”按钮后,在列表框list1按牌面值顺序输出各中牌的相关信息。
请回答下列问题:
(1)在打牌中5张以上的连续牌称为顺子,若输入的牌是“8991012141511610113”,则这些牌中的顺子是(使用上图中“输出值”表示各种牌):____________________
(2)请在划线处填上合适的代码。
Private Sub Command1_Click()
Dim zpAs String, pai As String, t As String
Dim a(1 To 50) As Integer, b(3 To 15) As Integer
‘a数组存储按序输入的各个牌,b数组存储每个牌型(3~10,JQKA2)的数量
Dim i As Integer, c As Integer, k As Integer, flag As Boolean
Const s = "34567890JQKA2" '输出牌型,牌10用0代替
zp= Text1.Text
i = 1: c = 1: flag = True
Do While i <= Len(zp) And flag = True
pai = Mid(zp, i, 1)
If pai >= "3" And pai <= "9" Then
a(c) = Val