试题

试题 试卷

logo

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

教科版高中信息技术选修一 对分查找变式

a(1)=2:a(2)=4:a(3)=5:a(4)=6:a(5)=8:a(6)=10:a(7)=11:a(8)=12

n=0

Key=int(Rnd*7)+2

L=1: R=8

Do While L<=R

    m=(L+R)\2

    if Key=a(m) Then

       Exit Do

    Elseif a(m)<Key Then

       L=m+1

       n=n+1

    Else

       R=m-1

       n=n-1

Loop

print Str(n)

则程序运行后,输出的结果不可能是(     )

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

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

假设共有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

下列VB程序实现数字字母混合序列分离后分别排序,最后又合并输出。具体算法如下:在文本框Text1输入若干组混合序列,每组序列中仅包含一组字母和一个多位数字,序列之间用逗号隔开,以逗号结束。单击“排序”按钮command1,把每组序列中的字母和数字分开,并分别排序,最后在列表框list1输出。排序规则如下:所有数字按从小到大升序排序,字母序列按长度升序排序,若长度相同,直接按字母序列大小升序排序(按字母的ASCII码排序,“A”<“Z”<“a”<“z”)。实现算法的部分程序界面如图所示,VB程序代码如下,回答下列问题:

Private Sub Command1_Click()

Dim a(1 To 6) As Integer, b(1 To 6) As String, i as integer, j as integer

Dim c As String, k As Integer, tmp1 As Integer, tmp2 As String

s=text1.text

i = 1: k = 1: tmp1 = 0: tmp2 = ""

Do While i <= Len(s)

      c = Mid(s, i, 1)

      If c = "," Then

         a(k) = tmp1: b(k) = tmp2

         tmp1 = 0: tmp2 = ""

              ①    

      Else

        If  Then 

           tmp2 = tmp2 + c

        Else

         tmp1=tmp1*10+val(c)

        End If

      End If

      i = i + 1

    Loop

    For i = 1 To 5

      For j = 1 To 6 - i

        If a(j) > a(j + 1) Then tmp1 = a(j): a(j) = a(j + 1): a(j + 1) = tmp1

    If Len(b(j)) > Len(b(j + 1)) Or      ②       Then

          tmp2 = b(j): b(j) = b(j + 1): b(j + 1) = tmp2

        End If

      Next j

    Next i

    For i = 1 To 6

      List1.AddItem Str(a(i)) + b(i)

    Next i

    End Sub

返回首页

试题篮