相关试卷
-
1、使用数据库应用系统的优势,不正确的说法是( )。A、能够存储大量数据,且占用空间少 B、存储和管理数据的多少不受限制 C、管理操作方便、快捷、数据维护简单、安全 D、检索统计准确、迅速、高效;数据应用共享性能好
-
2、数组a中存储的是左右交替上升的n个正整数,如下表所示:
a(1)
a(2)
a(3)
…
a(n-2)
a(n-1)
a(n)
3
25
38
…
55
31
12
依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下,但加框处代码有误,请改正。
Private Sub Command1_Click( )
Const n=6
Dim a(1 To n)As Integer,flag As Boolean
Dim i As Integer, j As Integer, m As Integer, key As Integer
‘读取一组正整数,按上述规则存入数组a中,代码略
key=Val(Text1.Text)
i=1
j=(n+1)\2
flag=False
Do While
And Not flag ‘①m=(i+j)\2
If key=a(m)then
flag=True
Elself key <a(m)then
j=m-1
Else
i=m+1
End If
Loop
If Not flag And j>0 Then
‘②If key=a(m)Then flag=True
End If
If flag Then
Text2.Text=Str(m)
Else
Text2.Text= "找不到"
End If
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
-
3、数组a中有100个正整数,已按升序排列。在文本框Text1中输入一个正整数key,寻找数组a中是否有一数对的和等于给定的数key。若存在和为key的数对,输出该数对所包含的两个整数,小数在前,大数在后。若有多个数对满足条件,则输出最先找到的数对;若找不到符合要求的数对,则输出“没有符合条件的数对”。小吴为此编写了VB程序,代码如下,但加框处代码有误,请改正。
Dim a(1 To 100)As Integer
Const n=100
Private Sub Command1_Click( )
Dim key As Integer, left As Integer, right As Integer, mid As Integer
Dim flag As Boolean
flag=False:key=Val(Text1. Text)
For i=1 To n-1
‘①right=n
Do While
‘②mid=(left +right)\2
If a(i)+a(mid)<key Then
left=mid+1
ElseIf a(i)+a(mid)>key Then
right=mid-1
Else
List1. AddItem Str(a(i))&" "&. Str(a(mid))
flag=True
End If
Loop
Next i
If Not flag Then List1.Addltem"没有符合条件的数对"
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
-
4、有一个按升序排列的数组a(a(1)~a(n),n≥3),从左到右相邻两个元素的差值(后一个元素值减去前一个元素值)先由小到大,再由大到小,且相邻的两个差值不相等。为了查找相邻两个元素的最大差值,小李编写的VB程序段如下:
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
Loop
Label1.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 -
5、某对分查找算法的VB程序段如下:
i=1:i=7:s=""
Key=Int(Rnd*100)
Do While i<=j
m=(i+j)\ 2
If Key=a(m)Then
s=s+ "M":Exit Do ‘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(7)的值依次为“24,35,38,41,45,69,78”。若该程序段执行后,文本框Text1中显示的内容可能是( )
A、RL B、LMR C、RLR D、LRLM -
6、采用如下对分查找算法对数组a中的7个有序数据“15,38,51,66,77,81,99”进行查找,要查找的数据为“55”,程序段如下:
i=1:j=7:x=55
Do While i<=j
m=(i+j)\2
If a(m)=x Then Exit Do
If a(m)>x Then j=m-1 Else i=m+1
Loop
执行完上述程序段后,根据最终变量值判断下列表达式,其中正确的是( )
A、i=m+1 B、i=m-1 C、j>m+1 D、j<m-1 -
7、已知数组元素a(1)到a(9)的值依次为“19,28,37,46,55,64,73,82,91”,若在Text1中输入29,并执行如下程序段后,Text2中显示的内容是( )
Key=Val(Text1.Text)\10
Text2.Text=""
i=1:j=9:f=False
Do While i<=j And Not f
m=(i+j)\2
If a(m)Mod 10=Key Then
search=m:f=True
ElseIf a(m)Mod 10>Key Then
i=m+1
Else
j=m-1
End If
Text2.Text=Text2.Text+Str(m)
Loop
A、5,2 B、55,37,28 C、55,28,37 D、5,7,8 -
8、某对分查找算法的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 -
9、某对分查找算法的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 -
10、某对分查找算法的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 -
11、在升序数组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 -
12、某查找算法的部分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 -
13、下列有关查找算法的说法,正确的是( )A、进行对分查找时,被查找的数据必须已按升序排列 B、进行对分查找时,如果查找的数据不存在,则无需输出结果 C、在新华字典中查找某个汉字,最适合使用顺序查找 D、对规模为n的数据进行顺序查找,平均查找次数是
-
14、已知单调函数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
-
15、某学校图书管理系统中有10万条图书资料记录(已经索引排序),假设从中取出一条记录并与待查找项进行比较的时间为10毫秒,则用对分法在该系统中查找任意一本指定图书最多花费的时间约为( )A、100万毫秒 B、50万毫秒 C、10毫秒 D、17毫秒
-
16、在有序单词序列“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
-
17、数组变量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
-
18、用对分查找法和顺序查找法在数字序列“1,2,3,5,8,13,21,34,55”中查找数字13,两种方法都能访问到的数字是( )A、3 B、5 C、8 D、34
-
19、现利用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
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
-
20、小赵对选择排序算法进行了如下改进;在数组的所有元素中找出包含最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据;在余下的元素中找出包含最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据;以此类推,直到所有元素的数据按升序排列。小赵编写的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