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

某高校学籍管理系统软件有2万个学生的电子档案(已按学籍号排序),假设从中取出一条记录并与待查项进行比较所花时间为8毫秒,则用对分法在该系统中查找任意一位学生档案最多花费的时间约为  (   )
A . 16万毫秒 B . 8万毫秒 C . 10毫秒 D . 120毫秒  
有序数列3.6,8,11.6,22,24,27,31,36.5,35,46,通过对分查找查找数31,需找(     )次
A . 4 B . 3 C . 2 D . 1
在文本框 TxtIn中输入原文,单击“加密”按钮,对文中所有英文字母进行加密,其它字符不变,在文本框 TxtOut中输出加密结果。

加密规则如下表所示:

原字

A

B

C

X

Y

Z

a

b

c

x

y

z

密字

z

y

x

c

b

a

Z

Y

X

C

B

A

注:“A”的ASCⅡ码值是65,“a”的ASCI码值是97。

  1. (1) 若输入的内容是“ Beauty!”(不包括双引号),则输出为

    程序运行界面如图所示

  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private sub Cmd1- Click()

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

        ①

            For i=1 To Len(s)

              c= Mid(s, i, 1)

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

          c=②

        End If

        ③

      Next i

      TxtOut. Text =ans

    End Sub

  3. (3) 根据上述程序,“加密”按钮名称是  。
有如下VB程序段:

i=1

j=6

s=“”

Key=Text1. Text

Do While i <=j

 m=Int((i+j) / 2+0. 5)

 s=s+“ ”+a(m)

 If Key > a(m) Then

  i=m+1

 Else

  j=m-1

 End If

Loop

Text1. Text=s

数组元素a(1)到a(6)的值分别为“Beijing”“Guangdong”“Jiangsu” “Jiangxi”“Shanghai” “Zhejiang”,己按字典序排序。当key的值为“Zhejiang”时,单击命令按钮Command1,文本框Text1中显示的内容为(  )

A . Jiangxi Zhejiang B . Jiangsu Shanghai Jiangxi Zhejiang C . Jiangxi Zhejiang Shanghai D . Jiangsu Shanghai Zhejiang
有如下程序段:

s = "defghiabc"

key = Text1.Text

i = 1: j = Len(s)

Do While i <= j

    m = (i + j) \ 2

    c = Mid(s, m, 1)

    If c = key Then Exit Do

    If Mid(s, i, 1) < c Then

       If key >= Mid(s, i, 1) And key < c Then j = m - 1 Else i = m + 1

    Else

       If key > c And key <= Mid(s, j, 1) Then i = m + 1 Else j = m - 1

    End If

    ans = ans + Str(m)

Loop

运行程序后,若在文本框Text1中输入字符"b",则变量ans的值是(  )

A . 5 B . 5 7 8 C . 5 3 D . 5 7
某对分查找算法的VB程序段如下:

i= 1:j = 9:n =0

key=Val(Text1.Text)

Do While i<= j

  n=n+1

  m=Fix((i +j)/2)

  If key = d(m)Then Exit Do

  If key<d(m)Then j= m -1 Else i=m+1

Loop

数组元素d(1)到d(9)的值依次为“7,12,18,25,39,58,61,72,86”。若该程序段运行结束后,n的值为2,则key的值是(  )

A . 39 B . 18或61 C . 18或72 D . 12或61
有如下VB程序段:

Dim a(1 To 10)As Integer

Private Sub Form_Load()

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

a(6)=6: a(7)=7: a(8)=7: a(9)=8: a(10)=9

End Sub

Private Sub Command1_Click()

Dim key As Integer, i As Integer, j As Integer

Dim m As Integer, p As Integer

key=Val(Text1.Text)

i=1: j=10

Do While i<=j

m=(i+j)\2

If a(m)= key Then

p=m

j=m-1

ElseIf key<a(m)Then

j=m-1

Else

i=m+1

End If

Loop

Text2.Text=Str(p)

End Sub

程序运行时,在文本框 Text1中输入3,单击按钮,文本框Text2中显示的内容是(  )

A . 2 B . 3 C . 4 D . 5
以下是凯撒密码的改进版,请将下划线处内容补充完整。

import os  #开始

def NewCaesar(m,n,t):

  z='';i=0

  while i<:

    tmp=

    if tmp in m:

      if ord(t[i])<=90:

        z+=n[m.find(tmp)]

      else:

        z+=n[m.find(tmp)].lower()

    else:

      z+=t[i]

    i+=1

  return z

m='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

n='QWERTYUIOPASDFGHJKLZXCVBNM'

a=input('请输入<明文>a=')

b=NewCaesar(m,n,a)

print('对应的密文为:',b)

c=NewCaesar(n,m,b)

print('解密后明文为:',c)

if :

  print('加密解密成功!')

else:

  print('加密解密失败!')

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

os._exit(0)

#结束

密码的合法性。某网络服务平台,要求新注册用户的密码必须以字母开头,并且含有字母(区分大小写)、数字和下划线,密码字符的长度为6~18个字符。判断用户的密码是否合法的某Python程序如下,请在程序划线处填入合适的代码,完善程序。

n1 =False #判断数字

n2=False #判断下划线

flag=False #判断首字符和长度是否满足要求

password=input('请输入密码:\n')

n=     ①      

ch=password[0]

if 19>n>5 and (z'>=ch>='a' or 'Z>= =ch>='A'):

    flag=True

if flag:

    for i in range(1, n):

        ch=password[i]

        if '9'>=ch>='0':

            n1=      ②     

      elif ch= '_':

          n2=True

if      ③      

    print('结果:', '合法')

else:

    print('结果:', '不合法')
  ②  ③

导入模块需要使用语句。
某对分查找算法的VB程序段如下:

low = 1: high = 8

key = Int(Rnd * 15 + 1) * 2

Do While low <= high

    m = (low + high) \ 2

    If a(m) >= key Then

        high = m - 1

    Else

        low = m + 1

    End If

Loop

Text1.Text = Str(low)

若数组元素a(1)到a(8)的值依次为 1,10,11,12,15,30,32,37,执行该程序段后,文本框Text1中显示的内容可能是(    )

A . 1 B . 3 C . 4 D . 7
用VB编程解决一个问题:求所有五位数中满足能被17整除且十位数字为5的数之和。
  1. (1) 本题的所有五位数所指的范围是1~10000,10000~99999,10000~90000,还是11111~99999?写出本题的所有五位数所指的范围。
  2. (2) 算术运算符:除/、整除\、求余Mod。例子,设五位数为参数i,则i\10000为万位,(i\1000)Mod 10 为千位,类推,则五位数中十位数字为,i Mod 10为个位。写出五位数中十位数字为5的表示式。
  3. (3) 将本题程序填写完整。

    Private Sub Command1_Click()

        s = 0

        For i =To

            If i Mod 17 = 0 And  =5 Then

                s = s + i

            End If

        Next i

        Print s

    End Sub

  4. (4) 本题程序采用了什么算法?
有如下所示VB程序段:

str1 = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”

s = “”

For i = 1 To 4

    t = Int(Rnd*10) + 1

    If t Mod 2 = i Mod 2 Then

        t = t + 1

    Else

        t = t + 2

    End If

    s = s + Mid(str1,t,1)

Next i

List1.AddItem s

执行该程序段后,列表框List1中可能显示的内容是(   )

A . BADC B . BCDY C . DEFG D . CDEF
数组元素a(1)-a(2*n)中存储的一批正整数,以两个数为一组,每组中两个数均比前面一组的两个数要大。现用对分查找的思想,设计一个在数组a中查找数据key的程序,如果找到key,在标签Label1上显示“yes”,否则显示“no”。

Key=Val(Text1.Text)

i=1:j=n*2:flag=False

Do While i+1<=j And Not flag

    m=(i+j)\2

    If  Then m=m-1

    If a(m)=Key or a(m+1)=Key Then

        Flag=True

    Elseif a(m)>key Then

           

    Else

       

    End if

Loop

If a(i)=Key Or a(j)=Key Then flag=True

If flag Then Label1.Caption=“yes” Else Label1.Caption=“no”

划线处的代码正确的是(     )

A . ①m Mod 2=1  ②j=m-1   ③i=m+2 B . ①m Mod 2=0  ②j=m-1   ③i=m+2 C . ①m Mod 2=1  ②j=m-2   ③i=m+2 D . ①m Mod 2=0  ②j=m-2   ③i=m+2
有如下 VB 程序段:

s = "AAABBBCCCCDDEFF"

i = 1: j = Len(s): Key = "H": v = ""

Do While i <= j

    m = (i + j) \ 2

    c = Mid(s, m, 1)

    If c = Key Then Exit Do

    If c > Key Then

        j = m - 1: v = v & c

    ElseIf c < Key Then

       i = m + 1: v = v & c

    End If

Loop

执行完以上程序后,v的值为(   )

A . CDFF B . CDF C . CDEF D . DEF
上台阶:每一步只能迈上1个或2个台阶,上完n级台阶,一共有多少种走法,下面说法正确的是(    )
A . 用递归算法,递归关系式为f(n)=f(n-1)+2 B . 用递归算法,递归关系式为f(n)=f(n-1)+f(n-2) C . 用递归算法,递归关系式为f(n)=f(n+1)+f(n+2) D . 用递归算法,递归关系式为f(n)=f(n-1)*2
数组a为一组正整数,其奇数下标的数组元素是升序排序的奇数,偶数下标的数组元素是升序排序的偶数依据对分查找思想,设计一个在数组a中查找数据key的程序。实现该功能的VB程序段如下:

key=Val(Text1. Text):i=1:j=10

Do While i <=J

    m=Int(i+j)/2+0.5)

    If key Mod 2+ a(m) Mod 2= 1 Then m=m-1

    If a(m)= key Then

        List 1. AddIton"找到了!": Exit Do

    ElseIf a(m)> key Then

        j=m-2

    Else

        i=m+2

    End If

Loop

If i>j Then List1. AddItem "未找到此数"

如果数组元素a(1)到a(10)的数据依次是“1,4,5,6,11,10,23,16,25,20”,key的值为1,则执行上述程序段,变量m依次被赋值为(    )

A . 5  3  2  1 B . 6  3  2  1 C . 5  2  1 D . 6  5  2  1
在有限的步骤内解决某一问题的确切过程叫做算法。以下关于算法的描述中,错误的是(    )
A . 算法必须有输入,也必须有输出,而且可以有多个输入输出 B . 同一问题选用不同的算法执行效率可能会有很大差别 C . 任何复杂的算法最终都可以用顺序、分支、循环结构来实现 D . 《九章算术》中用“更相减损法”求最大公约数的记载属于算法的自然语言描述
从离地500米的空中自由落下一个小球,求从开始落下的时刻起,小球在最后1秒内的位移(重力加速度g以9.8米/秒2计)。程序如下,回答以下问题。

import math

h = 500

g = 9.8

t = math.sqrt(2*h/g)

hx = g*(t-1)*(-1)/2

hh = h-hx

print(“小球最后1秒下落的位移是:”, hh, "m")

  1. (1) 该程序代码中使用了库,库的名称是(   )。
    A . Limport B . math C . sqrt D . Print
  2. (2) 该程序代码中使用了常量,它的名称是(   )。
    A . h B . t C . 500 D . Hh
  3. (3) 该程序代码中使用了变量hh,它的数据类型是(   )。
    A . int B . float C . 列表 D . 字符串
  4. (4) 该程序中print(“小球最后1秒下客的位移是:”,hh,“m”),其中“m”的数据类型是(   )。
    A . int B . float C . 列表 D . 字符串
  5. (5) 该程序使用了物理公式计算空中自由落下个小球的位移,采用的算法处(   )。
    A . 解析算法 B . 穷举算法 C . 递归法 D . 选择排序
下面关于算法的错误说法是(    )
A . 算法必须有输出 B . 算法必须在计算机上用某种语言实现 C . 算法不一定有输入 D . 算法必须在有限步执行后能结束