相关试卷
-
1、有如下VB程序段:
i = 1: j = 10: k = 6
Do While i < = j
m = Int ((i +1)/2)
If k= a(m) Then
Exit Do
ElseIf k < a(m) Then
j = m-1
Else
i=m+1
End if
Loop
数组元素a(1)到a(10)的值依次为3,5,7,10,12,15,17,18,21,25,该段程序运行后,在查找数值6的过程中,i,j,m的值分别是( )
A、i=2,j=3,m=3 B、i=3,j=2,m=3 C、i=3,j=3,m=3 D、i=1,j=4,m=2 -
2、数组元素a(1)到a(10)中存储有10个整数,依次为2,5,7,7,9,11,12,13,13,17,使用两种算法查找特定的整数,部分程序如下:
‘顺序查找代码,查找次数用变量p表示
For i =1 To 10
If a (i) = Key Then
p=i
Exit For
End If
Next i
‘对分查找代码,查找次数用变量q表示
i = 1: 1 = 10: find = False
Do While i < = j And find= False
x = (1+j) \ 2
q = q+1
If a(x) = Key Then find = True
If a(x) > Key Then j=x- 1
If a(x) < Key Then i = x+1
Loop
若变量Key的值为13,则程序运行后,变量p和q的值分别是( )
A、8,2 B、9,2 C、8,3 D、9,3 -
3、某数组有10个元素,依次为5、12、16、23、27、3、35、41、49、50,下列选项中正确的是( )A、使用对分查找算法查找数据12,需要的查找次数是3 B、使用顺序查找算法查找数据50,需要的查找次数是9 C、使用对分查找算法查找数据41,需要的查找次数是2 D、使用顺序查找算法查找数据5,需要的查找次数是0
-
4、某对分查找算法的VB程序段如下:
i = 1: j = 8: s =“”
key =“sheep”
Do While i < =j
m =(i+j)\2
If key = a(m) Then
s = s + “M”
Exit Do
ElseIf key < a(m) Then
j = m-1:s = s+“L”
Else
i=m+1 : s = s +“R”
End if
Loop
Text1. Text = s
数组元素a(1)到a(8)的值依次为“tiger, snake, sheep, rabbit, pig, muse, monkey, dog”,该程序段执行后,文本框Text1中显示的内容是( )
A、LR B、RLM C、LRM D、LRL -
5、某对分查找算法的VB程序段如下:
i = 1: j = 9: n = 0
key = val (Text1.text)
Do While i < = j
n=n+1
m = Fix((+j)/2)
If key=d(m) Then Exit Do ‘Exit Do表示退出循环
If key < d (m) Then
j = m-1
Else
i=m+1
End If
Loop
数组元素d(1)到d(9)的值依次为“7,12,18,2,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是( )
A、39 B、18或61 C、18或72 D、12或61 -
6、按钮Command1的鼠标单击事件处理过程如下:
Private Sub Command1_Click ( )
Dim st (1 To 6) As string
st(1)= “she”: st(2)= “her”: st(3)=“your”
st(4)=“me”: st(5)= “you”: st(6) =“i”
Key Text1 Text
t= False
i = 0
Do While i < 6 And t= False
i=i+1
If st(i) = Key Then t = True
Loop
If t= False Then i =0
Text2. Text Str(i)
End Sub
程序运行时,在文本框中输入“you”后单击按钮Command1,则文本框Text2中显示的内容是( )
A、0 B、1 C、5 D、7 -
7、报名参加冬季越野赛跑的某班5位学生的学号是5,8,11,33,45利用对分查找算法查找学号为33的学生的过程中,依次被访问到的学号是( )A、5,11,33 B、8,33 C、11,45,33 D、11,33
-
8、某有序数组为6,15,18,22,25,38,45,若采用对分查找算法进行查找,则平均查找次数为( )A、7/2 B、6/7 C、4/2 D、17/7
-
9、某数组有7个元素,依次为2001、2005、2008、2009、2010、2015、2018,若采用对分查找中算法在该数组中查找数据2018,需要查找的次数是( )A、1 B、2 C、3 D、4
-
10、有以下两组数据:
①54,31,43,12,8,73,56,34,89,60,23,67;
②87,83,75,70,63,59,55,37,33,21,17,7。
下列有关查找方法的描述不正确的是( )
A、①可以直接使用顺序查找 B、②可以直接使用对分查找 C、①可以直接使用对分查找 D、②可以直接使用顺序查找 -
11、编写VB程序,实现如下功能:程序运行时,单击命令按钮 Command1产生100个随机字符串(每个字符串的长度不超过10),并显示在列表框List1中单击命令按钮Command2对产生的100个随机字符串按权值进行降序排序,将排序结果显示在列表框List2中。每个字符串的权值定义为该字符串中ASCⅡ码值最大的学母的ASCⅡ码值,例如字符串“Hello”中ASC码值最大的字母是“o”(ASCⅡ码值为111),则字符串“Hello”的权值为111。程序运行效果如图所示。
实现上述功能的VB代码如下,在划线处填入合适的代码。
Dim a (1 To 100) As String ‘ 依次存放100个随机字符串
Dim b (1 To 100) As Integer ‘ 依次存放每个字符串的权值
Private sub command1_Click( ) ‘ 产生100个随机字符串
Dim i As Integer, k As Integer, j As Integer,x As Integer
For i=1 To 100
k=Int (Rnd*7+3) ‘k表示第i个字符串的长度
For j = 1 To k ‘通过循环产生第i个字符串并存储在a(i)中
If Int(Rnd*2+1) = 1 Then ‘ 产生一个小写字母的 ASCⅡ码值
x = Asc("a")+ Int (Rnd*26)
Else
x = Asc("A") + Int(Rnd*26) ‘ 产生一个大写字母的ASCⅡ码值
①
a(i) = a(i)+Chr (x)
Next j
List1 AddItem a(i)
Next i
End Sub
Private sub command2_Click( )’ 对100个字符串按字符串权值降序排序
Dim i As Integer, j As Integer, y As Integer, s As string
For i =1 To 99
k =1
For = i + 1 To 100
③
Next j
If k <> Then
s = a(k) : a(k) = a(1) : a(1) = s
y = b(k) : b(k) = b(1):b(i) = y
End If
Next i
For i=1 To 100
List2 AddItem a(i)
Next i
End sub
① ② ③
-
12、有一组正整数,要求仅对其中的素数进行升序排序。排序后素数在前,非素数在后排序示例如下。
排序前
86
71
5
41
81
79
37
89
排序后
5
37
41
71
79
89
86
81
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer
Private Sub Command1_ click ( )
Dim i As Integer, j As Integer, k As Integer, t As Integer
Dim flag As Boolean, sl As String, s2 As String
‘ 读取一组正整数,存储在数组a中
‘ 代码略
For i = 1 To n
s1 = s1 + Str(a(i))
Next i
Text1. Text = s1
For i = 1 To n-1
‘①If IsPrime(a(k)) Then flag = True
Else flag = False
For j = i + 1 To n
If IsPrime (a(j)) Then
If
Then ‘②k = j
flag = True
End If
End If
Next j
If k <> i Then
t = a(k):a(k) = a(i):a(i) = t
End If
If Not flag Then Exit For ‘ Exit For表示退出循环
Next i
‘依次输出排序后的数据
‘代码略
For i=1 To n
s2 = s2 + Str(a(i))
Next i
Text2. Text = s2
End Sub
Function IsPrime (m As Integer) As Boolean
‘ 本函数判断整数m是不是素数。是素数返回值为True,不是素数返回值为False
‘ 代码略
End Function
加框①处代码应改为。
加框②处代码应改为。
-
13、小明使用VB编写了一个按降序排名次的程序当数据相同时,排名相同)。程序运行时,随机产生10个[30,60]之间的随机数,并输出在列表框List中,单击“排名”按钮 Command1,在列表框List2中输出数据及其排名,程序运行界面如图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dim a (1 To 10) As Integer
Dim mc (1 To 10) As Integer
Private Sub Form Load( )
‘ 随机产生10个[30, 60]之间的随机数,保存在数组a中,并输出到列表框List1
‘ 代码略
End sub
Private Sub Command1_Click( )
Dim i As Integer, 3 As Integer, k As Integer
For i = 1 To 10
k = 0
For j = 1 To 10
If
Then ‘ ①k=k+1
‘ ②End If
Next j
Next i
For i = 1 To 10
List2.AddItem Str(a(i)) + " " + Str(mc(i))
Next i
End Sub
加框①处代码应改为。
加框②处代码应改为。
-
14、小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素按升序排列。
小赵编写的VB程序段如下:
p=1:q=10
Do While p < q
iMin p: iMax = p
For i =p+1 To q
If a(i) < a(iMin) Then iMin = i
If a(i) >a(iMax) Then iMax = i
Next i
t = a(iMin) : a(iMin) = a(p) : a(p) = t
t= a(iMax) : a(iMax) = a(q): a(q)=t
p=p+1
q = q-1
Loop
要使程序实现上述算法思想,则程序中划线处的语句是( )
A、iMax = p Then iMax = iMin B、If iMin =p Then iMin = iMax C、If iMax = p Then iMin = iMax D、If iMin = p Then iMax = iMin -
15、有如下VB程序段:
For n =1 To 4
p = n
For m = n+1 To 5
If a(m) < a(p) Then p = m
Next m
If p > n Then
temp=a(n): a(n) = a(p): a(p)= temp
End if
Next n
设数组元素a(1)~a(5)的值分别为“1000,1200,1018,1208,1019”,经过该程序段“加工”后,a(1)+a(3)的值为( )
A、2018 B、2019 C、2200 D、2208 -
16、采用下面的排序算法对数组a中元素进行排序。
Private Sub Command1_ Click ( )
Dim a(1 To 5) As Integer, i As Integer, 3 As Integer, c As Integer
a(1) = 22: a(2) = 44: a(3) = 11: a(4) =33: a(5) = 55: c = 0
For i = 1 To 4
m = i
For j = i + 1 To 5
If a(i) > a(m) Then m = j
Next j
If m <> i Then
t=a(1) : a(i)=a(m) : a(m)=t
c=c+1
End If
Next i
Label1.Caption= Str (c)
End sub
该程序运行后,标签Label1中显示的内容是( )
A、2 B、3 C、4 D、7 -
17、有如下VB程序段:
s = "7218634594”
n = Len(s) : c = 0
For i = 1 To n-1
a(i) = Val(Mid(s, i, 2)
Next i
For i= 1 To n-2 Step 2
k = i
For j= i+2 To n-1 Step 2
If a(j) < a(k) Then k=j
Next j
If k <>i Then
t=a(i): a(i)=a(k): a(k)=t
c=c+1
End if
Next i
Text1.Text=str(c)
该程序段运行后,Text1中显示的内容是( )
A、1 B、2 C、3 D、4 -
18、有如下VB程序段,其中数组元素a(1)到a(5)的值依次为“41,66,70,83,31”
For i = 5 To 4 Step -1
k=i
For j = 6-1 To 1 Step-1
If a(j) < a(k) Then k = j
Next j
If k <>i Then
t = a(i) : a(i) = a(k) : a(k) =t
End if
Next i
则该程序段运行后,数组元素a(1)到a(5)的值依次为( )
A、31,41,66,83,70 B、83,70,66,41,31 C、83,66,70,41,31 D、31,41,66,70,83 -
19、对数组元素d(1)到d(10)进行从小到大的排序其选择排序算法的VB程序段如下
For m=1 To 9
p=m
For n = m+1 To 10
Next n
If p<>m Then
tt=(p): (p)=d(m): d(m)=tt
End If
Next m
划线处的语句是( )
A、If d(n)<d(p) Then p=m B、If d(n)<d(p) Then p=n C、If d(n)>(p) Then p=n D、If d(n)>d(p) Then p=m -
20、实现某排序算法的部分VB程序如下:( )
For i =1 To 6
k=i
For j = i+1 To 7
If a(j) < a(k) Then k = j
Next j
If i <> k Then
t = a(i): a(i) = a(k): a(k) = t
End If
Next i
在排序过程中,经过某一遍排序“加工”后,数组元素a(1)到a(7)的数据依次为“10,41,75,12,63,11,85”,则下一遍排序“加工”后数组元素a(1)到a(7)的数据依次是( )
A、10,11,41,75,12,63,85 B、10,11,75,12,63,41,85 C、11,12,7,3,418 D、10,11,12,41,63,75,85