- 基础理论
- 数据及数据库技术
- 人工智能
- 算法理论
- + 算法实例
- 枚举算法
- 解析算法
- 排序算法
- 查找算法
- 递归算法
- 面向对象程序设计 VB开发工具
- 算法实例的程序实现
- 算法及算法的表示方法
- 多媒体理论
- 基础软件操作
- 算法软件操作
- 多媒体软件操作
- 网络技术应用
(加试题)小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改正。
’待排序数据存储在数组a中(a(1)~ a(n)),要求升序排列
For i = 1 To (n - 1) \ 2
For j = 1 To n - i * 2
If a(j) > a(j + 1) Then ____________________________
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
Next j
Next i
For i = 1 To n \ 2
j = 2 * i - 1
If a(j) > a(j+1) Then t = a(j): a(j) = a(j+1): a(j+1) = t
Next i
For i = 1 To n Step 2 ________________________
t = a(i): j = i - 1
Do While t < a(j)
a(j + 1) = a(j): j = j - 1
Loop
a(j + 1) = t
Next i
’待排序数据存储在数组a中(a(1)~ a(n)),要求升序排列
For i = 1 To (n - 1) \ 2
For j = 1 To n - i * 2
If a(j) > a(j + 1) Then ____________________________
t = a(j): a(j) = a(j + 2): a(j + 2) = t
End If
Next j
Next i
For i = 1 To n \ 2
j = 2 * i - 1
If a(j) > a(j+1) Then t = a(j): a(j) = a(j+1): a(j+1) = t
Next i
For i = 1 To n Step 2 ________________________
t = a(i): j = i - 1
Do While t < a(j)
a(j + 1) = a(j): j = j - 1
Loop
a(j + 1) = t
Next i
(加试题)有1个升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大、再由大到小,且相邻两个差值不相等,为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:
i = 1 :j = n
Do While i + 1 < j


Label1.Caption="相邻两个元素的最大差值是" + Str(a(j) - a(i))
上述程序段两个方框处的语句分别为( )
i = 1 :j = n
Do While i + 1 < j
m = (i + j) \ 2
If a(m + 1) - a(m) > a(m) - a(m - 1) Then

Else

End if
LoopLabel1.Caption="相邻两个元素的最大差值是" + Str(a(j) - a(i))
上述程序段两个方框处的语句分别为( )
A.① i = m ② j = m | B.① i = m ② j = m - 1 |
C.① i = m + 1 ② j = m – 1 | D.① i = m + 1 ② j = m |
有序(非降序)数组A有n个元素,用对分查找算法在数组A中查找key值所在的位置,如果有重复的元素,则显示最早出现该key值的位置。相应的VB程序段如下:
key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If a(m) > key Then
j = m - 1
ElseIf a(m) < key Then
i = m + 1
Else
If ① Then
j = m - 1
Else
Label2.Caption = Str(key) + "的起始位置是" + Str(m)
Exit Do
End If
End If
Loop
If i > j Then
Label2.Caption = "找不到" + Str(key)
End If
要使程序实现上述算法思想,则方框中的语句是
key = Val(Text1.Text)
i = 1: j = n
Do While i <= j
m = (i + j) \ 2
If a(m) > key Then
j = m - 1
ElseIf a(m) < key Then
i = m + 1
Else
If ① Then
j = m - 1
Else
Label2.Caption = Str(key) + "的起始位置是" + Str(m)
Exit Do
End If
End If
Loop
If i > j Then
Label2.Caption = "找不到" + Str(key)
End If
要使程序实现上述算法思想,则方框中的语句是
A.a(m - 1) = key | B.a(m) = key | C.m - 1 >= 0 And a(m - 1) = key | D.m - 1 >= 0 And a(m) = key |
(加试题)数字反转,下面程序的功能是:输入一个非负整数,将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。如输入120,反转后输出21,程序运行时,在文本框Text1中输入反转前的数字,单击“反转”按钮后,在文本框Text2中显示反转后的数字。程序运行效果如图所示。

为实现上述功能的程序如下,请在程序划线处填入合适的代码。
Private Sub Command1_Click()
Dim a As String
Dim n As Integer
a = Text1.Text
n = Len(a)
Do While ① and Mid(a,n,1)=”0”
n = n - 1
Loop
For i = n To 1 Step -1
Text2.Text = Text2.text + ②
Next i
End Sub
(1)划线①处应填入的语句为:_____________________________
(2)划线②处应填入的语句为:_____________________________
(加试题)所谓双向排序是在一遍加工中先从上到下把最大的元素送到最下的位置,再从下到上把最小的元素送到最上的位置。实现上述功能的vb代码如下:
Dim a(1 to 100) as integer
Const n=10
Private Sub form_load()
’生成n个随机数,存储在数组a中,代码略
End Sub
Private Sub command1_click()
Dim I as integer,j as integer
For ①
For j=i to n-i
If a (j)>a(j+1) then
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
For ②
If a(j)<a(j-1) then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
Next i
for i=1 to n
List2.additem str(a(i))
Next i
End Sub
程序中①②处最合适的语句是( )
Dim a(1 to 100) as integer
Const n=10
Private Sub form_load()
’生成n个随机数,存储在数组a中,代码略
End Sub
Private Sub command1_click()
Dim I as integer,j as integer
For ①
For j=i to n-i
If a (j)>a(j+1) then
t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
For ②
If a(j)<a(j-1) then
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
Next i
for i=1 to n
List2.additem str(a(i))
Next i
End Sub
程序中①②处最合适的语句是( )
A.① i=1 to n-1 ②j=n to i+1 step -1 |
B.① i=1 to n\2 ②j=n-i to i+1 step -1 |
C.① i=1 to n\2 ②j=n to i+1 step -1 |
D.① i=1 to n-1 ②j=n-i to i+1 step -1 |
(加试题)下列 VB 程序段的功能是将数组元素 a(1)到 a(n)按非递减序排序:
For i = 1 To n - 1
For j = 补充代码
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
方框中的代码将会是以下四句中的一句:
① i To n - 1 ② n - 1 To i Step -1
③ 1 To n - i ④ n To i+1 Step -1
正确的选项是
For i = 1 To n - 1
For j = 补充代码
If a(j) > a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
方框中的代码将会是以下四句中的一句:
① i To n - 1 ② n - 1 To i Step -1
③ 1 To n - i ④ n To i+1 Step -1
正确的选项是
A.①② | B.③④ | C.①④ | D.②③ |
(加试题)入围“十佳歌手”的10位学生的编号依次为:47,36,35,31,28,23,17,8,3,1,主持人通过对分查找最终确定35号为首位出场学生,则主持人查找过程中依次被访问的编号是( )
A.47,36,35 | B.23,35 | C.28,35 | D.28,36,35 |
一个大于1的自然数,除了1和它本身外,不能被其他自然数整除的数称为质数又称素数,下列程序用来判断文本框1中输入的数是否素数,请完善以下三处代码。
Dim i As Integer, m As Integer ,flag as Boolean
m = ①______________
flag= ②_____________
For i = 2 To int(sqr(m))
If ③____________ Then
flag=false
Exit For
End if
Next i
If flag=true Then
Text2.Text = str(m) +"是素数"
Else
Text2.Text = str(m) +"不是素数"
End if
Dim i As Integer, m As Integer ,flag as Boolean
m = ①______________
flag= ②_____________
For i = 2 To int(sqr(m))
If ③____________ Then
flag=false
Exit For
End if
Next i
If flag=true Then
Text2.Text = str(m) +"是素数"
Else
Text2.Text = str(m) +"不是素数"
End if
对称字符串的特征是从左到右读和从右到左读是完全一样的。如“abba”是对称的,“abcba”也是对称的。判断字符串是否对称的VB程序段如下, 请完善以下两处代码
s=Text1.Text
n=Len(s) 's是待判断的字符串
k=0:j=n
For i=1 to n\2
c1=Mid(s,i,1)
c2=Mid(s,j,1)
If c1 <> c2 Then k = k+1: Exit For
j=①___________
Next i
If ②__________ Then Label1.Caption="对称" Else Label1.Caption="不对称"
s=Text1.Text
n=Len(s) 's是待判断的字符串
k=0:j=n
For i=1 to n\2
c1=Mid(s,i,1)
c2=Mid(s,j,1)
If c1 <> c2 Then k = k+1: Exit For
j=①___________
Next i
If ②__________ Then Label1.Caption="对称" Else Label1.Caption="不对称"
(加试题)下列有关查找的说法,不正确的是( )
A.进行对分查找时,被查找的数据必须是有序的 |
B.对数据进行顺序查找时,必定比对分查找的查找次数要多 |
C.某数据序列可以进行对分查找,那么必定也能进行顺序查找 |
D.进行顺序查找时,被查找的数据可以是有序的,也可以无序的 |