题型:综合题 题类:模拟题 难易度:普通
浙江省2019年信息技术选考模拟试卷一
实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dim a(1 To 20) As Integer ’用于保存n(n<=20)个按从小到大顺序排列的整数
‘Form_Load事件过程产生n个整数,按升序保存在数组a中,并在Text1中显示
Private Sub Form_Load()
‘代码略
End Sub
Private Sub Command1_Click()
Dim i , j , m , k As Integer
Dim x As Integer,f As Boolean ’变量f用于标记是否在数组中找到x
x = Val(Text2.Text)
i=1 :j=n : f=False
Do While i<=j And f=False
m = Fix((i+j)/2)
If a(m)=x Then f=True
If Then i=m+1 Else j=m-1 ‘(1)
Loop
If f = True Then
For k = m To n-1
‘(2)
Next k
n = n - 1
Text3.Text = ""
For k = 1 To n
Text3.Text = Text3.Text+Str(a(k))+","
Next k
Else
Text3.Text = "该数没有找到!"
End If
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:
⑴;⑵。
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 = VaKText1. 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
ElseIf key< a(m) Then
j = m - 1
Else
i = m + 1
End If
Loop
If Not flag And j > 0 Then
m = ‘②
If key = a(m) Then flag = True
End If
If flag Then
Text2. Text = Str(m)
Else
Text2. Text = "找不到"
End If
End Sub
①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#}
试题篮