试题

试题 试卷

logo

题型:单选题 题类:常考题 难易度:困难

算法与程序设计

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

k = Val(Text1.Text)

i = 1: j = 6: Label1.Caption = ″ ″: f = False

Do While i <= j And Not f

m = (i + j) \ 2

If a(m) = k Then f = True

If a(m) > a(i) Then

If a(i) <= k And k < a(m) Then j = m - 1 Else i = i + 1

Else

If a(m) < k And k <= a(j) Then i = i + 1 Else j = j - 1

End If

Label1.Caption = Label1.Caption + Str(a(m))

Loop

数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输入的值为35,执行该程序段,标签Label1中显示的值是(  )

A、72 35 B、24 35 C、72 24 35 D、72 24 24 35
举一反三
【加试题】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

【加试题】对分查找算法可用于求解方程的近似解。现要求方程x3-4x2+x+5=0的一个近似解,可设f(x)=x3-4x2+x+5,若有区间[a,b],使f(a)与f(b)异号,则该区间内必存在该方程的一个解。小吴为此编写了VB程序,功能如下:分别在文本框Text1和Text2中输入求解的区间值a和b(a<b),单击“计算”按钮Command1,若该区间必有解,则求解出该区间内的一个近似解(精确到10 s),否则提示“重新输入区间”,计算后的相关结果显示在列表框List1中。程序运行界面如图所示。

实现上述功能的VB程序如下,但加框处代码有错,请改正。

Function f(x As Double)As Double

    Dim Y As Double

    y=x^3-4*x^2+x+5:              ‘(1)

  End Function

  Private Sub Command1_Click()

    Dim a As Double,b As Double,m As Double,x As Double

    a=Val(Text1.Text):b=Val(Text2.Text)

    If f(a)*f(b)<0 And a<b Then

       Do While a<=b

       m=(a+b)/2

       If Abs(f(m))<0.00001 Then Exit Do

       If <0 Then         ‘(2)

          b=m

       Else

          a=m

       EndIf

      Loop

      x=Format(m,“0.00000”)      ‘Format函数用于定义输出的小数位数

      List1.AddItem"["&Text1.Text&","&Text2.Text&"]" & "解为:"&x

    Else

      List1.AddItem"["&a&","&b&"]" & "重新输入区间"

    EndIf

End Sub

返回首页

试题篮