题库 高中信息

题干

   (加试题)某同学设计了一个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(pai): i = i + 1
ElseIf pai = "1" Then   ‘要用2位数字代表某个牌
k =①_________________
If k >= 10 And k <= 15 Then
a(c) = k
i = i + 2
Else
flag = False
End If
Else
flag = False
End If
c=c+1
Loop
If flag = False Then
List1.AddItem "输入数据有误"
Else
For i = 1 To c -1  '洗牌,统计每个牌型的张数
(____________________________________________________________)
Next i
List1.AddItem "共有" + Str(c -1) + "张牌"
For i = 1 To ③_________________
t = ""
For k = 1 Tob(i+2)输出每个牌型及其数量
t = t + Mid(s, i, 1)
Next k
If Len(t) > 0 Then List1.AddItem t
Next i
End If
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-05-06 08:12:57

答案(点此获取答案解析)

同类题1

由数组a生成数组b的方法描述如下:
1)   将数组a中的n个元素依次分割出若干个数据块,每个数据块有m×m个元素,m最大值为8,最小值为2。分割时,按尽可能大的数据块进行分割;
2)   对每个分割出的数据块用“方阵转换法”进行转换,每次转换后得到的数据块依次存储在数据b中;
3)   数组a分割后的剩余元素(个数小于4),直接依序存储到数组b中。

例如n=140时,可依次分割出3个数据块,元素的个数分别为64(8×8)、64(8×8)、9(3×3),剩余元素为3个。

“方阵转换法”过程如下:将数据块中m×m个元素按行序排列成一个数字方阵,从该数字方阵中按列序得到转换后元素的次序。以3×3数据块为例,转换过程如下图所示:
转换前元素次序

转换后元素次序      
小明依据上述描述设计了如下VB程序。请回答下列问题:
(1)当n=120时,分割出的第3个数据块元素个数为__________。
(2)请在划线处填入合适的代码。
Const n = 120
Dim a(1 To n) As Integer
Dim b(1 To n) As Integer
Private Sub Command1_Click()
Dim m As Integer, i As Integer
Dim Start As Integer   '当前未分割数据的第1个元素下标
Dim Left As Integer    '当前未分割数据的个数
Dim pa As Integer '数组a的下标
Dim pb As Integer '数组b的下标
'读取n个转换前的数据,依次存储到a(1)、a(2)、……a(n)中,代码略
m = 8
Start = 1
Left = n
Do While Left > 3
If Left < m * m Then
m = ___________
Else
pa = Start
pb = Start
For i = 1 To m * m
b(pb) = a(pa)
pb = pb + 1
If i Mod m = 0 Then
______________
Else
pa = pa + m
End If
Next i
______________
Start = Start + m * m
End If
Loop
For i = Start To n
b(i) = a(i)
Next i
'依次输出转换后数据b(1)、b(2)、……b(n)中,代码略
End Sub

同类题3

小明编写了一个 VB 程序对成绩数据进行排序。为保证相同分数的同学相对位置(指原数据中的前后关系)不发生改变,他试着采用一种新的排序算法来解决。为便于描述算法的实现过程,假定有如下数组 a:
下标
1
2
3
4
5
值
5
3
3
2
4
 
第一步:统计数组 a 中每个值 a(i)出现的次数,存入 b(a(i)),统计完成后数组 b 的情况如下:
下标
1
2
3
4
5
值
0
1
2
1
1
 
第二步:从前向后,依次使数组 b 中的每个值等于其与前一项之和,这样数组 b(a(i))就代表了数组 a 中小于或等于 a(i)的元素个数,完成第二步后数组 b 如下:
下标
1
2
3
4
5
值
0
1
3
4
5
 
第三步:从后往前,依次将数组 a 中元素填入数组 c 中,将数组元素 a(i)放在数组 c 的第 b(a(i))项,如元素 a(1)=5,应该放在数组 c 的 b(5)位(即 c(5) )。每放一个元素就将 b(a(i))递减;完成第三步后,数组 c 如下所示,已经完成升序排序,且相对位置不变,即原来 a (2)的值 3 仍然在 a(3)的值 3 前面。
下标
1
2
3
4
5
值
2
3
3
4
5
 
程序运行界面如右图所示:

实现上述功能的 VB 程序如下,回答以下问题:
(1) 从代码中可以得知,用于连接数据库的对象名是:________
(2) 请在划线处填上相应代码。
Dim a(1 To 50) As Integer '存放学生的成绩
Dim sname(1 To 50) As String '存放学生姓名
Dim n As Integer
Private Sub Command1_Click
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
App.Path + "\stu.accdb"
conn.Open
strSQL = "SELECT * From stucj"
Set rs.ActiveConnection = conn
rs.Open strSQL
n = 0
List1.AddItem "姓 名" & " " & "成绩"
Do While Not rs.EOF
n = n + 1
a(n) = rs.Fields("cj")
sname(n) = rs.Fields("xm")
List1.AddItem sname(n) & " " & Str(a(n))
①_________
Loop
rs.Close
conn.Close
End Sub
Private Sub Command2_Click
Dim i As Integer, k As Integer
Dim b(0 To 100) As Integer
Dim c(1 To 50) As Integer, c1(1 To 50) As String 'c 和 c1 作为临时数组
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next
For i = 1 To 100
b(i) = ②__________
Next
For i = n To 1 Step -1
c(b(a(i))) = a(i)
c1(b(a(i))) = sname(i)
③_________________
Next
For i = 1 To n '把临时数组 c 和 c1 中的数据放入 a 和 sname 数组
a(i) = c(i)
sname(i) = c1(i)
Next
List2.AddItem "姓 名" & " " & "成绩"
For i = 1 To n
List2.AddItem sname(i) & " " & Str(a(i))

Next

End Sub

同类题4

获取字符串中指定范围内的元素,可以通过字符编号来实现,字符编号有正向编号和反向编号。如字符串"ABCDEF",字符A的正向编号为1、反向编号为-6,如下表:

"2:4"表示获取正编号"2"到"4”的字符串,即"BCD",-5:-3、2:3、-5:4这三种编号范围也表示的是字符串"BCD"。

小王根据上述算法设计如下程序,在文本框Textl输入字符串,在文本框Text2和Text3中输入字符编号,单击"获取"按钮,在标签Labell中显示指定范围的字符串。当Text2中的编号位置在Text3中的编号位置之前,则输出正向字符串,反之输出逆向字符串。程序运行界面如图所示。


(1)用户单击命令按钮Command1时调用的事件处理过程为__________。(单选,填字母:
A.Command1/
B.Caption/C.Click/D.Commandl_Click)。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim s As String, ans As String
Dim a As Integer,b As Integer, n As Integer
s=Textl.Text:n= Len(s): ans=""
a=Val(Text2.Text): b = Val(Text3.Text)
If Abs(a)>n Or Abs(b)>nOra *b=0 Then
ans="输入范围有误"

Else

If a<0 Thena=a+n+ =1
Ifb<OThenb= ①_______
Ifa<=b Then
ans= ②_______

Else

Fori=a To b Step-1
ans=ans+Mid(s,i,1)
Next i

End If

End If

Label1.Caption=ans
End Sub
(3)若文本框Textl中输入的内容为"123456789",文本框Text2和Text3中输入的内容分别为-3和5,单击"获取”按钮,标签框Labell中显示的内容是____________。