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

两质数(素数)的差为2,称此对质数为质数对。下列程序是找出n以内的质数对,并成对显示结果。其中,函数s判断参数m是否为质数。请完成以下问题:

Function s(m) As Boolean

 Dim i As Integer

 ______1_______

For i = 2 To Int(Sqr(m))

 If m / i = 0 Then  s = false     ‘3

Next i

End Function

Private Sub Command1_click()

 Dim i, n As Integer

 Dim p1, p2 As Boolean

  n = Val(Text1.Text)

  p1 = s(3)

  List1.Clear

  For i = ______2_____

  p2 = s(i)

  If p2 = True Then List1.AddItem = Str(i - 2) + " " + Str(i)   ‘4

  p1 = p2

Next i

End Sub

  1. (1) 在设计界面时,将窗体标题设置为“寻找质数对”,应该修改的属性是
  2. (2) 代码中画线处1应填入,画线处2应填入
  3. (3) 代码中3和4画线处的代码有误,3处应改为,4处应该为
有如下 VB 程序段

Private Sub Command1_Click()

Const s1 = "efg"

s2 = "&auif,+eg$Ymfhe":s3 = ""

For i = 1 To Len(s2)

    If being(Mid(s2, i, 1), s1) Then

        s3 = s3 + Str(i) + ","

    End If

Next i

Text1.Text = s3

End Sub

Function being(x As String, y As String) As Boolean

      being = False

      For i = 1 To Len(y)

        If x = Mid(y, i, 1) Then

            being = True:Exit Function

        End If

      Next i

End Function

执行后文本 Text1 中显示的内容是(  )

A . 4, 5, 6, 9, 10, B . 5, 8, 9, 13, 15, C . 2, 1, 3, 3, 1, D . 4, 5, 6, 13, 15,
数组 a 规模为(m+1)×n,其中 a(1) ~a(m ∗ n)元素中存储数据,数据中m×n个元素按行序排列成一个数字矩阵如图所示。计算每列数据的和,并依次存储在m+1行对应的数组元素中。

依据该算法思想,设计一个VB程序,实现该功能的代码如下,请回答下列问题。

  1. (1) 根据代码可知,该程序的按钮对象名是
  2. (2) 在程序划线处填上合适代码。

    Const m = 6

    Const n = 5

    Dim a(1 To (m + 1) ∗ n) As Integer

    Private Sub Form_Load()

    '数组初始化,生成 m×n 个两位数的随机整数并赋值给数组a

     Randomize

    For i = 1 To m ∗ n

     a(i)=    ①    

    Next i

    End Sub

    Private Sub Cod1_Click()

    Dim i As Integer, j As Integer

    For i = 1 To n

        ②    

    Next i

    '将计算后数据,按 m + 1 行,n 列输出到列表框中,代码略

    End Sub

    Function sum(y As Integer) As Integer         '函数功能是计算每列数据和

    sum = 0

    For i =     ③     

     sum = sum + a(i)

    Next i

    End Function

     ② ③

有如下程序,从数据库获取成绩,单击“读取数据”按钮将n个非降序数保存在数组cj(1)~cj(n)中,并将成绩显示在列表框中。在文本框中输入成绩key,单击“查找”按钮,在标签中显示大于等于该成绩的学生人数。

  1. (1) 界面中“查找”按钮的对象名为
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码

    Dim cj(1000) As Integer, n As Integer

    Private Sub btncmd1_Click( )

    Dim i As Integer, j As Integer

    Dim k As Integer ,tmp As Integer

    For i = 2 To n

      tmp = cj(i)

      j = BinarySearch

      For k = i To j + 1 Step -1

        cj(k) = cj(k - 1)

      Next k

      cj(k) = tmp

    Next i

    For i = 1 To n

      List1.AddItem Str(cj(i))

    Next i

    End Sub

    Private Sub btncmd2_Click()

    Dim i As Integer

    i = BinarySearch(Val(Text1.Text), 1, n)

    Label2.Caption = "共有" ++ "位同学大于等于该成绩。"

    End Sub

    Function BinarySearch(key As Integer,i As Integer,j As Integer) As Integer

    Dim m As Integer

    Do While i <= j

    m = (i + j) \ 2

      If cj(m) >= key Then

        j = m - 1

      Else

        i = m + 1

      End If

    Loop

    BinarySearch =

    End Function

    Private Sub Form_Load()

    '从数据库获取n个成绩存储在 cj(1) ~cj(n)组中,代码略

    End Sub

   pygame模块提供了等函数;random模块用于产生;sys模块包含了跟Python相关的函数。
(贪心算法)最大整数问题:设有n个随机生成的正整数,将它们连接成一排,组成一个最大的多位整数。其求解思想是:先把整数转换成字符串,然后再比较ab和ba,如果ab≥ba,就把a排在b的前面,反之则把a排在b的后面。例如:n=3时,3个整数13,312,343,连成的最大整数为34331213。

小王同学编写了一个VB程序,功能如下:在列表框List1中随机生成n个1~1000之间的整数,单击“运行”按钮Command1后进行处理,最大整数结果输出在文本框Text1中。当n=5时,程序运行界面如图所示。

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

  1. (1) 要将按钮Command1的高度修改为800,以下赋值语句正确的是(单选,填字母:A .Command1_Height=800/B .Command1.Height=800/C .Height=800)。
  2. (2) 当n=3时,生成3个数:618,681,68,由这三个数组成的最大整数为
  3. (3) 请在画线处填入合适的代码。

    Const n=5

    Dim a(1 To 10)As Integer

    Private Sub Command1_Click( )

      Dim i, j, t As Integer

      For i=1 Ton-1

          For j=n To i+1 Step-1

              If    ①   Then

                  t=a(j-1):a(j-1)=a(j):a(j)=t

              End If

          Next j

      Next i

      For i=1 To n

          Text2. Text=Text2. Text+Str(a(i))

    Next i

    End Sub

    Private Sub Form_Load( )

      Randomize

      For i=1 To n

        a(i)=   ②   

        Text1. Text=Text1. Text +Str(a(i))

      Next i

    End Sub

    Function cmp(a As Integer,b As Integer) As Boolean

      If Str(a)+Str(b)<Str(b)+Str(a) Then

        cmp=True

      Else

        cmp=False

      End If

    End Function

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

找出三位正整数中能被3整除的整数。

for i in range(①,②):

      if i%3==0:

下列选择正确的是(    )

A . ①是100,②是999 B . ①是100,②1000 C . ①是101,②1000 D . 以上都不对
有如下 VB 程序段:

s = "582319476"

i = 1: max = 0: res = ""

Randomize

Do While i <= Len(s) \ 3

    tmp = Int(Rnd * 9 + 1)

    If tmp >= max Then

        res = res + Mid(s, tmp, 1)

        max = tmp

        i = i + 1

    End If

Loop

执行该程序段后,变量res的值不可能是(    )

A . "446" B . "249" C . "346" D . "897"
模拟剪刀石头布的游戏,骰子是一个正六面体,用1~3这3个数分别代表剪刀、石头、布这三种情况,使用RND随机函数可以表示为(   )
A . INT(RND(3)+1) B . INT(RND*2+1) C . INT(RND(2)+1) D . INT(RND*3+1)
某手机APP为电影观众选座提供了程序推荐和自主选位功能。当观众购票选择程序推荐时,程序根据电影放映厅内每个座位的优先等级(用一个正整数表示其等级值,如图a所示),自第1排1号座开始,按自左向右逐排的顺序查找满足本次购票人数r的最优空位区(最优空位区是指从某个座位开始的同排连续的r个空位,且其等级值之和最高,若有多个最优空位区,则推荐最先找到的)。若找到,则显示出推荐的座位编号;若找不到,则提示自主选位。

例如:图a中放映厅内座位有9排10列,第5排10个座位的等级值依次为:1,2,3,4,5,5,4,3,2,1。全部座位为空时,当前购票人数为5,推荐座位编号为5排3-7号;如图b所示已经部分选座状态下,当前购票人数为2,推荐座位编号为6排3-4号。

编写VB程序,模拟上述功能。运行程序,在列表List1中显示目前选座状态,黑点表示已选座,白点表示空位,在文本框Text1中输入购票人数后,单击“推荐”按钮Command1,在标签Label3显示当前购票人座位的推荐结果。程序运行界面如图c所示。

  1. (1) 如图a所示,全部座位为空时,第1次购票人数为4人,按程序推荐座位选座,座位等级值之和为 。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const m = 9         'm 表示座位有9排

    Const n = 10        'n 表示每排的座位数为10

    Dim r As Integer         'r 表示当次输入的购票人数

    Dim a(1 to m * n) As Integer   'a 数组存放每个座位的等级值

    Dim b(1 to m * n + 1) As Integer      'b 数组保存当前各座位选座情况,选中为1,未选为 0

    Private Sub Form_Load()

    '从第1排开始,按座位编号从小到大顺序逐排读取座位等级值并依次存入数组a

    '同上述顺序,读取选座状态存入数组元素b(1)至b(m*n)中,输出当前选座状态。代码略

    End Sub

    Function getsum(i As Integer, j As Integer) As Integer

        '从第i排第j列开始,计算第i排中满足r个观众就座的连续空位等级值之和。

        '若无法找到足够的连续空位时,则返回-1

        Dim p As Integer, sum As Integer, k As Integer

        sum = 0

        p = j: k = (i - 1) * n + p

        Do While p <= j + r - 1 And b(k) = 0

            sum =

            p = p + 1: k = k + 1

        Loop

        If p = j + r Then getsum = sum Else getsum = -1

    End Function

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, s As String, max As Integer

        Dim t As Integer, newi As Integer, newj As Integer, pos As Integer

        r = Val(Text1.Text)

        max = 0

        For i = 1 To m

            For j = 1 To n - r + 1

                

                If max < t Then max = t: newi = i: newj = j

            Next j

        Next i

        If max = 0 Then

            Label3.Caption = "请自主选位" Else

            pos = (newi - 1) * n + newj

            For i =

                b(i) = 1

            Next i

            Label3.Caption = "推荐座位编号:" & newi & "排" & newj & "-" & newj + r - 1 & "座"

        End If

    End Sub

在Python语言中使用Flask框架编写网络应用程序,下列说法正确的是(    )
A . 网络应用系统只能使用Flask框架编写 B . Flask模块可直接调用,无须导入 C . Flask 库中的函数仅支持动态网页模板 D . Flask 框架编写的程序,可以访问指定的URL
在VB中,下列函数的值属于字符串常量的是(   )
A . Val("10") B . Len("10") C . Str(10) D . Sqr(10)
数组a中存放着1到20间的正整数,要求对其中的元素进行分段排序,在文本框Text2中输入每段元素的个数,在文本框Text3中显示每段降序排序后的数据,其中多余的元素不做处理。具体界面如下图所示:

实现该功能的VB程序如下,请在划线处填入合适的代码:

Dim a (0 To 100) As Integer

Const high=16

Private Sub Form_Load()

    '产生high个随机数,并显示在文本框Text1,代码略

End Sub

Private Sub Command1_Click()

    Dim p As Integer, q As Integer, t As Integer

    Dim m As Integer, n As Integer, k As Integer

    m=Val(Text2.Text)

    For i=1 To

        c=“”

        For j=1 To m-1

           

            q=i*m

            k=sort(p, q)

            If a(k)<>a(q) Then

                t=a(p): a(p)=a(k): a(k)=t

            End If

           

        Next j

        Text3.Text=Text3.Text+ “”+c

    Next i

End Sub

Function sort(f As Integer, g As Integer) As Integer

    s=f

    For i=f+1 To g

        If a(i)>a(s) Then

           

        End If

    Next i

    sort=s

End Function

用户登陆某平台,密码有三次重试机会。请补完下面横线处的代码。

n=0

while

    passwd=        #提示输入密码

    if              #密码是临高中学

                    #输出密码正确

        break                      #退出循环,执行while循环模块后面的语句

    else:

        n=n+1                     #循环一次就加1

                     #输出错误超过3次,请稍后再试!

脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。构成DNA的碱基共有 4 种,分别为腺嘌呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。在两条互补碱基链的对应位置上,A总是和T配对,G总是和C配对。编写Python程序实现如下功能: 随机产生一条单链上的碱基序列,输出其对应的互补链上的碱基序列。(    )

import random

DNA=['A','G','T','C']

s=''

for i in range(20):

        ①       

print(s)

match={'A':'T','T':'A','G':'C','C':'G'}

t=''

for i in range(20):

        ②       

print('互补链:',t)

A . ①s=random.choice()+s         ②t= t+match[i] B . ①s=s+random.choice(DNA)    ②t= t + match[s[i]] C . ①s=s+random.choice()          ②t= t + match[s[i]] D . ①s=random.choice(DNA)+s     ②t= t + match[i]
程序运行时分别在文本框Text1与Text2中输入12与20,点击按钮Command1后,文本框Text3中显示的内容是(    )

Private Sub Command1_Click()

  Dim i As Integer, j As Integer

  i = Val (Text1. Text)

  j = Val (Text2.Text)

  Text3. Text = Str(i * j / f(i,j))

End Sub

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

    Dim k As Integer

    k=a Mod b

    If k=0 Then

        f=b

    Else

        f=f(b,k)

  End If

End Function

A . 4 B . 12 C . 20 D . 60
设计一个算法,根据邮件的重量和用户是否选择加急计算邮费。

计算规则:重量在1000克以内(包括1000克),基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

根据上述计算规则,编写自定义函数完成程序功能。

下面的程序能实现前述功能,请把缺失的代码补充完整。

""

描述:根据邮件的重量和用户是否选择加急计算邮费。

函数名:postage(w,f)

参数表:w—代表邮件的重量整数。

f一表示是否加急的字符,其中字符'y'和'n'分别表示加急和不加急

返回值:返回邮费数量。

示例:当w=1200,f='y'时,返回17。

""

def postage(w, f) :

if f == 'y':

cost=5+8

else:

cost=

if w>1000:

cost += (w—1000) //500*4

if w%500>0:

cost=

return cost

w=int (input('邮件的重量:'))

f =input('是否加急:')

print ()

[矩阵上的枚举]大家有接触过地雷游戏吗?如图所示是一个“挖地雷”游戏的界面,9X9个格子里都有一个数字,红旗代表地雷可以用“★”表示,图中共有10个地雷,“一一”表示空白格,边上的“▲”表示边框。

定义规则:你需要标记出所有空白格子周边相邻的格子上有多少地雷(在正方向和斜45度方向挨着的格子均可视为相邻),并将数量标记在空白格中,如下图所示。

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

Dim n As Integer,m As Integer      'n 存储地雷区域大小,m存储地雷数目

Dim a(1 To 100 * 100) As String

Dim b(1 To 100 * 100) As Integer

Private Sub Command1_Click()       '按要求生成数组a中的数据并显示

    Randomize

    List1. Clear

    n=9 : m=10

    Dim s As String, pos As Integer, i As Integer

    s=" " : n=n+2

    For i=1 To n * n

        If isinside(i) Then a(i)="— —"

        Else a(i)="▲"

    Next i

    For i=1 To m

        pos=Int(Rnd * n * n)+1

        Do While a(pos)="★" Or

            pos= Int(Rnd * n *n)+1

        Loop

            a(pos)="★"

    Next i

    For i=1 To n* n

        s= s+" "+a(i)

        If i Mod n=0 Then

            List1. AddItem s

            s=" "

        End If

    Next i

End Sub

Private Sub Command2_Click()

    Dim i As Integer, j As Integer, row As Integer

    Dim col As Integer, start As Integer, temp As String

    For i=1 To n* n

        If a(i)="★" Then

        row=(i-1) \ n+1 : col=(i-1) Mod n+1

            For j=1 To 3

                start=

                If a(start+col- 1)="— —" Then b

                (start+ col- 1)= b(start+col- 1)+1

               If a(start+col)="— —" Then

                    b(start+ col)= b(start+col)+1

                If a(start+col+1)= "— —" Then b

                (start+col+ 1)= b(start+ col+1)+1

            Next j

        End If

    Next i

    List2. Clear

    For i=1 To n

        temp=" "

        For j=1 To n

            If a((i-1) * n+j)="— —" Then

                temp=temp+" "+ Str(b((i-1) * n+j))

            Else

                temp= temp+" "+a((i- 1)*n+j)

            End If

        Next j

        List2. AddItem temp

    Next i

End Sub

Function isinside(x As Integer) As Boolean

    isinside= x>n And And x

    Modn<;>1AndxMod<> 0

End Function

某数据解密方法描述如下:对输入的密文(由英文字母或阿拉伯数字组成的字符串)进行解密,解密后输出明文。解密时对密文中的每个字符进行如下处理:

1)将该字符的ASCII码转换成对应的8位二进制;

2)将对应的8位二进制数进行按位取反(1变0,0变1);

3)将产生的8位二进制数循环左移2次;

4)将最后产生的8位二进制数转换成对应的十六进制数。例如,密文小写字母“d”通过上述解密算法解密后生成的明文是“6E”,信息加密过程如图b所示。

实现上述功能的VB程序如下:在文本框Text1中输入密文,单击“解密”按钮Com-mand1,程序对密文数据依次进行解密处理,在文本框Text2中显示解密后生成的明文。

程序运行界面如图c所示。实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 如果输入密文为小写字母“a”,则解密后得到的明文是
  2. (2) 请在划线处填入合适代码。

    Function jiemi(m As String) As String     '将4位二进制数转换成相应的十六进制数

        Dim k As Integer, i As Integer

        Dim str As String

        str=“0123456789 A BCDEF”

        k=0

        For i=1 To 4

            k=k * 2+Val(Mid(m, i, 1))

        Next i

        

    End Function

    Private Sub Command1_Click()

        Dim ans As String, s As String, ch As String, ret As String

        Dim s1 As String, s2 As String

        Dim i As Integer, m As Integer, asc1 As Integer, n As Integer

        s= Text1. Text

        ans=“”

        For i=1 To Len(s)

            ch= Mid(s,i, 1)

            '取出第i个字符存入变量ch

            asc1= Asc(ch)

            ret =“”

            For m=1 To 8

                '完成解密步骤(1)和步骤(2)

                

                ret=n & ret

                asc1=asc1 \ 2

            Next m

            ret= Mid(ret, 3,6) +Mid(ret, 1, 2)

            '完成解密步骤(3)

            s1 = jiemi(Mid(ret, 1, 4))

            

            ans= ans &s1 &.s2    '将第i个解密后的字符添加到变量ans的末尾

        Next i

        Text2. Text= ans

    End Sub

有如下VB程序段,其功能是生成n个位于[1,10]之间的不重复随机整数:

Dim a(1 To n) As Integer

i= 1

Do While i<=

    a(i)=

    For j=1 To i-1

        If a(i)=a(j) Then

           

            Exit For

        End If

    Next j

    i=i+1

Loop

上述程序段3个方框处的语句分别为(     )

A . ①n   ②Int(Rnd * 10+1)   ③i=i -1 B . ①n   ②Int(Rnd*9+1)   ③i=i+1 C . ①n-1   ②Int(Rnd*10+1)   ③i=i-1 D . ①n-1   ②Int(Rnd * 9+1)   ③i=i+ 1