当前位置: 答案解析 / 算法与程序设计 / 算法及程序语言基础 / 常见数据类型、数组
  • 1. (2021高三上·浙江月考) 某网站注册密码需要符合以下两点条件:①密码不少于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 .没有输出)
举一反三换一批
  • 1. 下列关于VB中数组的叙述,错误的是(  )。
    A . 数组是一种基本数据类型 B . 数组是一组相同类型的变量集合 C . 数组中的所有元素可看作一个整体 D . 数组元素的引用形式为“数组名(下标)”
  • 2. 在数据加密过程中,为了防止加密方法外泄,往往使用密钥,只有掌握了密钥才能正确加密、解密。某信息加密VB程序,对输入的明文(由英文字母或数字组成的字符串)进行加密,输出加密后得到的密文。该程序使用的密钥是一个2位十进制数。数据加密方法对明文中的每个字符进行如下处理:

    ①将该字符的ASCII码加密钥后,转换成对应的8位二进制;

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

    ③将最后产生的8位二进制数转换成对应的十六进制数;

    ④将得到的十六进制数码交换顺序后连接,即为该明文的密文。

    例如,明文大写字母“A",输入的密钥数值为25,得到的密文为5A,信息加密过程如图所示。

    小李编写了加密算法的VB程序,在文本框Text1中输入明文,单击“加密”按钮Command1。程序对明文数据依次进行加密处理,加密后生成的密文将显示在文本框Text2中。程序运行界面如图所示。

    1. (1) 如果输入的明文为大写字母“F",密钥为16,则生成的密文是
    2. (2) 实现上述功能的VB程序如下,请在画线处填入合适的代码。

      Function btoh(m As String)As String     ‘将4位二进制数转换成对应的十六进制数

        Dim s As Integer, i As Integer

        Dim st As String

        st="0123456789ABCDEF"

        s=0

        For i=1 To 4

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

        Next i

           ①   

      End Function

      Private Sub Command1_Click( )

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

        Dim a,b,c As Integer

        s= Text1.Text

        c= Val(Text2.Text)

        For i = 1 To Len(s)

            ch=Mid(s,i,1)   ‘取出第i个字符存入变量ch

            a=Asc(ch)

            b=a+c

            ret = " "

            For m=1 To 8             ‘完成加密步骤①和步骤②

                n=(b+1)Mod 2

                ret =str(n)+ ret

                   ②   

            Next m

            s1 = btoh(Mid(ret,1,4))    ‘完成加密步骤③和步骤④

            s2 = btoh(Mid(ret,5,4))

            ans=ans +s2+s1

        Next i

        Text3.Text=ans

      End Sub

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

  • 3. (2021高三上·浙江开学考) 世界上有很多国家向我国申购新冠疫苗。我国共有n个仓库存储疫苗,第i个仓库有疫苗a(i)(单位:万支,(单位:万支,下同)。现有m(n>=m)个国家向我国提出疫苗购买申请。我国计划将n个仓库中的疫苗全部分配给这m个国家。分配规则如下:①每个仓库中的疫苗只能作为一个整体分配给一个国家;②一个国家可以获得任意多个仓库的疫苗;③要求获得最多疫苗的国家与获得最少疫苗的国家之间疫苗数量差值最小;④若存在多个满足条件的分配方式,则输出最先找到的分配方式。

    例如:若n=4,4个仓库中的疫苗数分别为50、13、80、27。若m=2,最小差值为10;若m=3,最小差值为40。

    编写VB程序模拟上述功能,在文本框Text1中输入n(n≤15),在文本框Text2中输入m(m≤4),随机生成n个两位正整数,在列表框List1中输出。单击“计算”按钮Command1,在文本框Text3中输出最小差值,在列表框List2中输出每个国家获得疫苗的方案。程序运行界面如图所示。

    1. (1) 语句 List1.Clear 中的“Clear”属于(单选,填字母:A .对象名/B .属性名/C .方法名)。
    2. (2) 实现疫苗分配的VB程序如下,请在划线处填入合适的代码。

      Private Sub Command1_Click()

          Const maxn = 15

          Dim n As Integer, i As Long, j As Long, k As Long, p As Integer, m As Integer

          Dim a(1 To maxn) As Long, f(1 To maxn) As Long

          Dim s(1 To maxn) As String, max As Long, min As Long, ans As Long, ansi As Long

          n = Val(Text1.Text): m = Val(Text2.Text)

          List1.Clear: List2.Clear: Randomize

          For i = 1 To n

                ① 

              List1.AddItem Str(a(i))

          Next i

          ans = 10000

          For i = 1 To m ^ n     '枚举所有的分配方案

              For j = 1 To m

                  f(j) = 0

              Next j

              j = i: max = 0: min = 10000

              For k = 1 To n

                  

                  f(p) = f(p) + a(k)

                  j = j \ m

              Next k

              For k = 1 To m

                  If f(k) > max Then max = f(k)

                  If f(k) < min Then min = f(k)

              Next k

              If    ②   Then

                  ans = max - min

                     ③    

              End If

          Next i

          Text3.Text = Str(ans)

          For i = 1 To n

              j = ansi Mod m

              s(j + 1) = s(j + 1) + Str(a(i))

              ansi = ansi \ m

          Next i

          For i = 1 To m

              List2.AddItem s(i)

          Next i

      End Sub

       ② ③ 

    3. (3) 程序中加框处代码有错,请改正。