- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- 算法实例
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
把学生成绩由高到低排序后,按姓名在前、成绩在后的顺序依次存储在数组a中。例如(“张三”“97” “李四”“92” “王五”“87”,……)。设计一个VB程序,利用对分查找思想实现在数组a中查找成绩为Key的学生姓名。程序段如下:
i=1:j=n 'n代表学生的数量
Key=Val(Text1.Text)
Do While i<=j
m=
If Val(a(m))>Key Then i=m\2+1 Else j=m\2-1
Loop
List1.Clear
j=j+1
Do While i<=n
上述程序中方框处可能的语句是( )
i=1:j=n 'n代表学生的数量
Key=Val(Text1.Text)
Do While i<=j
m=

If Val(a(m))>Key Then i=m\2+1 Else j=m\2-1
Loop
List1.Clear
j=j+1
Do While i<=n
If Val(a(2*j))=Key Then List1.AddItem a(2*j-1)+""十a(2*j)
Else exit do
j=j+1
Loop上述程序中方框处可能的语句是( )
A.(i+j)\2 | B.(i+h)/2 | C.((i+j)12)*2 | D.((i+j)\2)/2 |
查找最短26个字母字符串: 在文本框Text1中输入任意一串仅包含小写字母的字符串(长度n>=26),要求找到长度最小的一段区间,能够包含全部26个小写英文字母。小王设计了VB程序用于搜索最短字符串,单击“查找”按钮 Command1,若无解,则在标签 Label1中输出“无解!”,反之程序在标签 Labell中输出该最小区间的长度以及字符的开始位置,并在文本框Text2中输出相应的最短字符串,程序界面如图所示。
查找最短26个字母字符串的算法可描述为:
1)确定初始右边界: 从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。
2)调整子串左边界: 若左边界有重复的字母则表明该子串可缩短,故左边界可右移1位,……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。
3)调整子串右边界: 子串右边界继续右移,在新子串符合条件后,记录并进行比较。重复2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。
实现上述功能的VB程序如下,请回答下列问题:
(1)对于字符串“ qbwcadsgeqbdatcy”,包括字母 abcde的最短字符串长度为___________(填数字)
(2)请在划线处填入合适的代码。
Const n=200
Dim i As Integer, k As Integer, length As Integer, L As Integer
Dim pos As Integer, sl As String, res As String
Dim f(1 To 26) As Integer '数组f记录每个小写英文字母的出现次数
Dim s(1 To n)As Integer '数组s记录每个输入字符在字母表中的位置
Private Sub Command1_ Click
Next i
k=0: pos=1: length=n
For i=1 To 26
f(i)=0
Next i
For i=1 To Len(sl)
If f(s(i))=0 Then k=k+1
f(s(i))=f(s(i))+1
Do While___________
f(s(pos))=f(s(pos))-1
If______________Then
k=k-1
If i-pos+1<length Then
length=i-pos+1
res=Mid (sl, pos, length)
L=pos
End If
End If
pos=pos+1
Loop
Next i
If res<>""Then
查找最短26个字母字符串的算法可描述为:
1)确定初始右边界: 从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。
2)调整子串左边界: 若左边界有重复的字母则表明该子串可缩短,故左边界可右移1位,……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。
3)调整子串右边界: 子串右边界继续右移,在新子串符合条件后,记录并进行比较。重复2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。

实现上述功能的VB程序如下,请回答下列问题:
(1)对于字符串“ qbwcadsgeqbdatcy”,包括字母 abcde的最短字符串长度为___________(填数字)
(2)请在划线处填入合适的代码。
Const n=200
Dim i As Integer, k As Integer, length As Integer, L As Integer
Dim pos As Integer, sl As String, res As String
Dim f(1 To 26) As Integer '数组f记录每个小写英文字母的出现次数
Dim s(1 To n)As Integer '数组s记录每个输入字符在字母表中的位置
Private Sub Command1_ Click
res=" "
s1=Textl. Text
For i=1 To Len(s1)
s(i)= _____________Next i
k=0: pos=1: length=n
For i=1 To 26
f(i)=0
Next i
For i=1 To Len(sl)
If f(s(i))=0 Then k=k+1
f(s(i))=f(s(i))+1
Do While___________
f(s(pos))=f(s(pos))-1
If______________Then
k=k-1
If i-pos+1<length Then
length=i-pos+1
res=Mid (sl, pos, length)
L=pos
End If
End If
pos=pos+1
Loop
Next i
If res<>""Then
Text2 Text=res
Labell. Caption="最短长度: "+Str( length)+"开始位置: "+Str(L)Else
Labell. Caption="无解!"
End if
End Sub某对分查找算法的VB程序段如下:
Dim a(l to 6)As Integer
i=1: j=6: n=0
key= Val(Textl. Text)
Do While i<=j
n=n+1
m=(i+j)\2
If key=a(m) Then Exit Do 'Exit do为退出do循环
If key<a(m) Then
j=m-1
Else
i=m+1
LOOP
数组元素a(1)到a(6)的值依次为“1921,1927,1949,1998,2008,2019”。在文本框Text1中输入“1998”后运行该程序,则以上程序段运行结束后,下列说法正确的是( )
Dim a(l to 6)As Integer
i=1: j=6: n=0
key= Val(Textl. Text)
Do While i<=j
n=n+1
m=(i+j)\2
If key=a(m) Then Exit Do 'Exit do为退出do循环
If key<a(m) Then
j=m-1
Else
i=m+1
LOOP
数组元素a(1)到a(6)的值依次为“1921,1927,1949,1998,2008,2019”。在文本框Text1中输入“1998”后运行该程序,则以上程序段运行结束后,下列说法正确的是( )
A.变量i的值为3 |
B.变量j的值为5 |
C.变量m的值为3 |
D.变量n的值为3 |
星期天,小杰来到动物园游玩,园内共有 N 个景点,每个景点都有一个标号,标号为 1 至 N。现在只知道每个景点均有一条路连接下一个景点。小杰想知道,根据这些道路信息,从其中一个景点出发,最后再回到出发景点,最多能游玩多少个景点。
例如,共有 N=5 个景点,每个景点连接的下一个景点分别是2,4,5,5,2,
则他可以从 2 号景点出发,最多可以游玩 2号、4号、5号三个景点。

程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer , d(1 To 100) As Integer '数组 a 存放下一景点号
Dim jd As String, m As String,c As Integer,I As Integer
Dim s As Integer, p As Integer,k As Integer,ans As Integer
jd=Text1. Text+","
s=0 : c=0
For i=1 To Len(jd)
m=Mid(jd,i,1)
If m<>"," Then
s=s∗10+Val(m)
Else
c=c+1 :a(c)=s : s=0 '含义
End If
Next i
ans=0:k=0
For i=1 To c '枚举游览起点
For k=1 To c
d(k)=0
Next k
If d(i)=0 Then
p=i
Do While p<=c
If d(p)=0 Then
k=k+1 :d(p)=k
Else
y= ① '填空
If y>ans Then ans=y
k=0
Exit Do
End If
'改错
Loop
End If
Next i
Text2. Text=Str(ans)
End Sub
(1)若要实现显示“景点连接情况:”的 Text1 在程序运行时默认为空,则需要将 Text1 的_________________属性设置为空。
(2)若有 7 个景点,且每个景点的连接情况为 6,3,7,2,7,5,4,那么小杰最多可以游玩的景点数是_________________。
(3)程序代码中,有下划线的语句“a(c)= s”代表的含义为___________________________。
(4)程序代码中,在①处填空:y=_____________________。
(5)程序代码中,加框处代码有错,请改正:__________________________________。
例如,共有 N=5 个景点,每个景点连接的下一个景点分别是2,4,5,5,2,
景点号 | 1 | 2 | 3 | 4 | 5 |
下一景点号 | 2 | 4 | 5 | 5 | 2 |
则他可以从 2 号景点出发,最多可以游玩 2号、4号、5号三个景点。

程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer , d(1 To 100) As Integer '数组 a 存放下一景点号
Dim jd As String, m As String,c As Integer,I As Integer
Dim s As Integer, p As Integer,k As Integer,ans As Integer
jd=Text1. Text+","
s=0 : c=0
For i=1 To Len(jd)
m=Mid(jd,i,1)
If m<>"," Then
s=s∗10+Val(m)
Else
c=c+1 :a(c)=s : s=0 '含义
End If
Next i
ans=0:k=0
For i=1 To c '枚举游览起点
For k=1 To c
d(k)=0
Next k
If d(i)=0 Then
p=i
Do While p<=c
If d(p)=0 Then
k=k+1 :d(p)=k
Else
y= ① '填空
If y>ans Then ans=y
k=0
Exit Do
End If

Loop
End If
Next i
Text2. Text=Str(ans)
End Sub
(1)若要实现显示“景点连接情况:”的 Text1 在程序运行时默认为空,则需要将 Text1 的_________________属性设置为空。
(2)若有 7 个景点,且每个景点的连接情况为 6,3,7,2,7,5,4,那么小杰最多可以游玩的景点数是_________________。
(3)程序代码中,有下划线的语句“a(c)= s”代表的含义为___________________________。
(4)程序代码中,在①处填空:y=_____________________。
(5)程序代码中,加框处代码有错,请改正:__________________________________。
有如下VB 程序段:
Private Sub Commandl_Click()
Dim d(l To 6) As Integer
Dim t As Integer
d(1)=35:d(2)=18:d(3)=63:d(4)=5:d(5)=85:d(6)=47
For i=1 To 3
t=d(j):d(j)=d(j-1):d(j-1)=t
End If
Next i
End Sub .
执行该程序段后,文本框 Textl输出的内容是( )
Private Sub Commandl_Click()
Dim d(l To 6) As Integer
Dim t As Integer
d(1)=35:d(2)=18:d(3)=63:d(4)=5:d(5)=85:d(6)=47
For i=1 To 3
For j=i+1 To 6
If d(j)<d(j-1) Thent=d(j):d(j)=d(j-1):d(j-1)=t
End If
Next j
Textl.Text=Str(d(i))+Text1.TextNext i
End Sub .
执行该程序段后,文本框 Textl输出的内容是( )
A.47 63 85 | B.35 5 18 | C.85 63 47 | D.18 5 35 |
以下VB代码运行后,在文本框Text1中输入1,则选择语句If k<=9 Then k=k+i执行的次数为( )
k=k+i执行的次数为
Private Sub Text1_Changeo()
k=k+i执行的次数为
Private Sub Text1_Changeo()
Dim k As Integer, i As Integer
k=Val(Text1.Text)
For i=1 To 3
If k<=9 Then k=k+iNext i
Text1.Text=Str(k)
End subA.3 | B.5 | C.6 | D.9 |
有如下VB程序段:
s= Text1.Text
s1=" "
For i=1 To Len(s)
c=Chr(t+ Asc("A"))
Text2.Text=sl
1=s1+c在文本框Text1中输入“ABcd2XY”,执行上述程序段后,文本框Text2中输出( )
s= Text1.Text
s1=" "
For i=1 To Len(s)
c= Mid(s,i,1)
If c>="A" And c<="Z" Then
t=(Asc©-asc("A")+25)Mod 26c=Chr(t+ Asc("A"))
End If
sl=sl+c
Next iText2.Text=sl
1=s1+c在文本框Text1中输入“ABcd2XY”,执行上述程序段后,文本框Text2中输出( )
A.ZAWX | B.ZAcd12WX | C.XWAZ | D.XW21dcAZ |
小明最近学习了一种新的排序方法,其基本思想是:经过i-1遍加工后,a(1)到a(i-1)已经有序,第i遍加工时将a(i)插入到位置1到位置i之间的适当位置p(包含位置1和位置i),原来位置p及p后的元素一一向右移动一个位置(若插入在位置i,则不需要移动其他元素),使得a(1)到a(i)依然有序,依此重复下去,直到n个数全部排序完成,VB程序段如下:
For i=2 To n
k=a(i):j=j-1
Do While k<a(i)
a(j+1)=a(j)
j=j-1
If j=0 Then Exit Do
Loop

Next i
要实现上述排序算法,方框内VB语句应为( )
For i=2 To n
k=a(i):j=j-1
Do While k<a(i)
a(j+1)=a(j)
j=j-1
If j=0 Then Exit Do
Loop

Next i
要实现上述排序算法,方框内VB语句应为( )
A.a(j)=k | B.a(j+1)=k | C.a(i)=k | D.a(j-1)=k |
有如下VB程序段:
a=1:b=1:n=12
f(1)=a:f(2)=b
For i=3 To n
执行该段程序后,数组元素f(12)的值为( )
a=1:b=1:n=12
f(1)=a:f(2)=b
For i=3 To n
c=a+b
f(i)=c Mod 4
a=b
b=c
Next i执行该段程序后,数组元素f(12)的值为( )
A.0 | B.1 | C.2 | D.3 |
阅读程序代码并填空。
Rem VB代码:
Dim a As Integer
Dim b As Integer
Dim c As Integer
a =3
b =5
Print "a=";a,"b=";b
c=a
a=b
b=c
Print "a=";a,"b=";b
(1)程序中起注释作用的标识符是____________。
(2)变量a、b、c 的数据类型都是___________(填写中、英文均可)。
(3)执行程序后,b的输出结果是________________。
Rem VB代码:
Dim a As Integer
Dim b As Integer
Dim c As Integer
a =3
b =5
Print "a=";a,"b=";b
c=a
a=b
b=c
Print "a=";a,"b=";b
(1)程序中起注释作用的标识符是____________。
(2)变量a、b、c 的数据类型都是___________(填写中、英文均可)。
(3)执行程序后,b的输出结果是________________。