试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

【bj】高中信息技术综合库——枚举算法及程序实现1

火柴棒等式。用火柴棒可以摆出0-9的数字,摆放规则如下图所示:

有一种火柴棒游戏,将火柴棒摆成形如“A+B=C”的火柴棒等式。用n根火柴棒摆放数学等式的规则约定如下:

⑴A、B都是不大于1000的正整数,若数值非零,则最高位不能是0;

⑵摆放“+”与“=”各使用两根火柴棒;

⑶A+B=C 与B+A=C视为相同的等式;

⑷n根火柴棒必须全部用上。

小明依据上述规则使用VB编写程序,研究“使用n根火柴棒,可以摆放出哪些不同的等式”,代码如下所示。请回答下列问题。

Dim sz(0 To 9) As Integer     ‘数组元素sz(i)用于存储数字i所使用的火柴棒的数量

Private Sub Form_Load()

    sz(0) = 6 : sz(1) = 2 : sz(2) = 5 : sz(3) = 5 : sz(4) = 4

    sz(5) = 5 : sz(6) = 6 : sz(7) = 3 : sz(8) = 7 : sz(9) = 6

End Sub

‘自定义函数hcs用于求解摆放数字x需要使用的火柴棒数量

Function hcs(ByVal x As Integer) As Integer

    Dim s As Integer, k as integer

    s = 0

    Do While     ①    

        k = x Mod 10

        s=s+sz(k)

        x = x \ 10

    Loop

    hcs = s + sz(x)

End Function

Private Sub Command1_Click()

    Dim n As Integer

    Dim a As Integer, b As Integer, c As Integer

    n = Val(Text1.Text)

    ans = 0

    List1.Clear

    For a = 0 To 999

        For b =    ②     To 999

            c = a + b

            If     ③    Then

                List1.AddItem (Str(a) + "+" + Str(b) + "=" + Str(c))

                ans = ans + 1

            End If

        Next b

    Next a

    List1.AddItem ("共有" + Str(ans) + "种等式")

End Sub

(1)、请在划线处填入合适的代码。

 ② ③ 

(2)、某次运行程序时,显示的等式中包含“7+17=24”,根据程序分析,输入的n的值为:
举一反三
【加试题】小明编写了一个VB应用程序,用于统计英文字母的个数,当用户输入一行英文语句,可以统计其中每个字母出现的次数。程序运行时界面如图所示。

程序运行时,在Text1中输入字符串,单击“开始统计”按钮,在List1中显示统计结果。函数IsLetter(x)功能,若x是字母,则返回值为字母x在字母序列“A”~“Z”中的序号,如字母“A”的序号为0,字母“D”的序号为3。若x不是字母,则返回值为-1。

Function IsLetter(x As String) As Integer

        If "A" <= x And x <= "Z" Then

            IsLetter = Asc(x) - Asc("A")

        ElseIf "a" <= x And x <= "z" Then

            IsLetter = Asc(x) - Asc("a")

        Else

                       ①        

        End If

    End Function

    Private Sub Command1_Click()

        Dim d(25) As Integer, m As Integer, n As Integer

        Dim s As String, c As String

        List1.Clear

        For m = 0 To 25                  '初始化数组d

            d(m) = 0

        Next m

        s = Text1.Text

        For m = 1 To Len(s)              '读取字符串中的字符进行判断

            c = Mid(s, m, 1)

            n = IsLetter(c)

            If n <> -1 Then    ②  

        Next m

        For m = 0 To 25                  '输出结果

            If    ③   Then

               List1.AddItem (Chr(m + Asc("a")) & ":" & d(m))

            End If

        Next m

   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

简化的VB词频统计程序。程序功能为:在文本框Text1中输入一篇英文文章,在文本框Text2中输入一个英文单词,单机“统计”按钮Command1后,在文本框Text3中显示这个英文单词出现的次数。程序运行界面如图所示。

查找的英文单词由连续的ASCII英文字符(a~z或A~Z)组成。组合词程序会进行分解,如river-small可拆分为2个单词river和small,查找的英文单词不区分大小写。程序代码如下,但加框处代码有错,请改正:

Private Sub Command1_Click()

Dim article As String,f As String,count As Integer

Dim i As Intege,,begin As Integer,s As String

article=Text1.Text : f=Text2.Text : count=0

begin = 1

For i=1 To Len(article)

   t = Mid(article,i,1)

   If Not(t>="A"And t<="Z" Or t>="a" And t<="z") Then

     If i > begin Then

        s =      '①

        If LowerCase(f)=LowerCase(s) Then

            count = count+1

        End If

      End If

          begin = i + 1

     End If  

  Next i

    Text3.Text=Str(count)

End Sub

Function LowerCase(word As String) As String    '单词转化为全小写的形式

Dim i As Integer,c As String

For i=1 To Len(word)

   c = Mid(word,i,1)

   '小写英文字母的ASCII码值比大写字母的值大32

   If c>="A" And c<="Z" Then c =    '②

   LowerCase = LowerCase + c

Next i

End Function

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

①{#blank#}1{#/blank#};②{#blank#}2{#/blank#}。

返回首页

试题篮