- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- + 算法实例的程序实现
- 过程和自定义函数
- 枚举算法及程序实现
- 解析算法及程序实现
- 递归算法及程序实现
- 排序算法及程序实现
- 查找算法及程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
用选择排序将七个数“2022,2017,2018,2014,2021,2012,2015”从小到大进行排序,则第二轮交换数据后的顺序是( )
A.2022,2021,2018,2017,2014,2012,2015 | B.2012,2014,2018,2017,2021,2022,2015 |
C.2012,2017,2018,2014,2021,2022,2015 | D.2022,2021,2018,2014,2017,2012,2015 |
将数组a中的8 个数据“18,33,5,26,86,0,60,200”按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换的次数是( )
A.4 | B.5 | C.6 | D.7 |
7位学生的身高(单位:cm)从高到低依次为:178,177,175,172,170,165,162。用对分查找法找到178 的过程中,依次被访问到的数据是( )
A.178 | B.172,175,178 | C.172,177,178 | D.172,175,177,178 |
已知斐波那契数列前8项是1,1,2,3,5,8,13,21,设计如下VB程序求其第n 项的值:
Dim a(1 to 1000)as long,n as integer
n=Val(Text1.Text)
a(1)= 1:a(2)= 1
For i=3 to n
a(i)= a(i-1)+a(i-2)
Next i
Label1.Caption=“斐波那契的第”&Str(n)&“是”&a(n)
该程序用到了下列哪一个算法( )
Dim a(1 to 1000)as long,n as integer
n=Val(Text1.Text)
a(1)= 1:a(2)= 1
For i=3 to n
a(i)= a(i-1)+a(i-2)
Next i
Label1.Caption=“斐波那契的第”&Str(n)&“是”&a(n)
该程序用到了下列哪一个算法( )
A.枚举算法 | B.递归算法 | C.排序算法 | D.查找算法 |
(加试题)某查找算法的 VB 程序段如下:
i = 1: j = 7: n = 0
Key = Val(Text1.Text)
Do While i <= j
n = n + 1
m = Int((i + j) / 2)
If Key = a(m) Then Exit Do
If Key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素 a(1)到 a(7)存放的数值依次为 8,21,27,36,79,28,98,若该程序段运行结束后,n 的值为 2,则 Text1 中输入的要查找的数是()
i = 1: j = 7: n = 0
Key = Val(Text1.Text)
Do While i <= j
n = n + 1
m = Int((i + j) / 2)
If Key = a(m) Then Exit Do
If Key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素 a(1)到 a(7)存放的数值依次为 8,21,27,36,79,28,98,若该程序段运行结束后,n 的值为 2,则 Text1 中输入的要查找的数是()
A.27 或 79 | B.28 | C.21 或 28 | D.21 |
(加试题)某同学设计了一个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
随机产生15个A-J的大写字母,按字母降序排序后,将连续出现的字母用压缩的形式显示。例如,连续5个H字母显示为5*H,如图所示,请在划线处填入合适代码。
Sub command1_Click( )Const N = 14
Dim a(1 to n) As Char, c As Char ‘数组a用于存储随机产生字母
Dim count, i, k, j as integer
Label1.caption = ""
For i = 0 To N
a(i) = ________
Label1.caption = a(i) & " "
Next i
For i = 0 To N - 1
k = i
For j = i + 1 To N
If a(j) > a(k) Then_________
Next j
c = a(i) : ___________: a(k) = c
Next i
For i = 0 To N '输出排序的结果
Label1.caption = a(i) & " "
Next i
i = 0
Do While i <= N '压缩显示相同元素
count = 1
If i < N Then j = i + 1
Do While a(i) = a(j)
If i <> j Then count = ____________
If j < N Then j = j + 1 Else Exit Do
Loop
If count = 1 Then
Label1.caption = a(i) & " "
Else
Label1.caption = ___________
End If
i = i + count
Loop
End Sub
(加试题)n个数从小到大选择排序需要经过n-1遍加工,每遍加工从未排序的数据元素中找出最小的元素与当前元素进行交换。小天同学学习了选择排序算法和函数的知识后,编写了一个VB程序,功能如下:运行程序时首先在列表框List1中显示10个不小于10且不大于99的随机自然数,单击“排序”按钮Command1后,在列表框List2中显示这些数据按从小到大排序后的结果,运行结果如图所示。

实现上述功能的VB代码如下,但划线处有错,请改正。
Dim a(1 To 10) As Integer '定义数组a
Private Sub Form_Load()
Randomize
For i = 1 To 10 '产生10个不小于10且不大于99的随机自然数,并依次存放在数组a中
a(i) = Int(Rnd * 100) '①
List1.AddItem Str(a(i))
Next i
End Sub
'Find_min函数寻找与当前元素a(x)需要交换的数组元素下标
Function Find_min(x As Integer)
Dim k As Integer, j As Integer
k = x
For j = x + 1 To 10
If a(j) < a(k) Then k = j
Next j
Find_min = k
End Function
Private Sub Command1_Click()
Dim i As Integer, k As Integer, t As Integer
For i = 1 To 9
k = Find_min(i+1) '②
If k <> i Then
t = a(i): a(i) = a(k): a(k) = t
End If
Next i
For i = 1 To 10
List2.AddItem Str(a(i))
Next i
End Sub
(1)加框处①有错,应改为__________________________。
(2)加框处②有错,应改为__________________________。
(加试题)有以下程序段,
m=0:n=0
For i=1 to 3
For j=5 to i+1 step -1
n=n+1
If a(j)<a(j-1) then
t=a(j):a(j)=a(j-1):a(j-1)=t
m=m+1
End if
Next j
Next i
数组元素a(1)到a(5)的值依次为“10,45,8,6,20”,程序运行后,变量m和n的值分别为
m=0:n=0
For i=1 to 3
For j=5 to i+1 step -1
n=n+1
If a(j)<a(j-1) then
t=a(j):a(j)=a(j-1):a(j-1)=t
m=m+1
End if
Next j
Next i
数组元素a(1)到a(5)的值依次为“10,45,8,6,20”,程序运行后,变量m和n的值分别为
A.6,9 | B.9,9 | C.9,6 | D.5,6 |