试题

试题 试卷

logo

题型:单选题 题类:常考题 难易度:普通

浙江省高中信息技术 查找算法及程序实现同步练习

某对分査找算法的VB程序段如下:

i=1: j=5: k=0: s=""

key=Int(Rnd*100)

Do While i <=j

  k=k+1

  m=(i+j) \ 2

  s=s+Str(a(i))

  If key=a(m) Then

   Exit Do     ‘Exit Do表示退出循环

  ElseIf key < a(m) Then

   j=m-1

  Else

   i=m+1

  End If

Loop

Text1.Text=s

数组元素a(1)到a(5)的值依次为“6,18,25,37,49”。若该程序段执行后,k的值为3,则key的值不可能为(  )

A、4 B、18 C、47 D、55
举一反三
【加试题】为破解看病手续烦琐问题,杭州市卫生局、杭州市医疗保险管理服务局、杭州市民卡有限公司推出了“智慧医疗结算”便民服务。持卡人只要在市民卡电子帐户内预充小额费用,就可在医生诊室直接刷卡支付需现金付费的部分。

杭州市民卡是一张集成电路卡,具有信息储存、身份识别、电子支付等功能。每位市民卡的卡号是唯一的,卡内会记录每位市民的姓名、住址、金额等信息。

假设共有100000个市民,市民的卡号、姓名和金额分别存放在数组a、b和数组c中,a(i)是存放第i个市民的卡号,则对应的第i个市民的姓名存放在b(i)中,金额存放在c(i)中。

通过卡号查询其姓名和余额的程序界面如图所示。在文本框Text1中输入卡号,单击“开始查询”按钮,如果找到,就在Label1中显示卡内市民姓名和金额;否则显示“查无此人”。已知卡号按照从小到大排序。请按要求将下列程序补充完整。

Dim a (1 To 100000) As long

Dim b (1 To 100000) As string

Dim c (1 To 100000) As long

Private Sub Command1_Click()

Dim x As Long, i As Long, j As Long, m As Long, f As Boolean

x = Val(Text1.Text)

i = 1: j = 100000: f = False           、

Do While  i<=j and f=false       

          ①        

If x= a(m) Then

        f = True

    ElseIf x< a(m) Then

        j = m - 1

    Else

             ②       

    End If

 Loop

 If f=false Then

        Label1.Caption =”查无此人”

    Else

         Label1.Caption = b(i)+ "卡内余额为"+ Str(c(i)) + "元"

    End If

 End Sub

 Private Sub Form_Load()

     ’ 此过程用于对数组a、b和c进行初始赋值,代码略

 End Sub

返回首页

试题篮