第4单元 计算与问题解决 知识点题库

在现实生活中,人工解题的过程一般分为(   )。
A . 理解分析问题→寻找解题方法→用工具计算→验证结果 B . 寻找解题方法→理解分析问题→用工具计算→验证结果 C . 用工具计算→验证结果→寻找解题方法→理解分析问题 D . 用工具计算→验证结果→理解分析问题→寻找解题方法
编“字符串缩写”程序,实现如下功能:在文本框Text1中输入Ascii字符串,字符串中如果有由Ascii表中相邻字符(升序)组成的子串,则把该子串缩写成由第一个字符、“-”和最后一个字符组成,比如“abcdfpxcba”则缩写成“a-dfpxcba”。程序运行界面如下图所示。

  1. (1) 代码“Private Sub Command1_Click()”中的Command1_Click()是(单选,填字母:A .对象名 /B .事件 /C .事件处理过程)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim s As String, result As String, i As Integer, j As Integer, t As Integer

    s = Text1.Text  :t = Len(s) :result = ""

    i=1

    Do While i <= t

       j = i

       Do While i < t

           If Asc(Mid(s, i + 1, 1)) = Asc(Mid(s, i, 1)) + 1 Then

                i = i + 1

           Else

               Exit Do

           End If

       Loop

       If i > j Then

          result = ①

       Else

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

       End If

       i = i + 1

    Loop

    Text2.Text = ②

    End Sub

  3. (3) 如果输入的字符串是“aBcucwxyzdcb”,输出结果为
小明编写了一个简单算式计算器程序,功能如下:在文本框Text1中输入一个加法的算式,形式为:a+b,a和b都为正整数。单击按钮Command1后,在标签Labe1上显示算式的计算的结果。程序运行界面如下图所示:

  1. (1) 在设计程序界面时,应使用图b所示“控件工具箱”中的(填数字编号)添加标签框对象。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

     Dim key As String

     Dim a As Integer, b As Integer, ans As Integer, ch As String

     key=Text1.Text

     i=1 

     Do While i<=Len(key)

      ch=Mid(key,i,1)

      If ch>="0" And ch<="9" Then

      

      Else

       Exit Do ′退出循环

      End If

     Loop

     

     b=Val(Mid(key,i+1,Len(key)-i))

     ans=a+b

     Label1.Caption="算式计算结果为:"+Str(ans)

    End Sub

  3. (3) 运行时,在文本框中输入“123+10”,单击“计算”按钮后,对语句ch=Mid(key,i,1)执行次数是(单选,填字母:A .执行3次/B .执行4次/C .执行5次/C .执行6次)
有如下VB程序段:

c=0

k=1

For i= 2 To 8

    If I Mod 2=1 And a(k)<a(i) Then

      k=i

      c=c+1

    End If

Next i

数组元素a(1)到a(8)的值依次为“3,6,2,4,13,7,13,20”,执行该程序段后,变量k和c的值分别为(  )

A . 5  1 B . 5  2 C . 6  2 D . 8  3
关于对分查找,下列说法正确的是(  )
A . 对分查找的数据必须是有序排列的 B . 对分查找的数据类型必须是数值型的 C . 顺序查找比对分查找的查找速度快 D . 使用对分查找对未排序数据查找时速度较慢
下列问题中,适合使用枚举算法解决的是(  )
A . 计算两个电阻的并联值 B . 计算五个同学的平均身高 C . 查找100以内所有能被6整除的数 D . 超市的促销方案
小明设计了如下一个查找数据的程序:在一组升序的数列当中,查找不小于k的最小数的位置,如果该值存在,则返回其第一次出现的位置,如果不存在,则返回0。程序运行界面如图所示,VB程序代码如下,请回答下列问题:

  1. (1) 若在Text1中输入“8”,则Text2、Text3中输出的分别为
  2. (2) 请在划线处填入合适的代码。

    Dim a(1 To 10)As Integer

    Function find (L As Integer, R As Integer, key As Integer) As Integer

    If L>R Then

    find=0:Exit Function

    ElseIf a(L)>=key Then

    find=L: Exit Function

    Else

    If a(m)<key Then

    find=find(M+1, R, key)

    Else If Then

    find=find(L, M-1, key)

    Else

    find=M

    End If

    End If

    End Function

    Private Sub Command1_Click( )

    Dim k As Integer

    Dim p As Integer

    k=Val(Text1.Text)

    Text2.Text=Str(a(p))

    Text3.Text=Str(p)

    If p=0 Then

    Text2.Text="无"

    End If

    End Sub

    Private Sub Form_Load( )

    a(1)=3: a(2)=3: a(3)=3: a(4)=4: a(5)=7: a(6)=7

    a(7)=10: a(8)=13: a(9)=19: a(10)=21

    For i=1 To 10

    List1.AddItem Str(a(i))

    Next i

    End Sub

在数组d中使用下图所示的算法查找Key,对于该算法以下表述正确的是(    )。

A . 该算法的作用是从头至尾在数组中找同输入key相同的一个数,并输出该数的值 B . 该算法的作用是在数组中找到所有同输入的key相同的数,并输出它们的个数 C . 当key为15时,输出k的值为2 D . 无论输入数据是否在数组中,循环结束i的值均等于6
算法的重要特征不包括以下哪一项? (    )
A . 有穷性 B . 确定性 C . 数据输出 D . 唯一性
用二分法求解 x3- x2 + x - 1 = 0,完善下面程序。

def f(x):

    #定义方程

    return x**3-x**2+x-1

a=float(input("请输入解区间的左边界:"))

b=float(input("请输入解区间的右边界:"))

while abs(b-a)>1e-6:

    x0=(a+b)/2

    if:

        b=x0     

    if:

        a=x0  

    if:

        break

print("解为:",x0)

input("运行完毕,请按回车键退出...")

下列有关查找算法的说法,正确的是(  )
A . 进行对分查找时,被查找的数据必须已按升序排列 B . 进行对分查找时,如果查找的数据不存在,则无需输出结果 C . 在新华字典中查找某个汉字,最适合使用顺序查找 D . 对规模为n的数据进行顺序查找,平均查找次数是
小王到某城市,时间只有一天了,但小王很想到该城市的著名大景区游玩,该城市的著名大景区内共有N(超过 10) 个景点,标号为1至N,假设每个景点都有一个进出口。现在只知道每个景点有一条路连接下一个景点。小王想知道,根据这些道路信息,从其中一个景点出发, 最后再回到出发景点离开,最多能游玩多少个景点。

图片_x0020_100010

例如,共有N=5个景点,每个景点连接的下一个景点分别是 2,4,2,3,1。

景点号

1

2

3

4

5

下一景点号

2

4

2

3

1

则他可以从2号景点出发,最多可以游玩2号、3号、4号三个景点。程序代码如下:

Private Sub Command1_Click()

    Dim a(1 To 100) As Integer, d(1 To 100) As Integer    '数组 a 存放下一景点号

    Dim jd As String, m As String, c As Integer, i As Integer

    Dim s As Integer, p As Integer, k As Integer, ans As Integer

    jd=Text1.Text+","

    s=0 : c=0

    For i=1 To Len(jd)

        m=Mid(jd,i,1)

        If m<>"," Then

                   ①       

        Else

            c=c+1 : a(c)=s: s=0

        End If

    Next i

    For k=1 To 100 d(k)=0

    Next k

    ans=0: k=0

    For i=1 To c    '枚举起点

        If d(i)=0 Then p=i

            Do While p<=c

                If d(p)=0 Then

                    k=k+1 :d(p)=k

                Else

                           ②       

                    If y>ans Then ans=y k=0

                    Exit Do

                End If

                 图片_x0020_100011     '改错

            Loop

        End If

    Next i

    Text2.Text=Str(ans)

End Sub

  1. (1) 若有7个景点,且每个景点的连接情况为:6,3,5,2,7,5,4,那么小王最多可以游玩的景点数是
  2. (2) 在上面的程序代码中的下划线中填入代码

     ② 

  3. (3) 在上面的程序代码中,加框处代码有错,请改正。
某对分查找算法如下:

i=1:j=6:c=1

key=int(rnd*100+1)

do while i<=j

    m=(i+j)\2

    c=c+1

    if key<d(m) then j=m-1 else i=m+1

loop

数组 d(1)~d(6)的值分别为“17,21,29,32,39,75”,则程序运行结束后,下列说法错误的是(     )

A . i=j+1 是成立的 B . 若 key=21,则 i=1 C . 当 key=32 时, m=j 是成立的 D . 若 key 如果是 38,那么 m=4
关于算法的描述,正确的是(   )
A . 算法是解题方法的精确描述。只要是精确的算法,其步骤是可以无限的 B . 可以用计算机编程实现寻找100以内的素数 C . 算法可以不用输入,也可以不用输出 D . 流程图是一种通俗易懂的描述算法的方法
对于数列:1、2、3、4、5,用二分法查找数据“4”,最少的查找次数是(   )。
A . 4次 B . 3次 C . 2次 D . 1次
某物品柜有5层,每层有10个格子,每个格子只能放一个物品。第1层格子编号依次为1到10,第2层格子编号依次为11到20,依此类推。有9组物品(组号1~9),每组有2到8个物品,物品总数不超过50个。将9组物品按组号由小到大依次放入柜中,放置方式有两种:

1)整体放置。按格子编号由小到大的次序查找第一个可放置该组全部物品的空区域(空区域是指从某个空格子开始的同层连续的所有空格子),若找到,则在该空区域居中、连续放置该组全部物品,如图a所示。

2) 零散放置。若所有空区域格子数都小于该组物品数,则将该组每个物品依次放置在当前编号最小的空格子中,如图b所示。

编写VB程序,模拟物品放置。运行程序,在列表框List1中显示每组物品的组号和数量,单击“放置”按钮Command1,在列表框List2中显示每组物品放置结果。程序运行界面如图c所示。

图c

  1. (1) 若第1、第2组的物品数分别为6和2,则放置第2组物品的格子编号依次为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Constm = 50     'm表示物品柜的格子数

    Const w = 10    'w表示物品柜每层的格子数

    Const n = 9    'n表示物品的组数

    'f(i)存储第i个格子开始的同层连续的所有空格子数。f(i)为0表示第i个格子不是空格子

    Dim f(m)As Integer

    Dim a(n)As Integer

    Private Sub Form_Load( )

    '读取各组物品的个数依次存入数组a,并在List1中显示

    '代码略

    End Sub

    Function getpos(r As Integer As Integer

    '按格子编号从小到大的次序,查找空格子数≥r的第一个空区域

    '若找到,返回该空区域的起始编号,否则返回 -1

    '代码略

    End Function

    Private Sub Command1_Click( )

        Dim i As Integer,j As Integer, k As Integer,p As Integer,v As Integer

        Dim s As String

        For i = 1 To m

            f(i) = w -(i -1)Mod w     'w为10,表示每层的格子数

        Next i

        v = 1

        For i = 1 To n

        s = ""

        p =

        If p = - 1 Then

            j = 1

            Do While j < = a(i)

                If f(v) <> 0 Then

                    s = s + Str(v)

                    f(v)=

                    j = j + 1

                End If

               

            Loop

        Else

            k =(f(p)- a(i)) \ 2

            For j = k To 1 Step - 1

                f(p) = j

                p = p + 1

            Next j

            For j =

                f(j) = 0

                s = s + Str(j)

            Next j

        End If

        List2. AddItem "第" + Str(i) + "组:" + s

        Next i

    End Sub

以下流程图符合算法特征的是(    )。
A . B . C . D .
有如下VB程序段:

i = 1: j = 8: k = 4

Randomize

Key = (Int(Rnd * 4)+20)*4

Do While i <= j

    m = (i + j) \ 2

    If Key = a(m) Then

        Exit Do

    ElseIf Key < a(m) Then

        j = m - 1: k = k / 2

    Else

        i = m + 1: k = k * 2

    End If

Loop

数组元素a(1)到a(8)的值依次为“80,82,84,86,88,90,92,94”,执行该程序段后,变量k的值可能是(        )

A . 1,4,8 B .  2,4,8 C . 4,16,32 D . 1,4,16
小明和小华玩猜数字的游戏,所猜数字不超过800,小明首先猜400,小华说大了,小明又猜200,当小华再次说大了,小明猜100,当小华说小了,小明猜150,以此类推,直到猜到正确的数字。上述方法中蕴含的算法思想是(    )
A . 穷举算法 B . 递归算法 C . 二分查找法 D . 顺序查找法
某数据压缩方法描述如下:

①原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;②原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个为0,第2个为0;③原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个为0,第2个为重复数的个数,第3个为该数本身。

根据上述压缩方法,对应的解压缩方法示例如图所示。

小明学习了Python的PIL、matplotlib和numpy等模块知识后,现有图像文件“台州.bmp”,该文件的颜色模式为RGB,将该图像文件的每个像素点转换成灰度值(值为整数)后,使用上述压缩方法进行压缩并保存为文本文件。颜色RGB值转灰度值的公式如下:

灰度值=0.299×红色颜色分量+0.587×绿色颜色分量+0.114×蓝色颜色分量

  1. (1) 如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是
  2. (2) 实现上述功能的Python程序如下。请在划线处填入合适代码。

    from PIL import Image

    import numpy as np

    import matplotlib.pyplot as plt

    img = np.array(Image.open("台州.bmp"))

    row,cols,rgb = img.shape

    s=[]

    for i in range(row):

    for j in range(cols):

    r,g,b = img[i,j]

    hdz =

    s.append(hdz)

    ss = []:j = 0

    while j<len(s)-1:

    if s[j]!=s[j+1]:

    if s[j]!=0:

    ss.append(s[j])

    else:

    ss.extend()    #extend 函数用于在列表末尾一次性追加另一个序列中的多个值

    j+=1

    else:

    c = s[j]

    for k in range(j+1,len(s)) :

    if c!=s[k]:

    break

    else:

    ss.extend([0,k-j,s[j]])

    j=k

    if j!=len(s):

    ss.append(s[j])

    f = open("台州 255.txt","w+")

    f.write(",".join(map(str,ss)))

    f.close()

最近更新