试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:普通

浙江省2019年信息技术选考模拟试卷一

编写VB程序,实现如下功能:在文本框Text1中输入一个整数,单击“查找删除”按钮Command1,采用对分查找法在数组a(从小到大排列,并显示在文本框Text2中)中查找该数。若找到,则从数组a中删除该数(该数后面的数组元素都前移一位),并在文本框Text3中显示删除后的结果;否则,在文本框Text3中显示“该数没有找到!”。运行效果如图所示。

实现上述功能的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

以上程序段运行时,为了实现上述功能,加框处代码应改正为:

;⑵

举一反三
有100个大小形状一样的玻璃球,其中有1个玻璃球的重量轻于其他99个玻璃球,如何用一台无砝码的天平,以最快的速度找出这个轻玻璃球?运用“三分筛选”法来模拟“寻找”这个轻玻璃球的算法如下:

步骤1:如果待筛选的玻璃球个数<3,则认定已经找出了这个玻璃球(认定方法参照步骤2中描述),停止筛选,并输出经过的筛选总次数;否则,重复执行步骤2。

步骤2:按编号依次将玻璃球均分成3份,如果有多余的放入第3份中;比较第1、2份的玻璃球重量:

①如果第1份等于第2份的重量,则选取第3份的玻璃球作为下一次筛选的对象;

②如果第1份小于第2份的重量,则选取第1份的玻璃球作为下一次筛选的对象;

③如果第1份大于第2份的重量,则选取第2份的玻璃球作为下一次筛选的对象;

重复执行步骤1。

例如:第1次筛选的小球编号区间是1~100,均分成三份的待称重小球编号分别是1~33、34~66、67~100;第2次则选取以上3份中的一份进行再筛选、再均分……直至找到。

解决上述问题的VB程序功能如下:运行程序,在列表框List1中显示100组数据,分别代表每个编号及对应的小球重量(其中有且只有一个小球的重量与其他小球不同),单击“筛选”按钮Command1,在列表框List2中显示每次筛选的编号区间和完成筛选的总次数。程序运行界面如图。

返回首页

试题篮