当前位置: 高中信息技术(信息科技) /浙教版(2019) /必修1 数据与计算 /第三章 算法的程序实现 /3.3 简单算法及其程序实现
试卷结构: 课后作业 日常测验 标准考试
| 显示答案解析 | 全部加入试题篮 | 平行组卷 试卷细目表 发布测评 在线自测 试卷分析 收藏试卷 试卷分享
下载试卷 下载答题卡

浙教版(2019)高中信息技术必修一 3.3 简单算法及其程...

更新时间:2021-12-22 浏览次数:92 类型:同步测试
一、单选题
  • 1. 下列问题中可以用枚举算法解决的是(     )。
    A . 根据三个系数a、b、c的值,求一元二次方程ax2+bx+c=0的解 B . 找出一串钥匙(30把)中所有能打开某一实验室门的钥匙 C . 将10个评委的打分按由大到小的顺序进行排序 D . 已知5个电阻阻值,求它们并联后的阻值
  • 2. 已知由字母组成的字符串s,现要实现如下功能:将字符串s中的字母按照26个英文字母顺序依次输出(重复出现的字母只需输出一次)。如s="Congratulate",输出结果为"aceglnortu",为实现上述功能,在横线处填入的代码应该是(    )

    Dim a(1 To 26)As Integer

        s=Text1. Text

        For i=1 To Len(s)

               ①      

            If c>="A" And c<="Z" Then c=Chr(Asc(c)+32)

                ②    

        Next i

        For i=1 To 26

            If a(i)<> 0 Then Label1.Caption= Label1.Caption+     ③    

    Next i

    A . ①c=Mid(s,i,1)   ②a(Asc(c)-96)=a(Asc(c)-96)+1   ③Chr(96+i) B . ①c=Mid(s,i,1)   ②a(i)=a(i)+1   ③Chr(a(i)) C . ①c=Mid(s,i,1)   ②a(Asc(c)-96)=a(Asc(c)-96)+1   ③Chr(a(i)) D . ①c=Mid(s,i,1)   ②a(i)=a(i)+1   ③Chr(96+i)
  • 3. 有如下VB程序段:

    Dim a(1 To 10) As Integer

    s = "7218634594": n = Len(s)

    t = 0

    For i = 1 To n - 1

        a(i) = Val(Mid(s, i, 2))

    Next i

    For i = 1 To n - 2 Step 2

        k = i

        For j = i + 2 To n - 1 Step 2

            If a(j) < a(k) Then k = j

        Next j

        If k <> i Then

            temp = a(i): a(i) = a(k): a(k) = temp: t = t + 1

        End If

    Next i

    Text1.Text = Str(t)

    该程序段运行后,文本框Text1中显示的内容是(   )

    A . 1 B . 2 C . 3 D . 4
  • 4. 有如下VB程序段:

    a=1: b=1: n=12

    f(1)=a: f(2)=b

    For i=3 To n

        c=a+b

        f(i)=c Mod 4

        a=b

        b=c

    Next i

    执行该 段程序后,数组元素f(12)的值为(    )

    A . 0 B . 1 C . 2 D . 3
  • 5. 有如下VB程序:

    Dim i As Integer,j As Integer,k As String,n As Integer

    n=3

    List1.Clear

    For i=1 To n

        k=“”

        For j=1 To i

            k=k+“*”

        Next j

        List1.AddItem k

    Next i

    该程序运行中,在列表框List1中显示的是(  )

    A . B . C . D .
  • 6. 有如下程序段:

    Function delStr (S As String, m As Integer) As String

        Dim n As Integer:n = Len(S)

        If m <1 Or m > n Then delStr = "输入位置有误!"

        If m = 1 Then delStr = Mid(S, 2, n-1)

        If m < n Then delStr = Mid(S, 1, m-1)+Mid(S, m+1, n-m)

        If m = n Then delStr = Mid(S, 1, n-1)

    End Function

    Private Sub Command1_ Click()

        Dim S As String:Dim i As Integer

        S = Text1.Text

        For i = 1 To 10 Step 2

            S = delStr(S, i)

        Next i

        Text2. Text = S

    End Sub

    文本框Text1中输入Happybirthday,执行该程序段,文本框Text2中显示的是(      )

    A . apybrtda B . apbrhday C . Happybirhday D . Day
  • 7. 有n个整数存放在数组a中,整数k1与k2且k1<k2。某程序段如下:

    i = 1: L = 0: R = n + 1

    Do While i < R

    If a(i) < k1 Then

    L = L + 1

    If L <> i Then tt = a(i): a(i) = a(L): a(L) = tt

    i = i + 1

    ElseIf a(i) > k2 Then

    R = R - 1

    tt = a(i): a(i) = a(R): a(R) = tt

    Else

    i = i + 1

    End If

    Loop

    则执行上述代码后,下列说法正确的是(   )

    A . 数组a变成升序排列 B . a(L)<=k1 C . a(R)>=k2 D . a数组中大于等于k1小于等于k2的元素个数为R-L-1
  • 8. 某VB程序段如下:

    s = "Hello World"

    s1 = ""

    n = Len(s)

    For i = 1 To n \2

        If Mid(s, i, 1) > Mid(s, n - i + 1, 1) Then

            s1 = s1 + Mid(s, i, 1)

        Else

            s1 = Mid(s, n - i + 1, 1) + s1

        End If

    Next i

    Text1.Text = s1

    执行该程序段后,在文本框Text1中显示的是(    )

    A . WlleH B . oorld C . dlroo D . Orldo
二、程序分析
  • 9. 为了丰富学生业余生活,学校举办校园歌手大赛,邀请了5位音乐老师作为评委打分,打分的上限是10分。统计选手得分时,去掉一个最高分,再去掉一个最低分,取评委打分的平均值作为选手的最终得分。程序运行结果界面如图所示。

    请分析任务,完成下列题目。

    程序代码如下:

    Private Sub Command1_Click()

    Dim s As single

    Dim Max , Min ,i As Integer

    Dim a(5) As Integer

    Max = 0

    Min =     ①       

    s = 0

    For i = 1 To 5

        a(i) = InputBox("请输入第" & i & "个分数")

        s = s + a(i)

        If     ②    Then Max = a(i)  

        If  Min > a(i) Then Min = a(i)   

    Next i

    s =       ③          

    Text1.Text = Max

    Text2.Text = Min

    Text3.Text = s

    End Sub

    Private Sub Command2_Click()

    Text1.Text = ""

    Text2.Text = ""

    Text3.Text = ""

    End Sub

    Private Sub Command3_Click()

    End Sub

    请分析任务,完成下列题目。

    1. (1) 下列控件在本程序窗体中用到的是(   )
      A . 列表框 B . 单选按钮 C . 标签 D . 组合框
    2. (2) 为精确计算选手的最终得分,程序中变量s的数据类型应定义为(   )
      A . 整型 B . 单精度型 C . 字符型 D . 布尔型
    3. (3) 程序中①所在位置表达式正确的是(   )
      A . 0 B . 1 C . 5 D . 10
    4. (4) 程序中②所在位置表达式正确的是(   )
      A . Max < a(i) B . Max >a(i) C . Max =a(i) D . Max <> a(i)
    5. (5) 程序中③所在位置表达式正确的是(   )
      A . s/3 B . (s+Max+ Min)/5 C . (s - Max - Min) / 3 D . (s - Max - Min) / 5
    6. (6) 变量s所表示的含义是(   )
      A . 最低分 B . 最高分 C . 评委打分 D . 最终得分
    7. (7) 当一个选手的得分分别为9,8,9,7,8的时候,下列最终得分计算正确的是(   )
      A . 8 B . 8.33 C . 7.66 D . 7
    8. (8) 程序中Command1控件响应的事件是(   )
      A . 单击事件 B . 双击事件 C . 载入事件 D . 活动事件
    9. (9) 程序中数组a(5)包含的元素个数是(   )
      A . 1 B . 5 C . 6 D . 10
    10. (10) 程序“For i = 1 To 5 ……Next i”中“s = s + a(i) ”被执行的次数是(   )
      A . 1 B . 4 C . 5 D . 6
  • 10. 有一个报数游戏,n个人排成一圈,游戏开始时规定个报数号m,然后从其中一个人开始按顺时针报数1,2,3,…,n,当某人报到的数为m的倍数时,即被淘汰,其他人继续游戏,直到最后。现用VB设计了一个程序,程序界面如下图所示。在文本框Text1中输入参加游戏的人数n,在文本框Text2中输入报数号m,单击“报数”按钮,即在列表框List1中显示每次被淘汰的人的顺序号。

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

    Private Sub Command1_Click()

        Dim n As Integer,m As Integer

        Dim a(1 To 50)As Integer

        n= Val(Text1. Text)

        m= Val(Text2. Text)

        For i= 1 To n

           

        Next i

        s=0;j=0

        Do While s <n

            t=0

            Do While t <m

                         

                t=t+ a(j)

            Loop

            a(j)=0

            s=s+1

            List1. Additem"第"+Str(s)+"次:"+Str(j)

        Loop

    End sub

    1. (1) “报数”按钮的对象名称是
    2. (2) 程序代码中,加框处有错,请改正。

      应改为

    3. (3) 程序代码中,将横线处语句补充完整。
    4. (4) 程序运行结束后,变量t的值是
  • 11. 小明用VB编写了统计短文(不超过500字)中英语单词频次的程序。在文本框Text1中输入短文,单击“单词统计”按钮Count后,在列表框List1中按字典升序输出单词(不区分大小写)和出现频次,程序运行结果如图所示。

    请回答下列问题:

    1. (1) 观察程序代码,该事件处理过程名为
    2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

      Private Sub Count_Click()

          Dim word(1 To 500) As String, num(1 To 500) As Integer

          Dim s As String, c As String, tmp As String, t As Integer

          Dim i As Integer, j As Integer, k As Integer, low As Integer, high As Integer

          Dim m As Integer, n As Integer, b As Integer

          For i = 1 To 500

              num(i) = 0

          Next i

          s = Text1.Text : n = Len(s)

          i = 1 : b = 1 : m = 0 : j = 0

          Do While i <= n

              c = Mid(s, i, 1)

              If c >= "A" And c <= "Z" Or c >= "a" And c <= "z" Then

                  j = j + 1

              Else

                  If j > 0 Then

                      tmp = 

                      low = 1

                      high = m

                      Do While low <= high

                          t = (low + high) \ 2

                          If tmp = word(t) Then

                              Exit Do

                          If tmp < word(t) Then

                              high = t - 1

                          Else

                              low = t + 1

                      Loop

                      If   Then

                          For k = m To low Step -1

                              word(k + 1) = word(k)

                              num(k + 1) = num(k)

                          Next k
                           

                          num(low) = 1

                          m = m + 1

                      Else

                          num(t) = num(t) + 1

                      End If

                      j = 0

                  End If

                  b = i + 1

              End If

              i = i + 1

          Loop

          List1.Clear

          For i = 1 To m

              List1.AddItem word(i) + ":" + Str(num(i)) + "次"

          Next i

      End Sub

      Function Lowcase(t As String) As String

          Dim c As String, s As String, i As Integer

          s = ""

          For i = 1 To Len(t)

              c = Mid(t, i, 1)

              If c >= "A" And c <= "Z" Then s = s + Chr(Asc(c) + 32) Else s = s + c

          Next i

           

      End Function

  • 12. 亲戚寻找。小李总是因为认不清亲戚而苦恼,于是他设计了如下程序来模拟亲戚寻找的过程。已知:如果1和2是亲戚,1和3是亲戚,则2和3也是亲戚。代码思维如下:

    1)将每个人看成是一个钩码,能挂在另一个挂钩底下,自己底下也能挂其他挂钩。

    2)如果两个钩码在同一条钩码串上,则为亲戚(如2、3都能找到1)。

    3)如果两个是亲戚但不在一串钩码上,则可将其中一串的最上面的钩码挂在另一串的下方。

    例如从图a加框处的前三行数据可得到图b所示的钩码串1和钩码串2,从第四行数据可知9、5也为亲戚,则可将两串钩码合并,合并后3为2的顶端,5为3的顶端,其余数据以此类推。

    根据算法思想,编写VB程序功能如下:程序初始化时给出6条亲戚关系显示在List1中,单击“理关系”按钮,在List2中显示每个人所在钩码的顶端编号。在Text1和Text2中分别输入两人的编号,单击“询问”按钮,输出两个人是否为亲戚关系。程序运行界面如图a所示。

    1. (1) 根据图a数据,若输入两人的编号为4和5,则两人的关系是否为亲戚(填:是/否)。
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

      Const n = 9              '总人数

      Const m = 6              '已知的亲戚关系数

      Dim a(1 To n) As String , b(1 To n) As String

      Dim f(1 To n) As String    '记录不同的亲戚钩码串成员,每条亲戚钩码串内互为亲戚

      Dim k As Integer           '亲戚钩码串的数目

      Private Sub Form_Load()

       '初始化List1和List2,生成m条亲戚关系,每条亲戚关系的编号对应存储在数组a(i)和b(i) '中,在List1中输出a(i)和b(i),代码略

      End Sub

      Private Sub Command1_Click()

          Dim i As Integer, x As Integer, y As Integer

          f(1) = a(1) + b(1)     '利用a(1)、b(1)生成第一条钩码串存储在f(1)中

          k = 1                  'k为钩码串编号

          For i = 2 To m

              x = root(a(i), 0): y = root(b(i), 0)  'x为调用函数获取a(i)所在的钩码串编号

              If x = 0 And y = 0 Then k = k + 1:  '根据x与y分类讨论

              If x <> 0 And y = 0 Then f(x) = f(x) + b(i)

              If x = 0 And y <> 0 Then f(y) = f(y) + a(i)

              If x <> y And x <> 0 And y <> 0 Then   'x、y在不同钩码串则将两条钩码串合并

                  f(x) = f(x) + f(y): f(y) = f(k): k = k - 1

              End If

          Next i

          For i = 1 To n         '输出每个人所在钩码的顶端编号

              x = root(CStr(i), 0): y = root(CStr(i), 1)  'Cstr()函数用于去除字符前导空格

              If x <> 0 Then

                  If y = Len(f(x)) Then List2.AddItem Str(i) + "  " + CStr(i)

                  If y <> Len(f(x)) Then List2.AddItem Str(i) + "  " +

              End If

          Next i

      End Sub

      '按钮Command2的功能为判断输入的两个人是否为亲戚关系,代码略

      Function root(a As String, b As Integer) As Integer  '参数a表示待查找目标,参数b

      '表示返回值类型,0表示返回目标所在钩码串编号,1表示返回目标在该钩码串中的位置

      Dim m As Integer, n As Integer, i As Integer, j As Integer

      m = 0: n = 0: i = k: j = 0

          Do While i > 0

              If a = Mid(f(i), Len(f(i)) - j, 1) Then m = i: n = Len(f(i)) - j: Exit Do

              j = j + 1

              If j = Len(f(i)) Then i = i - 1: j = 0

      Loop   

      If  Then root = m Else root = n

      End Function

  • 13. 编写一个VB程序,实现如下功能:输入s位数字构成的数字字符串(第1位数字不为0),移除k (0<k<s)个数字后,在保证原数字相对位置不变的情况下,使剩余数字组成的新数为最小(注:新数第1位不能为0)。例如8个数字构成的数字字符串“71803296”,移除3个数字,得到5位数字构成的最小数是“10296”,具体算法如图a所示。

    算法分析:要使得到的5位数字最小,首先需保证能取到5个数字,且首位应尽量小,那么取首位数的范围应保证余下有4个数字,即在前4位中选最小非0的数字。

    程序运行时,在文本框Text1中输入一个数字字符串,在文本框Text2中输入要移除的数字个数,单击“运行”按钮CmdRun后,在标签Labell显示得到的最小新数,程序运行界面如图b所示。

    1. (1) 程序运行时,若要在名为Form1的窗体标题上显示“删数”,可以在Form  Load事件处理过程中添加语句为(单选,填字母:A . Form1. Text ="删数"\B . Form1. Caption ="删数"\C . Form1. AddItem"删数")
    2. (2) 实现上述功能的VB程序代码如下,请在划线处填入合适的代码。

      Private Sub CmdRun_ Click()

      Dim Num As String,New_num As String     ' Num为输入的数字字符串

      Dim i As Integer, j As Integer, m As Integer,

      Dim As Integer, s As Integer, k As Integer

      Dim a(30) As String, b(30) As Integer

      Num = Text1. Text: s = Len(Num)

      k = Val (Text2. Text)      'k为删除数字个数

      For  i=1  To  s

          a(i) = Mid(Num,i,1)

      Nexti

      j =1

      m=1

      n=

      For i=m+l To n      '取第一个非零最小数字

          If     Then m=I     '加框处程序代码有误,请改正

      Next i

      b(j)= m

      Do While  '取其他最小数字

          m=m+1

          n=n+1

          For i=m+1 To  n

              If  a(i) < a(m) Then m= i

          Next i

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

      Loop

      For i= m+1 To  s     '最后直接取的数字

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

      Next i

      For j=1 To s- k       '输出最小数

          New_ num =

      Next j

      Labell. Caption = New_num

      End Sub

    3. (3) 加框处程序代码有误,请改正。

微信扫码预览、分享更方便

试卷信息