2.4 可以复用的代码 知识点题库

数塔问题。一组数字构成如图a所示的数塔,从数塔顶层出发,每个结点可以选择移动至左下方或右下方结点,一直走到塔底为1条路径。求从数塔顶层到塔底各条路径上数字和的最大值。

解决此问题可采用自底至顶分析的方法。如图a所示的数塔中,先从第3层开始分析:如果路径经过第3层的第1个数字12,那么从12到尾结点的路径上数字之和的最大值是当前结点值加上该结点左下方、右下方结点中的较大值,记作f(3,1)=12+141同理,f(3,2)=7+15、f(3,3)=26+15:再分析第2层,计算f(2,1)、f(2,2):最后计算出第1层f(1,1),即为所求结果。

  1. (1) 如图a所示数塔各条路径上的数字和的最大值为

  2. (2) 编写VB程序,运行界面如图b所示,程序代码如下,请在划线处填入合适的代码,将程序补充完整。

    Const n= 5

    Dim a(1 To n^2) As Integer   ‘数组a存储数塔数据,存储结构如图c所示

    Dim f(1 To n^2) As Integer   ‘数组f存储从第i层第j个数到底层尾结点的最大数字之和,其存储结构与数组a一样

    Private Sub Command2Click()

    ‘生成数塔,将数据存入a数组中,代码略

    End Sub

    Private Sub Command2Click()

    Dim i As Integer,  j As Integer, k As Integer

    For j=1 To n

    f((n-1)*n+j)=

    Next j

    For i=

    For j=1 To i

    k=(1-1)*n+j

    f(k)=

    Next j

    Next i

    Label1.Caption=“路径上的数字和最大值为:"+Str(f(1)

    End Sub

    Function max(a As Integer,  b As Integer) As Integer

    If a>b Then max=a Else max=b

    End Function

   在pygame中,使用图像的最简单方法是调用函数。通过来载入图片,表示图像文件的路径和名称。图像文件必须和程序在下才可以使用相对路径的引用方式。
Pygame自带了一个监听类循环,不断检查用户的操作,这个循环在程序运行过程期间持续工作。仔细阅读理解如下代码填写括号内容

while True:

  for event in pygame.event.get():          #(

    if event.type==pygame.QUIT:          #(

      sys.exit()                  #退出程序

    if event.type==pygame.MOUSEBUTTONDOWN: #(

以下哪项是一个绘图库模块(    )
A . Numpy B . Matplotlib C . Plot D . arange
下面是随机点名器的代码设计,大致可分为四个模块。一是导入相应模块,二是窗体界面元素的产生及布局和有关属性设置,三是打开“点名册.txt”,读取并保存姓名数据,四是设计两个按钮的单击事件代码。以下是部分代码,认真阅读,补充完成下列程序。

from ①         #导入tkinter模块

import tkinter.messagebox           #导入弹窗库模块

import random                       #导入随机数模块

import datetime                     #导入日期时间模块

root = Tk()                         #创建主窗口

root.title("随机点名器")            #设置窗口标题

root.geometry('808x280+300+200')    #设置窗口大小及位置

root.resizable(0,0)                 #禁止调整窗口大小

var=StringVar()                     #定义StringVar()类型

var1=StringVar()

c=②("点名册.txt",'r')          #以只读模式打开文件

a=c.readlines()                     #读取文件全部内容

c. ③                     #关闭文件

b=[]                                #b作为列表a的备份

下列VB表达式的值最大的是(  )
A . Len("12"+"21") B . Val("11"+"10") C . Val(mid("1221",3,2)) D . 1221mod 1000\ 10
若在文本框Text1、Text2,Text3中分别输入2,5,6,下列程序段运行后,标签Labe12中显示的内容是(   )

Private Sub Command1_Click( )

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

    A=Val(Text1.Text): b=Val(Text2.Text): c=Val(Text3.Text)

    Label2.Caption=Str(fx(a, b, c))

End Sub

Function fx(x As Integer, y As Integer, z As Integer) As Integer

    If x<y Then fx=z

    If x>y Then fx=y Else fx=x

End Function

A . 2 B . 5 C . 6 D . 0
Dim A As String, B As String

Dim C As Long

A="456":B="123": C=Val(A+B)

该程序段运行后,C的值为

函数如下

def chanageInt (number2) :

    number2 = number2+1

    print ("changeInt: number2=", number2)

#调用

Number1 = 2

chanageInt (number1)

print ("number:", number1)

打印结果哪项是正确的( )。

A . changeInt: number2= 3 number: 3 B . changeInt: number2= 3 number: 2 C . number: 2 changeInt: number2= 2 D . number: 2 changeInt: number2= 3
下列 DataFrame常用函数语句及其对应解释错误的是(      )
A . drop( )———删除数据 B . read_excel( )———读取Excel文件 C . append( )———合并 DataFrame对象 D . sort_values( )———排序
有如下VB程序段:

For i=1 To 5

    a(i)=Int (Rnd*9) +1

Next i

For i= 1 To 5

    If i Mod2=0 Then

        a(i) = a(i)\i

    Else

        a(i)= a(i) Mod i

    End If

Next i

执行该程序段后,在下列选项中a(1)至a(5)各元素可能是(    )

A . 0 3 2 1 4 B . 1 2 3 4 5 C . 0 1 4 2 3 D . 0 5 2 2 4
对k(k<=100)个数据进行排序时,可以利用一种排序方式进行处理,算法如下:

①每次将第i个数据和第2*i以及第2*i+1个位置的数据进行比较,将较大值交换到第i个位置上;

②从数组的第i(未排序数据个数一半位置)个位置重复步骤①一直比较到最前面,这样就可以将最大值交换到第1个位置;

③最终将1号位置上的值与未排序数据的最后一个进行交换,得到最大值;

④反复执行①②③三个步骤就可以将数据按升序排序;

过程如下图所示,其中a(1)=11,a(2)=25,a(3)=52,a(4)=39,a(5)=46,开始比较的位置从i=k\2个位置开始:

第一次排序过程:

步骤①:

步骤②:

步骤③:

第二次排序过程:

现要求在文本框Text1中输入一个整数k,对k个随机生成的两位奇数按上述排序方法进行排序,代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:

Dim a(1 To 100) As Integer

Dim k As Integer

Private Sub Command1_Click()

    Dim i As Integer

    k = Val(Text1.Text)

    Randomize

    For i = 1 To k

        a(i) =     ①   

        List1.AddItem Str(a(i))

    Next i

End Sub

Private Sub Command2_Click()

    Dim i As Integer, j As Integer, t As Integer, flag As Integer

    For i = 1 To k - 1

        For j = To 1 Step -1

            If Not judge(i, j) Then

                If      ②     Then

                    t = a(j): a(j) = a(2 * j): a(2 * j) = t

                Else

                    t = a(j): a(j) = a(2 * j + 1): a(2 * j + 1) = t

                End If

            End If

        Next j

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

    Next i

    For i = 1 To k

        List2.AddItem Str(a(i))

    Next i

End Sub

Function judge(t As Integer, s As Integer) As Boolean

        ③    

    If a(s) > a(2 * s) And a(s) > a(2 * s + 1) Or a(s) > a(2 * s) And 2 * s > k - t Then

        judge = True

    End If

End Function

根据以上代码回答问题:

  1. (1) 如果现有数据a(1)=27,a(2)=12,a(3)=33,a(4)=78,a(5)=61,完成一次排序之后a(2)的值是
  2. (2) 加框处代码有错误,则正确的是
  3. (3) 请将划线处补充完整

     ② ③ 

某网站注册密码需要符合以下两点条件:①密码不少于4位字符组成;②必须同时包含4种字符,大写字母“A-Z”,小写字母“a-z”,数字“0-9”,特殊符号“! @# $%~&.*”,为了方便批量注册,小迪同学编写了自动生成密码的VB程序,程序运行界面如图所示,当在文本框Text1中输人需生成密码长度,点击“生成密码”按钮(Command1),在文本框Text2中输出符合要求的密码串。

  1. (1) 下列对象不具有Caption属性的是(单选,填字母:A.Command1/B.Form1/C.Text1/D.Label1)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Sub Command1_ Click( )

        Dim a(0 To 4) As Integer, b(1 To 4) As Integer

        Dim key As String, s As String, n As Integer, k As Integer, i As Integer, j As Integer, sum As Integer

        key="ABCDEFGHJKIMNC)PQRSTUVWXYZabdefghijklmnopqrstuvwxyz0123456789! @# $ %&.*"

        Randomize

        n= Val(Text1.Text)

        a(0)=0:a(1)=26 :a(2)=52 :a(3)=62:a(4)=70     '记录每种符号的结束位置

        s= ""

        For i=1 To 4

            b(i) =0      'b数组记录某类符号是否使用

        Next i

        sum=4           '当前未使用字符类型,初始为4种

        Do While Len(s)+sum< n

            k=       '随机选择一个密码序号

            s=s+ Mid(key, k, 1)

            i= 1

            Do While

                i=i+ 1

            Loop

            b(i)= 1

            sum=4-b(1)-b(2)-b(3)-b(4)

        Loop

        '生成剩余未出现元素密码,保证4种符号均有出现

        For i=1 To sum

            j=Int(Rnd*4)十1

            Do While ( )

                j=j Mod 4+1

            Loop

            b(j)=1

            k=Int(Rnd * (a(j)-a(j- 1)))+a(j-1)+1

            s=s+Mid(key, k, 1)

        Next i

        Text2.Text=s

    End Sub

  3. (3) 程序代码中的加框处代码有误,请改正。
  4. (4) 如果文本框Text1中输入值2,文本框Text2中输出字符长度为(单选,填字母:A . 2/ B . 4 /C .运行错误/D .没有输出)
用来接收键盘输入的函数是,python输出的函数是
某信息仅包含大写字母,字符数不超过n*n(n*n 为密钥矩阵规模,n<10),加密过程如下:

根据上述加密算法编写解密程序。程序在启动时读取密钥矩阵存入数组a 中,在文本框Text1

中输入密文,点击“解密”按钮,在文本框Text2 中显示明文。运行界面如图c 所示。

  1. (1) 在文本框text1 中输入的密文是“8,1,23,2,17,3,33,4,”,则原文是(密钥矩阵按图a 中的密钥矩阵)
  2. (2) 实现上述算法的VB 程序如下,请在划线处填入合适的代码。

    Const n = 3

    Dim a(1 To n * n) As Integer

    Private Sub Command1_Click()

        Dim mw(1 To 2*n*n) As Integer

        '存储密文数据,奇数位存储加密值,偶数位存储该数据在原文中的位置

        Dim yw(1 To n*n) As Integer         '存储解密数据

        Dim k As Integer

        '生成规模为n*n 的密钥矩阵存入数组a中,代码略

        For i = 1 To Len(Text1.Text)

            c = Mid(Text1.Text, i, 1)

            If c <> "," Then

                t = t * 10 + Val(c)

            Else

               

                mw(k) = Val(t): t = 0

            End If

        Next i

        For i = 1 To k\2      '对密文解密,结果存数组yw

            yw(mw(2 * i)) =

        Next i

        s = ""

        For i = 1 To k\2

            s = s + Chr((yw(i)) + 64)

        Next i

        Text2.Text = s

    End Sub

    Function getmm(x As Integer, n As Integer)

        col = (x - 1) Mod n + 1

        row = (x - 1) \ n + 1

        getmm = a((col - 1) * n + row)

        If row Mod 2 = 0 Then getmm =

    End Function

有以下Python代码:

a=input(“请输入a的值:”)

print(a*3)

假如从键盘输入5,则运行结果为(    )

A . 555 B . 15 C . 15.0 D . aaa
有如下VB程序段:

s1 = "2019GaoKao"

For i = 1 To Len(s1)

    ch = Mid(s1, i, 1)

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

        ch = Str((Val(ch)+1) Mod 10)

        s2 = ch + s2

    ElseIf ch >= "a" And ch <= "z" Then

        ch = Chr(Asc(ch) - 32) s2 = s2 + ch

    End If

Next i

该程序运行后,s2的值是(     )

A . "A0A00213" B . "0213A0A0" C . "02130A0A" D . "0A0A0213"
现准备搭建一个家庭浇灌系统,实现缺水时自动给花补水。其相关器件连接如图所示。

micro:bit代码:

from microbit import *

while True:

if pin0.read_ analog()< 100:

pin2.write digital(0)

else:

pin2.write digital(1)

sleep(2000)

pin2.write_digital(0)

sleep(10000)

请分析该装置,完成下列题目。

  1. (1) 本套系统中,用来检测土壤湿度的设备属于信息系统中的                 
    A . 控制器 B . 执行器 C . 传感器 D . 受控对象
  2. (2) 根据程序代码,土壤干湿的临界值为               
    A . 1 B . 100 C . 2000 D . 10000
  3. (3) 根据程序代码,控制微型马达启动需要发送数字               
    A . 0 B . 1 C . 2000 D . 10000
  4. (4) 根据程序代码,微型马达接在               
    A . 0号口 B . 1号口 C . 2号口 D . 无法判断
  5. (5) 从信息系统设计来看,本系统中目前还没有                , 未来可以继续完善.
    A . 人机界面 B . 代码设计 C . 输出设计 D . 输入设计
学校创客社团开展机器人比赛活动,其中设置了机器人循迹项目。比赛规则如下:给出10* 10规模的矩阵地图,随机设定4个循迹点,小车以蛇形路线找到循迹点后,计算最长的两点直线距离。矩阵图中以0表示非循迹点,1表示循迹点,循迹过程如图a所示:

编写一个VB程序实现如下功能:单击“开始循迹”按钮Command1,呈现10*10矩阵地图,并随机生成4个循迹点,分别用数字1表示,数字0表示非循迹点;计算4点中相距最远的两点的直线距离,显示在标签Label1中。程序运行界面如图b所示。

  1. (1) 若随机生成的4个循迹点如图a所示,则该4点中相距最远的两点直线距离为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 10

    Const m=4

    Dim b(1 To 8) As Integer

    Private Sub Command1_Click()

        Dim f(1 To n* n) As Integer

        Dim i As Integer, j As Integer

        Dim w As Integer, k As Integer

        Dim length As Single, maxlen As Single

        Dim s As String

        '生成矩阵地图和随机生成4个循迹点,0表示非循迹点,1表示循迹点,存于数组f中,代码略。

        For i= 1 To n^2       '显示矩阵地图和4个循迹点

            s = s+ Str(f(i))

            If i Mod n=0 Then

                List1. AddItem s

                s=" "

            End If

        Next i

        w=1

        For i=1 To n

            For j=1 To n

                k = (n+1)* ((i-1) Mod 2)+(-1)-(i-1) * j

                If  Then     '记录循迹点所在位置

                    b(2*w-1)=i

                    b(2*w)=k

                    w=w+1

                End If

            Next j

        Next i

        i=1

        maxlen = 0

        Do While i<=m-1

            For j=i+1 To m

                

              If length > maxlen Then maxlen = length

            Next j

            i= i+1

        Loop

        Label1. Caption = Str( maxlen)

    End Sub

    Function reck(x As Integer, y As Integer) As Single

        Dim c As Integer, d As Integer

        Dim h As Single

        c=

        d=Abs(b(2*x)-b(2*y))

        h=Sqr(c^2+d^2)

        reck = h

    End Function

下列关于Python中numpy模块的说法错误的是(       )。
A . numpy是一个科学计算包 B . numpy中包含了很多数学函数,如三角函数、矩阵计算方法等 C . numpy模块中的arrange函数可以创建一个等差数列 D . numpy模块可以画函数图象
最近更新