相关试卷
-
1、某对分查找算法的VB程序如下:
Key=Val(Text1.Text)
i=1:j=6
n=0:f=False
flag=False
Do While i<=j And Not f
n=n+1
m=Int((i+j)/2)
If key=a(m)Then f=True
If key <a(m)Then j=m-1 Else i=m+1
Loop
若数组元素a(1)到a(6)的值依次为“3,9,12,17,28,39”,在文本框Text1中输入17后运行该程序,则以上程序段运行结束后,下列说法不正确的是( )
A、变量i的值为4 B、变量j的值为4 C、变量m的值为4 D、变量n的值为4 -
2、某对分查找算法的VB程序如下:
Key=Val(Text1.Text)
i=1:j=9
Do While i<=j
m=Int((i+j)/2)
If Key <a(m)Then j=m-1 Else i=m+1
Loop
若数组元素a(1)到a(9)的值分别为“10,13,13,15,18,18,18,25,28”,且在文本框Text1中输入的是18,执行该程序段后,变量j的值是( )
A、7 B、6 C、5 D、4 -
3、某对分查找算法的VB程序段如下:
Key=Val(Text1.Text)
i=1:j=10
Text2.Text=""
Do While i<=j
m=Int((i+j)/2+0.5)
If Key=a(m)Then Exit Do 'Exit Do表示退出循环
If Key<a(m)Then j=m-1 Else i=m+1
Text2.Text=Text2.Text +Str(a(m))
Loop
数组元素a(1)到a(10)的值依次为“8,17,24,30,36,40,55,58,61,66”,文本框Text1中输入的值是30,执行该程序段后,文本框Text2中显示的是( )
A、40 24 B、40 24 36 C、36 24 D、36 17 24 -
4、在升序数组a(1)到a(9)中插入一个数m,数组元素依然有序,则在插入该数前需先找到其应插入的位置。使用如下VB程序段查找,则数m应插入的位置是( )
i=1:n=9:f=False
Do While i<=n And f=False
If a(i)>m Then f=True
i=i+1
Loop
A、i B、i+1 C、i-1 D、n\2 -
5、某查找算法的部分VB代码如下:
t=False:m=0
For i=1 To 8
If a(i)=key Then
t=True
m=i
End If
Next i
数组元素a(1)到a(8)的数据依次为“3,5,15,8,9,5,7,9”,当变量key值为5时,运用该算法处理后,变量m的值是( )
A、0 B、2 C、6 D、8 -
6、下列有关查找算法的说法,正确的是( )A、进行对分查找时,被查找的数据必须已按升序排列 B、进行对分查找时,如果查找的数据不存在,则无需输出结果 C、在新华字典中查找某个汉字,最适合使用顺序查找 D、对规模为n的数据进行顺序查找,平均查找次数是
-
7、已知单调函数f(x)在[0,1]区间存在一个xo,使f(x0)=0。现在用对分查找法搜索x0的值,开始时搜索区间为[0,1],若经过10次对分查找后还需要继续搜索,则第11次搜索区间的长度为( )A、1/2 B、1/10 C、1/102 D、1/210
-
8、某学校图书管理系统中有10万条图书资料记录(已经索引排序),假设从中取出一条记录并与待查找项进行比较的时间为10毫秒,则用对分法在该系统中查找任意一本指定图书最多花费的时间约为( )A、100万毫秒 B、50万毫秒 C、10毫秒 D、17毫秒
-
9、在有序单词序列“bike,cake,data,easy,feel,great,hive,mark,sweet”中,用对分查找算法找到“easy”的过程中,依次被访问到的数据为( )A、feel,data,easy B、great,data,easy C、bike,cake,dada,easy D、feel,cake,data,easy
-
10、数组变量d(1)到d(8)的值依次为87,76,69,66,56,45,37,23,在用对分查找法找到“69”的过程中,依次被访问到的数据是( )A、69 B、66,69 C、66,76,69 D、56,66,76,69
-
11、用对分查找法和顺序查找法在数字序列“1,2,3,5,8,13,21,34,55”中查找数字13,两种方法都能访问到的数字是( )A、3 B、5 C、8 D、34
-
12、现利用VB编写一个程序。功能如下:数组xh,kh和cj分别存储了序号、考号和成绩数据,窗体加载时,序号、考号和成绩显示在列表框List1中。在文本框Text1中输入数值N,点击“筛选”按钮,可以将成绩最高的前N项筛选出来,并按由大到小的顺序显示在列表框List2中。如果成绩有并列,那筛选的结果可能会超过N项。程序运行界面如图所示。
Dim num As Integer
Dim xh(1To 1000)As String
Dim kh(1 To 1000)As String
Dim cj(1 To 1000)As Integer
Private Sub Form_Load( )
´本过程从数据库中将序号、考号、成绩分别存入数组xh,kh,cj中,并将总人数赋值给了num(总人数num为大于N的值),代码略
End Sub
Private Sub Command1_Click( )
Dim N As Integer, i As Integer, j As Integer
Dim t1 As String, t2 As Integer
N=Val(Text1.Text)
List2.Clear
For i=1 To N
k=i
´①If cj(k)<cj(j)Then k=j
Next j
If k<>i Then
t1=xh(i):xh(i)=xh(k):xh(k)=t1
t1=kh(i):kh(i)=kh(k):kh(k)=t1
t2=cj(i):cj(i)=cj(k);cj(k)=t2
End If
List2. Addltem xh(i)+" "+kh(i)+" "+Str(ci(i))
Next i
´以下代码是处理可能存在的重复项
For i=N+1 To num
If
Then ´②List2.Addltem xh(i)+" "+kh(i)+" "+Str(cj(i))
End If
Next i
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
-
13、小赵对选择排序算法进行了如下改进;在数组的所有元素中找出包含最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据;在余下的元素中找出包含最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据;以此类推,直到所有元素的数据按升序排列。小赵编写的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、If 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 -
14、有如下VB程序段:
i=6:flag=True
Do While i>=4 And flag=True
flag=False
For j=1 To i-1
If a(j)<a(i)Then
t=a(j):a(j)=a(i):a(i)=t
flag=True
End If
Next j
i=i-1
Loop
数组元素a((1)到a(6)的值依次为“24,7,37,45,11,52”,执行该程序段后,数组元素a(1)到a(6)的值依次为( )
A、7,11,24,37,45,52 B、52,45,37,24,11,7 C、7,11,37,45,24,52 D、52,24,37,45,11,7 -
15、有如下VB程序段:
For i=6 To 4 Step-1
k=i
For j=i-1 To 1 Step-1
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(5)的值依次为“41,66,70,83,31”,则经过该程序段“加工”后,数组元素的值依次为( )
A、31,41,66,83,70 B、83,70,66,41,31 C、31,41,66,70,83 D、83,66,70,41,31 -
16、将6个数据21,12,18,97,46,27依次存放在数组a(1)到a(6)中,按照下列VB程序进行排序:
Text3.Text=" "
For i=1 To 2
For j=6 To i+1 Step-1
If a(i)<a(j)Then
t=a(i):a(i)=a(j):a(j)=t
End If
Next j
Next i
Text3.Text =Str(a(i)+a(i+1))
程序运行后,文本框Text1中显示的内容是( )
A、33 B、45 C、48 D、113 -
17、有如下VB程序段:
Dim a(1 To 10)As String
Dim key As String
Text1.Text=""
For i=1 To 3
For j=i+1 To 10
If a(j)>a(i)Then
t=a(j):a(j)=a(i):a(i)=t
End If
Next j
Text1.Text=a(i)+Textl.Text
Next i
已知数组元素a(1)到a(10)的原始数据为“12”,“10”,“103”,“26”,“242”,“25”,“35”,“358”,“33”,“6”,则在文本框Text1中显示的内容是( )
A、6 35 358 B、358 242 103 C、35 358 6 D、6 10 12 -
18、某排序算法的VB程序段如下:
For i=1 To 3
k=i
For j=i+1 To 6
If a(j)>a(k)Then k=j
Next j
t=a(i):a(i)=a(k):a(k)=t
Next i
若数组元素a(1)到a(6)的值依次为“8,2,9,3,5,1”,则经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为( )
A、8,2,9,3,5,1 B、9,2,8,3,5,1 C、9,8,5,2,3,1 D、9,8,5,3,2,1 -
19、实现某排序算法的部分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、10,11,12,75,63,41,85 D、10,11,12,41,63,75,85 -
20、采用如下选择排序算法对数组a中的5个数据“23,86,98,65,2”按从小到大的顺序进行排序。
For i=1 To 4
k=i
For j=i+1 To 5
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、10次和3次 B、10次和4次 C、15次和3次 D、15次和10次