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

某班师生玩一个游戏,n(n不超过1000)个同学站成一圈,逆时针编号为1-n,有两个老师A和B,A老师从1开始逆时针数k个同学,B老师从n开始顺时针数m个同学(注意A,B老师可能数到同一个学生),被老师选中的1个或2个学生离开圈子,剩下的学生继续。

程序开始时在Text1中输入同学数n,在Text2中输入k的值,在Text3中输入m的值,点击“开始”按钮,在label5中显示依次出圈的学生编号。程序运行如图所示:

VB程序如下,请将按要求答题:

Dim stu(1 To 1000) As Integer

Dim n As Integer

Private Sub Command1_Click()

  Dim left, k, m As Integer

  Dim stup1, stup2 As Integer

  n = Val(Text1.Text)

  k = Val(Text2.Text)

  m = Val(Text3.Text)

       ①    

  stup1 = n: stup2 = 1

  For i = 1 To n

    stu(i) = i Next i

  Do While left > 0

    stup1 = teachount(stup1, 1, k)

    stup2 =

    Label5.Caption = Label5.Caption & " " & Str(stup1)

    left = left - 1

    If         ②     Then

      Label5.Caption = Label5.Caption & " " & Str(stup2)

      left = left - 1

    End If stu(stup1) = 0

    stu(stup2) = 0

  Loop

End Sub

'f=1  表示逆时针数c个,f=-1表示顺时针数c个

  Function teachount(ByVal p As Integer, ByVal f As Integer, ByVal c As Integer) As Integer

  Do While c > 0

         ③    

    Do While stu(p) = 0

      p = (p + f + n - 1) Mod n + 1

    Loop

    c = c - 1

 Loop teachount = p

End Function

  1. (1) 加框处的语句有错误,请改正: 
  2. (2) 请将①处的语句补充完整:
  3. (3) 请将②处的语句补充完整:
  4. (4) 请将③处的语句补充完整:
给定一字符串(全部由小写字母组成),有n个字符(1≤n≤100),将每个字符存入到数组a中,有以下两种操作:

操作1:在文本框中分别输入L,R,T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的字符做相应的字符加密操作(1≤T≤100)。

操作2:在文本框中输入M(1≤M≤n),在标签中输出a(M)的值。

为了提高算法的效率,小明设计了如下算法,以n=10为例,将n个元素依次分成 段( 表示对 向下取整),每段的元素个数为 ,若最后有不足 个元素,则自成一段。给每段设置一个标记,如下表所示。

①对于操作1,若输入的L,R属于同一段,则直接对a(L to R)的每个元素的ASCII码进行后移T位的操作。如输入4,6,3,则第2段中的每个字符变为k,r,q,操作后如下表所示。

②对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个字符的ASCII码做后移T位的操作,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个字符的ASCII码做后移T位的操作,对a(L)元素所在段的下一段开始到a(R)元素所在段的上一段为止的每个段标记值增加T,这些段中的元素值保持不变。如在上表的基础_上再输入1,8,2,则第1段的3个字符和第3段中的前2个数都做相应的字符后移2位的操作,第2段的段标记值增加2,如下表所示。

③对于操作2,若输入M的值为4,则输出a(4)的值,若a(M)所在的段标记为奇数,a(M)的值为该数组元素的值,否则输出a(M)对应的大写字母的值,如a(4)=H。程序运行如下。请回答下列问题:

  1. (1) 若数组元素为“p,y,t,h,o,n,j,a,v,a”,依次进行以下3次操作后a(6)的值为

    操作1:在文本框Text1,Text2,Text3中依次输入1,8,3后,点击按钮Command1

    操作1:在文本框Text1,Text2,Text3中依次输入7,9,2后,点击按钮Command1

    操作2:在文本框Text4中输入6后,点击按钮Command2

  2. (2) 请在划线处填入合适的代码。

    Const n=10

    Dim a(1 To n)As String

    Dim dbj(1 To n)As Integer    ‘依次表示每段的标记值

    Dim bk As Integer       ‘表示每段的元素个数.

    Private Sub Form_Lond()

      bk = Int(Sqr(n))

      ‘读取数据,并存储到数组a中,代码略

      ‘读取数据,并存储到数组dbj中,代码略

    End Sub

    Function bl(x As Integer)As Integer   ‘bl函数返回数组元素a(x)的段编号

      bl=

    End Function

    Private Sub Command1_Click()

      Dim L Ax Integer, R As Integer, t As Integer

      L= Val(Text1.Text)

      R= Val(Text2.Text)

      t= Val(Text3.Texr)

      If bl(L)= bl(R) Then

        For i =L To R

          a(i)= Chr((Ase(a(i))- Ase("a")+t) Mod 26+97)

        Next i

      Else

        For i=L To bl(L)*bk

          a(i) = Chr((Ase(a(i))- Ase("a")+1) Mod 26+97)

      Next i

    For i= bl(L)+ 1 To bl(R)-1

      dbj(i) = dbj(i) + t

    Next i

    For i =

          a(i) = Chr((Ase(a(i))-Ase("a") + 1) Mod 26 + 97)

        Next i

      End If

      List1. AddItem Str(L) +"," + Str(R) + "," + Str(t) +“加密完成!”

    End Sub

    Private Sub Command2_Click( )

      Dim M As Integer

      Dim jg As Suring

      M= Val(Text4. Tex1)

      If dbj(bl(M)) Mod2 = 0 Then

        Jg=

      Else

        jg= a(M)

      End If

    Labell. Caption =“经过一 系列操作后. a(” + Str(M) +“)的值为:“+ ig

    End Sub

导入模块的方式错误的是(   )
A . import mo B . from mo import * C . import mo as m D . import m from mo
要将显示一个有背景色的窗口改为显示一个有背景图片的窗口应将*处改为两句,请填写在下划线处。

screen.fill((255,255,0))    #窗口填充黄色*

               #加载背景图像

                #将背景图画在窗口

pygame.display.update()        #窗口刷新

某日期加密授权码的生成方法如下:

①授权码由9位字符组成,前8位为日期的密文,最后1位为验证码;

②取日期各位的字符,若该字符第一次出现,则直接取其对应的加密字符,否则取下一个不重复的加密字符;

③求出所有日期字符数值的和,将和除16取余加1得到一位验证码字符,取得的验证码重复时,处理规则与②相同。

加密字符对应表如下:

值(十进制)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

加密字符

K

n

G

j

L

t

W

b

O

a

P

H

Z

Q

Y

C

小李设计了一个生成8位日期(YYYYMMDD格式)授权码的VB程序,程序功能如下:在文本框Text1中输入一个8位有效日期,单击“生成”按钮Command1后,在标签Label2中显示该日期的授权码。运行界面如图所示。实现上述功能的VB程序如下。

  1. (1) 若输入的日期为"19970601",则其授权码是
  2. (2) 请在画线处填入合适的代码。

    Dim f(0 To 15)As Integer

    Const code ="KnGjLtWbOaPHZQYC"

    Private Sub Command1_Click( )

        Dim rq As String,sq As String

        Dim c As Integer,i As Integer,d As Integer

        rq = Textl.Text:sq=""

        For i= 1 To 8

            c=Val(Mid(rq,i,1))

            d=d+c

            sq=   ①   

        Next i

        yz =GetChar(d Mod 16+1)

        Text2.Text = sq + yz

    End Sub

    Function GetChar(x As Integer) As String

      Dim flag As Boolean

      flag = False

      Do While flag = False

          f(x) =f(x) +1

          If f(x) =1 Then

               ②   

            f(x) =f(x) +1

            flag=True

          Else

            x=(x+1) Mod 16

          End If

      Loop

    End Function

    以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②

使用Python编程研究一组幂函数的图象问题,程序如下。

import matplotlib.pyplot as plt

import numpy as np

# numpylinspace(start, stop, num=50)

#产生从start到stop的等差数列,num为元素个数,默认50个

x = np. linspace(-1,1,50)

forn in [1/3,1/2,1,2,3]:

    y=x**n

               

plt. show( )

请回答下面问题:

  1. (1) 划线处应填写的语句是
  2. (2) 程序运行后,绘制了个函数的图象,分别为
导入模块需要使用语句。
下列表达式的运算结果不等于8的是(   )
A . Len("2019选考")+Sqr(4) B . Abs(Int(-7.8)) C . Val(Mid("789",2,1)) D . Asc("M")-Asc("e")
在美国国家信息交换码中,ASCII值从32到127是可以打印并显示的字符,把这96个字符随机调整次序,生成密码本。根据输入的密钥和明文,单击“加密”按钮Command1,输出密文。基本算法如下:

1)用数组mab分别记录1~96个字符的ASCII值,用数组zm记录对应字符在密码本中位置,如mab(9)=65,表示密码本中第9个字符是“A”,则对应的zm(65)=9;

2)把密钥中每个字符的ASCII值的各个数字进行累加(如Hi分别为(7+2)+(1+0+5)),将累加的和除以9取余数后加7,作为将密码本转换成二维表的列数;

3)每个明文在转换后二维表中位置作为密文,该位置是用十六进制表示的行号和列号。

程序运行的界面如下图所示:

实现上述功能的VB程序如下,请回答以下问题:

  1. (1) 若输入密钥为“AB”,则根据算法及密码本,字母“A”加密后的密文是
  2. (2) 请在划线处填入合适的代码。

    Dim Mab(96) As Integer        '存储密码本中每个字符的ASCII值

    Dim zm(127) As Integer         '存储ASCII值32至127的字符在密码本数组mab中的下标

    Private Sub Form_Load()

        '产生密码本及96个字符在密码本中位置,代码略。

    End Sub

    Function p(s As String) As Integer

        Dim i As Integer, t1 As Long

        Dim sum As Integer, s1 As String

        t1=0

        i=1

        Do While i<=Len(s)

            s1=Mid(s, i, 1)

            t1=Asc(s1)

           

            i=i+1

        Loop

        p=sum Mod 9+7

    End Function

    Private Sub Command1_Click()

        Dim i As Integer, t As Integer, hang As Integer

        Dim s As String, s1 As String, Lie As Integer

        List1.Clear

        s1=Text1.Text

        t=p(s1)

        Label5.Caption= “将密码本换成一张”+Str(t)+ “列的二维表”

        i=1

        Do While i<=96

            s=s+Chr(Mab(i))+ “”

            If i Mod t=0 Or i=96 Then

                List1.AddItem s

                s= “”

            End If

            i=i+1

        Loop

        wz= “123456789ABCDEF”

        s=Text2.Text

        For i =1 To Len(s)

            s1=Mid(s, i, 1)

           

            hang=(t1-1)\t+1

            lie=(t1-1) Mod t+1

            s2=

        Next i

        Text3.Text=s2

    End Sub

有如下VB程序段

Dim k As Integer, num As Integer, m As Integer

Dim s As String, ans As String

s =" abcdefghi jk lmnopqrs tuvwxyz "

k=26:ans=””

m = Val(Text1.Text)

Do While m> 0

    x=Int(Rnd()*k)+1

    ans=ans+Mid(s, x,1)

    s =Mid(s,1,x-1)+Mid(s,k,1)+Mid(s,x+1,26-x)

    k=k-1:m=m-1

Loop

Text2.Text = ans

文本框Text1中输入4,执行上述程序后,文本框Tex2中有显示的内容不可能为(    )

A . snyg B . tuna C . vmlc D . Amzm
疫情期间,学校开展“教室就餐”,食堂提供A、B、C、D四种套餐,学生通过网络订餐,订餐后的数据都存在数据库中(如图a所示),已按班级由小到大排列,套餐字母均为大写。

现需要设计一程序,在窗体加载时,读取数据库中学生的订餐情况,以班级+姓名+订餐情况输出至列表框List1中,在文本框Text1中输人班级,单击命令按钮Command1统计该班级的订餐情况,程序运行如图b所示。

  1. (1) 将结果输出至列表框List2中,使用的语句为:List2.Addltem s。 其中“AddItem”是列表框类ListBox对象的(单选,填字母:A .属性名/B .过程名/C .方法名/D .事件名)。
  2. (2) 实现上述功能的VB程序段如下,请在画线处填入合适的代码。

    Dim xm(1 To 1000) As String, bj(1 To 1000) As Integer

    Dim tc1(1 To 1000) As String, tc2(1 To 1000) As String

    Dim n As Integer '学生总人数

    Private Sub Form_ Load( )

        '从数据库中按班级、学号有序地读取学生的姓名、班级、中午套餐、晚上套餐,

        '依次存人xm、bj、tc1、tc2数组中,在List1中显示,总人数存人n中,代码略

    End Sub

    Private Sub Command1_ Click( )

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

        Dim zc(1 To 4) As Integer, wc(1 To 4) As Integer        '用于统计套餐数量

        k = Val(Text1.Text)

        For i=1 To 4     '为数组赋初始值

            zc(i)=0:wc(i)=0

        Next i

        i=1:j=n        '查找班级里第一-位同学的序号

        Do While i<=j

            m=(i+j)\2

            If  Then i=m+1 Else j= m-1

        Loop

        For i=j+1 To n

            If bj(i) = k Then

                         '改错

               wc(fx(tc2(i)))= wc(fx(tc2(i))) + 1

            End If

            If  Then Exit For

        Next i

        's为班级订餐统计信息,代码略

        List2.AddItem s

    End Sub

    Function fx(a As String) As Integer              '将套餐字母转换为数字序号

       

    End Function

  3. (3) 程序中加框处代码有错,请改正:
小明参加课外活动小组,对盆栽中某一枝条做好标记,记录28天内该枝条的生长情况,每周日记录一次,四次记录结果分别为8.8cm、10.1cm、10.9cm、11.4cm。他使用Python编码。制作了关于枝条长度(单位:cm)的柱形图,代码及柱形图如下图所示,代码空白处应填。 (       )

A . "8.8,10.1,10.9,11.4" B . "8.8","10.1","10.9","11.4" C . 8.8,10.1,10.9,11.4 D . [8.8,10.1,10.9,11.4]
有如下VB程序段:

For i = 1 To 5

    a(i)= Int(Rnd * 10)

Next i

For i = 2 To 5

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

        a(i) = a(i) + 1

    ElseIf a(i) Mod 2 = 0 And i Mod 2 = 0 Then

        a(i) = a(i -1) -1

    End If

Next i

执行程序后,a数组各元素不可能是(    )

A . 6,6,4,3,3 B . 0,-1,9,8,4 C . 4,3,5,8,7 D . 0,1,3,2,0
替代密码是明文中的每个字符根据密钥替代成密文中的另一个字符,替代后的各个字母保持原来的位置。

例:使用凯撒密码对明文“yza”进行加密的过程:“yza”→121 122 97→…→ 98 99 100 →“bcd”

要求:如果明文是大写字母则需要转小写。如果明文是其它字符则不作任何处理。例如:明文为“ABc,z”密钥为3,则结果密文为“def,c”

  1. (1) 如果明文为“EAa:H”密钥为3,则结果密文为
  2. (2) 程序实现如下,请在划线处补充代码。

    def change(code,key):

       #change函数功能:实现要进行加密的字符code由大写字母转小写字母

    #判断转换后的字符code是否为小写字母,若是则进行加密

      

       m=ord(code)

       return chr(m)

    code=input(“请输入要加密的明文”)

    key=int(input(“请输入密钥”))

    code_new=“”

    for i in code:

       code_new+=change(i,key)

    print(code_new)

若要表示能被5整除的随机两位正整数,则下列表达式正确的是(    )
A . Rnd*90+10 B . Int(Rnd*10)*10+10 C . Int(Rnd*9)*10+10 D . (Int(Rnd*9)+1)*10+10
执行语句s=Len(Mid("VisualBasic",1,6,)后,s的值是(    )。
A . Visual B . Basic C . 6 D . 11
在Python中,ord( )函数的作用是将字符转换为对应的ASCII码值,chr()函数的作用是将ASCII码值转换为对应的字符。阅读下列程序,写出运行结果。

def encrypt(st1):

st2=""

for s in stl:

st2 += chr(ord(s)+5)

return st2

print(encrypt("ktocji"))

运行结果是

在一次比赛中,需要随机给10名选手各编一个0~9范围内的唯一序号,对应的Python程序段如下:

____

a,b=[0]*10,[False]*10

i=0

while i<=9:

  ____

  if not b[r]:

    a[i]=r

    ____

  i=i+1

print(a)

则划线处的代码依次是(        )

① r=random.randint(0,10)

② b[r]=True

③import random

④ b[i]=True

⑤from random import randint

⑥ r=random.randint(0,9)

A . ⑤①② B . ⑤⑥④ C . ③①④ D . ③⑥②
下列属于非法调用的函数是(  )。
A . sqr(-5) B . Sgn(-5) C . Exp(-5) D . Int(-5)
有如下VB程序段:

i =1

Do While i<=5

    a(i)= Int(Rnd*10)*2 + 1

    If Not flag(a(i)) Then flag(a(i))=True

    i= i + 1

Loop

已知数组flag各元素的初值为False,运行以上程序段程序,数组元素a(1)到a(5)的值可能为(    )

A . 3  9  16  15  11 B . 5  7  9  7  13 C . 9  3  7  1  15 D . 9  17  5  21  1