试题

试题 试卷

logo

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

江苏省南通市海安市高级中学2022-2023学年高一下学期信息技术期中考试试卷

在序列“7,14,18,21,23,29,31,35,38,42,46,49,52”中用二分查找法查找数字“42”,一共找了(    )就找到了。
A、2次 B、3次 C、4次 D、5次
举一反三
【加试题】RGB颜色模式是用8位二进制数表示红色、8位二进制数表示绿色、8位二进制数表示蓝色即使用24位二进制数表示一种颜色的模式。若将每位二进制数取反,即(0改为1、1改为0)就会变为另一种颜色,我们称这种方式为颜色反相。


小明编写了一个VB程序实现上述功能,在名称为o_c_txt的文本框中输入原始颜色如#000000,点击命令按钮fx_cmd后,在名称为f_c_lab的标签中输出反相后的颜色如#FFFFFF。运行效果如图所示。

 实现上述功能的算法如下:

 数组dzb_h的16个元素分别存放16进制数的16个基本数码。

 依次取出原始颜色代码中每一位对应的16进制数码,例如原始颜色代码为#123456,第1次取出1,第2次取出2……

 在数组dzb_h各元素中找到对应16进制数码的元素

 运用规律:0+F=1+E…=7+8取得反相色并累加,例如:数组dzb_h第1个元素值的反相色的值是数组dzb_h第16个元素值。

 输出得到的反相色。

 实现上述功能的VB程序代码段如下,请完善相关程序代码。

Private Sub fx_cmd_Click()

  Dim dzb_h(1 To 16) As String

  Dim o_c As String, f_c As String, i As Integer, xbxh As Integer, c As String

  dzb_h(1) = "0": dzb_h(2) = "1": dzb_h(3) = "2": dzb_h(4) = "3"

  dzb_h(5) = "4": dzb_h(6) = "5": dzb_h(7) = "6": dzb_h(8) = "7"

  dzb_h(9) = "8": dzb_h(10) = "9": dzb_h(11) = "A": dzb_h(12) = "B"

  dzb_h(13) = "C": dzb_h(14) = "D": dzb_h(15) = "E": dzb_h(16) = "F"

  o_c = o_c_txt.Text  '存储原始色

  i = 2

  f_c = "#"     '存储反相色

  Do While i <= Len(o_c)

    c = Mid(o_c, i, 1)

    If Asc(c) > 96 Then c = Chr(Asc(c) - 32) '小写字母变大写字母

    xbxh = 1

    Do While xbxh < 17

      If {#blank#}1{#/blank#} Then    '在数组中找到对应16进制数码的元素

        f_c = {#blank#}2{#/blank#}    '累加反相色对应的16进制代码

        Exit Do

      End If

      xbxh = xbxh + 1

    Loop

    i = i + 1

  Loop

  f_c_lab.Caption = f_c

End Sub

编写一个查找最接近的数的VB程序:程序运行时,在文本框Text1中输人产生随机数的个数(1到100之间),单击命令按钮“产生随机数并升序排列”后,在列表框List1中显示已经按升序排列后的随机整数,然后在文本框Text2中输入要查找的整数,单击命令按钮"查找"后,在标签Label3中显示随机整数序列中与待查找数最接近的整数(当最接近的数有2个时,输出较大的一个)。程序运行效果如图所示:

实现上述功能的VB代码如下,请在横线处填入合适代码。

Dim n As Integer          '存储随机数的个数

Dim f(1To100)As Boolean

'f(i)为True时表示随机整数i已经产生过

Dim a(1 To 100)As Integer

'依次存放升序排序后的n个随机数

Private Sub Command1_Click()

'命令按钮“产生随机数并升序排列”的单击事件

    Dim i As Integer

    Randomize

    For i=1 To 100

        f(i)=False

    Next i

    n=Val(Text1. Text)

    For i=1 To n

        t=Int(Rnd * 100+1)

        Do While f(t)=True

            t=Int(Rnd * 100+1)

        Loop

        {#blank#}1{#/blank#}

    Next i

    j=0

    For i=1 To 100        '实现排序并输出

        If f(i)=True Then

            {#blank#}2{#/blank#}

            a(j)=i

            List1.AddItem Str(i)

        End If

    Next i

End Sub

Private Sub Command2_Click()

'命令按钮“查找”的单击事件

    Dim key As Integer

    key=Val(Text2. Text)

    If key <=a(1) Then Label3. Caption=Str(a(1)): Exit Sub

    If key >=a(n) Then Label3. Caption=Str(a( n)): Exit Sub

    L=1: R=n

    Do While L<=R                '找到与 key 较为接近的两个数a(R)和a(L)

        m=(L+R)\2

        If key<=a(m)Then

            R=m-1

        Else

            L=m+1

        End If

    Loop

    If {#blank#}3{#/blank#}Then

    '在a(R)和 a(L)中选出更接近key的数

        Label3. Caption=Str(a(R))

    Else

        Label3. Caption=Str(a L))

    End If

End Sub

返回首页

试题篮