相关试卷

  • 1、某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:

    ①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为 1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;

    ②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。

    最后把所得到的字符连接起来就是密文。

    例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。

    该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。

    请回答以下问题:

    (1)、如果密钥为“bc”,字符“d”加密后的密文为:(字母“a”的 ASCII 码为97)
    (2)、请完善以下程序代码。

    Private Sub Command1_Click()

      Dim s As String, sn As String

      Dim i As Integer, t As Integer, u As Integer

      Dim p As Integer, g As Integer

      sn = ""

      For i = 1 To Len(Text1.Text)

        t = Asc(Mid(Text1.Text, i, 1))

        If t >= Asc("a") Then

          g = Asc("a")

        Else

          g = Asc("A")

        End If

        u = Asc(Mid(Text2.Text, (i - 1) Mod Len(Text2.Text) + 1, 1))

        p =

        t = t - g

        If i Mod 2 = 1 Then

          t = (t + p) Mod 26

        Else

          t =

        End If

        sn = sn + Chr(t + g)

      Next i

      Text3.Text = sn

    End Sub

    Function txor(x As Integer, y As Integer) As Integer    'x、y求异或并返回十进制

      Dim a As Integer, b As Integer, r As Integer, i As Integer

      a = x: b = y

      r = 1

      For i = 1 To 7

        If a Mod 2 <> b Mod 2 Then

        a = a \ 2

        b = b \ 2

        r = r * 2

      Next   i

    End Function

  • 2、编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:

    (1)、如果输入的二进制数为“1101010”,则得到的结果为
    (2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Function bw(x As Integer, y As String) As String

    '函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数

      Dim r As Integer, i As Integer

      r = x Mod 4

      If r <> 0 Then

        For i = 1 To 4 - r

          y = "0" + y

        Next i

        x = Len(y)

      End If

      bw =

    End Function

    Private Sub Command1_Click()

      Dim m As String, n As Integer, i As Integer, a As Integer

      Dim s As Integer, s1 As String, j As Integer

      m = Text1.Text

      n = Len(m)

      Text2.Text = ""

      m =       '调整m的位数为4的倍数

      For i = 1 To n - 3 Step 4

        s = 0

        For j = i To i + 3

          a = Val(Mid(m, j, 1))

          s =

        Next j

        If s >= 10 Then

          s1 = Chr(Asc("A") + s - 10)

        Else

          s1 = CStr(s)      '函数CStr类似于Str,但无前导空格

        End If

        Text2.Text = Text2.Text + s1

      Next i

    End Sub

  • 3、小王基于选择排序算法编写了一个VB程序,功能如下:数组a有n*n个元素,按n行n列进行排列,按列进行升序排序。例如6*6的数组,第一列将a(1),a(7),a(13),a(19),a(25),a(31)进行排序。运行程序,在列表框List1中显示n*n个数列单击“排序”按钮Command1,在列表框List2中显示排序后的结果,程序运行界面如图所示。请回答下列问题:

    (1)、n=6时运行结果如图所示,图中1处“47”在数组a中下标是(填数字)。
    (2)、为了实现上述功能,请在划线处填写合适的代码。

    Const n =6

    Dim a(1 To n * n) As Integer

    Private Sub Form_Load()      '产生n*n个数组元素,每行按n个数显示在list1中

      For i = 1 To n * n

        a(i) = Int(Rnd * 90) + 10

        s = s + Str(a(i))

        IfThen

          List1.AddItem s

          s = ""

        End If

      Next i

    End Sub

    Private Sub Command1_Click()

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

      For i = 1 To n * n

        k = i

        For j = k + n To

          If a(k) > a(j) Then k = j

        Next j

        If Then t = a(k): a(k) = a(i): a(i) = t

      Next i

    '将排序后数组a的元素,按每行n个数显示在list2中,代码略

    End Sub

    (3)、程序中加框处代码有错,请改正。
  • 4、若一个三位数abc满足,abc=a3+b3+c3则称abc为水仙花数。如三位数153满足13+53+33=1+125+27=153,则153是水仙花数。以下是找出所有水仙花数的程序,请把程序补充完整。(a为百位数、b为十位数、c为个位数)

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

    For i=100 To

      a=i\100

      b=

      c=i-100*a-10*b

      If Then

        Print i

      End If

    Next i

  • 5、小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、*、\的运算,\为整除运算,且此处要求*和\的优先级相同。在表达式中输入待求解的表达式,以=结尾。按下 Command1“计算”按钮后,在标签控件Label1中输出运算结果。程序界面如下图所示:

    (1)、在表达式中输入15-22\5*2+7=,则输出的结果
    (2)、实现上述功能的VB程序如下,请在划线处填入合适代码。

    Function calculate(x As Integer, y As Integer, op As String) As Integer

      If op = "+" Then calculate = x + y

      If op = "-" Then calculate = x - y

      If op = "*" Then calculate = x * y

      If op = "\" Then calculate = x \ y

    End Function

    Function state(op As String) As Integer

      If op = "#" Then state = -1

      If op = "=" Then state = 1

      If op = "+" Then state = 1

      If op = "-" Then state = 1

     

      If op = "*" Then state = 3

    End Function

    Private Sub Command1_Click()

      Dim s As String, length As Integer, t As String Dim k As Integer, q As Integer

      Dim opt(0 To 3) As String Dim i As Integer

      Dim s1 As String

      Dim a(1 To 3) As Integer

      s = Text1.Text

      length = Len(s)

      t = "": k = 0: q = 0: opt(q) = "#"

      For i = 1 To length

        s1 = Mid(s, i, 1)

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

          t = t + s1

        Else

          k = k + 1

          a(k) = Val(t)

          t = ""

          Do While

            a(k - 1) = calculate(a(k - 1), a(k), opt(q))

            k = k - 1

            q= q - 1

          Loop

          q = q + 1

         

          If s1 = "=" Then Label1.Caption = Str(a(1))

        End If

      Next i

    End Sub

  • 6、某班级学生为毕业晚会的一个节目设计一个仿“V”字造型,先筛选出班级中n名学生的所有男生,然后将参演的男生按照身高,摆出中间低两边高(先右后左)的造型,如下图1 所示。王林同学用VB编写模拟“节目造型”程序,功能如下:从数据库中导出所有学生编号、性别和身高数据;单击“筛选排序”按钮Command2,根据身高仿“V”字和造型进行有序排列,并将结果显示在文本框Text2 中。程序运行界面如图2所示。举例说明如下:

    原1-7号男生身高

    171 172 180 174 176 179 178

    筛选排序后序列

    171 172 174 176 178 179 180

    “造型设计”后序列

    180 178 174 171 172 176 179

    图1

    身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号

    图2

    Dim h (1 To n) As Integer

    Dim height1(1 To n) As Integer

    Dim height2(1 To n) As Integer

    Dim n As Integer, i As Integer, j As Integer, num As Integer, tmp As Integer

    Dim sex(1 To n) As String

    Private Sub Form_Load()

    'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!

    End Sub

    Private Sub Command1_Click()

      b = 0

      For i = 1 To n         'n名学生中的男生

        If sex(i) = “男” Then      ①      : height1(num) = h(i)

      Next i

      For i = 1 To num – 1

        For j = num To i + 1 Step -1

          If height1(j) < height1(j - 1) Then

            tmp = height1(j): height1(j) = height1(j - 1): height1(j - 1) = tmp

          End If

        Next j

      Next i

      For i = 1 To num

        Text1.Text = Text1.Text + " " + Str(height1(i))

      Next i

    End Sub

    Private Sub Command2_Click()

      Dim left, right As Integer, i As Integer, mid As Integer

      mid = Int((1 + num) / 2)

      left = 0: right = 0

      height2(mid) = height1(1)

      For i = 1 To (num - 1) \ 2

        right = right + 1

        height2(mid + right) = height1(2*i)

        left = left + 1

             ②    

      Next i

      If num Mod 2 = 0 Then     ③   

      For i = 1 To num

        Text2.Text = Text2.Text + " " + Str(height2(i))

      Next i

    End Sub

    (1)、若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是
    (2)、在程序下划线处填入适当的语句或表达式。将程序补充完整:

  • 7、均分红包。当前有n堆红包,编号为1,2, 3, 。。 n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。

    移红包规则:

    ①编号为1的堆上的红包,只能移到编号为2的堆上;

    ②编号为n的堆上的红包,只能移到编号为n-1的堆上;

    ③其它堆上的红包,可以移到相邻左边或右边的堆上。

    现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。

    (1)、代码“Private Sub Command1_ Click( )”中的Click是(单选,填字母: A . 对象名\B . 事件名\C . 事件处理过程名\D . 方法名)
    (2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const Sum = 40          '红包总个数

    Private Sub Command1_ Click ()

      Dim n As Integer       '红包的堆数

      Dim s As String, k As Integer

      Dim avg As Integer    '最终每堆的红包个数

      Dim m1 As Integer, m2 As Integer

      Dim tmp As Integer, count As Integer, ans As Integer

      n=

      s = Text2. Text

      avg=Sum/n

      tmp=0: count=0: ans=0

      For k=1 To Len(s)

        c = Mid(s, k, 1)

        If c <>","Then

          tmp =

        Else

          count = count + 1

          If count = 1 Then

            m1 =tmp

          Else

            m2 = tmp

            If m1 <> avg Then

              m2=m2-(avg-m1)

              ans=ans+1

            End If

           

          End If

          tmp=0

        End If

      Next k

      Labe13. Caption = Str (ans)

    End Sub

  • 8、小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。

    (1)、“排序”按钮的对象名为
    (2)、请在划线处填入合适代码。

    Dim xm(1 to 100)As String ,cj(1 to 100)As Integer

    Dim flag(1 to 100)As Boolean

    Private Sub Form_ Load( )

    '从数据库中读取数据,存储到相应数组中,并输出在列表框List1。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中(1≤n≤100)。代码略

    End Sub

    Private Sub Cmd__Click( )

      Dim min As Integer, pmin As Integer

      min = cj(1): pmin = 1

      For i=2 To n

        If cj(i) < min Then min = cj(i):     ①    

      Next i

      flag(pmin) = True

      pmin= pmin + 1

      If pmin=n+1 Then pmin=1

        For i=1 To n-2

          k = pmin

          For j=1 To n

            If       ②    Then k= j

          Next j

          If k <> pmin Then

            t = cj(k): cj(k) = cj(pmin): cj(pmin) = t

            C = xm(k): xm(k) = xm(pmin): xm(pmin) = c

          End If

          flag(pmin) = True

          pmin=pmin+1

        Next i

    '将排序后的人员姓名和成绩输出到列表框List2中,代码略。

    End Sub

     ② 

    (3)、加框处代码出错,请改正。
  • 9、循环结构表示程序反复执行某个或某些操作,只有用户干预才能终止循环。
  • 10、编写程序,实现以下功能:计算s=1+2/5+3/10+……i/i^2+1 的值,n由键盘输入,计算结果s保留3位小数。

    Private Sub Command1_Click()

      Dim n as integer, i as integer,s as double

      n=val(inputbox("请输入n的值"))

      s=0: i=1

      do while      ①        

             ②        

        i=i+1

      Loop

      s=

      Print s

    End Sub

    (1)、实现该程序功能的主体算法结构是
    (2)、上面的VB程序,请完善划线处内容,完成上述功能。
      ②
    (3)、方框处能使变量s的值四舍五入精确到小数点后第3位小数,以下可以实现的语句是(     )。
    A、Int(s * 100) / 100 B、Int(s * 1000) / 1000 C、Int(s * 100 + 0.5) / 100 D、Int((s * 1000 + 0.5)) / 1000
  • 11、编写一个VB程序,实现如下功能:输入s位数字构成的数字字符串(第1位数字不为0),移除k(0<k<s)个数字后,在保证原数字相对位置不变的情况下,使剩余数字组成的新数为最小(注:新数第1位不能为0)。例如8个数字构成的数字字符串“71803296”,移除3个数字,得到5位数字构成的最小数是“10296”,具体算法如图a所示。

    算法分析:要使得到的5位数字最小,首先需保证能取到5个数字,且首位应尽量小,那么取首位数的范围应保证余下有4个数字,即在前4位中选最小非0的数字。

    程序运行时,在文本框Text1中输入一个数字字符串,在文本框Text2中输入要移除的数字个数,单击“运行”按钮CmdRun后,在标签Labell显示得到的最小新数,程序运行界面如图b所示。

    (1)、程序运行时,若要在名为Form1的窗体标题上显示“删数”,可以在Form  Load事件处理过程中添加语句为(单选,填字母:A . Form1. Text ="删数"\B . Form1. Caption ="删数"\C . Form1. AddItem"删数")
    (2)、实现上述功能的VB程序代码如下,请在划线处填入合适的代码。

    Private Sub CmdRun_ Click()

      Dim Num As String,New_num As String              ' Num为输入的数字字符串

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

      Dim As Integer, s As Integer, k As Integer

      Dim a(30) As String, b(30) As Integer

      Num = Text1. Text: s = Len(Num)

      k = Val (Text2. Text)                 'k为删除数字个数

      For i=1 To s

        a(i) = Mid(Num,i,1)

      Next i

      j =1

      m=1

      n=

      For i=m+1 To n                   '取第一个非零最小数字

        If   Then m=i             '加框处程序代码有误,请改正

      Next i

      b(j)= m

      Do While               '取其他最小数字

        m=m+1

        n=n+1

        For i=m+1 To  n

          If  a(i) < a(m) Then m= i

        Next i

        j =j+1:b(j)=m

      Loop

      For i= m+1 To  s             '最后直接取的数字

        j =j+1: b(j)=i

      Next i

      For j=1 To s- k                 '输出最小数

        New_ num =

      Next j

      Labell. Caption = New_num

    End Sub

    (3)、加框处程序代码有误,请改正。
  • 12、给定两个十进制整数X和Y(X<=Y),求出从X到Y的所有整数中出现“1”的个数。例如:X=6,Y=15时,6,7,8,9,10,11,12,13,14,15,出现了7个“1”。小明编写了一个VB程序,功能如下:在文本框Text1中输入整数X,在文本框Text2中输入整数Y,单击“统计”按钮Command1后,在列表框List1中显示X到Y,并在标签Label3中显示从X到Y的所有整数中出现“1”的个数。程序运行界面如图所示,请在划线处填入合适代码。

    (1)、下列程序段中句List1.AddItem中的AddItem是(填字母:A. 属性名/B.事件名/C.方法名/D.对象)
    (2)、为了实现上述功能,请在划线处填入合适的代码。

    PrivateSubCommand1_Click()

      Dim x AsInteger,y As Integer,t AsInteger

      Dim I AsInteger,n As Integer,count AsInteger

      x=Val(Text1.Text)

      y=Val(Text2.Text)

     

      count=0

      For i=x To y

        List1.AddItem Str(i)

        n=i

        Do While n>0

          If n Mod 10=1 Then

            count=count+1

          End If

         

        Loop

      Next i

    Label3.Caption="X到Y之间1的个数有"++"个"

    End Sub

    (3)、如果删除加框处代码,并运行程序,在文本框Text1中输入“40”,在文本框Text2中输入“10”,单击“统计”按钮,则标签框Label3显示X到Y之间1的个数有个。
  • 13、运行下列程序,正确的结果是

    s=0

    for i in range (1 5):

        s=s+i

    print("i=",i,"s=",s)

  • 14、下面的程序段运行后的结果为

    s=0

    for i in range(1,8,3):

      s=s+i

    print(s)

  • 15、字符串数组a中a(1)到a(6)的原始数据为57,3,24,34, 6,120,为了对该数组进行排序操作,编写了以下VB程序。

    i=2

    Do While i<=6

      For j=6 To i+2 Step -2

        If a(j)>a(j-2)Then t=a(j):a(j)=a(j-2):a(j-2)=t

      Next j

      i=i+2

    Loop

    则程序运行之后,数组元素a(1)和a(2)的值分别是(  )

    A、6    3 B、57    120 C、120   57 D、6    34
  • 16、小明想用数据移位思想将一段长度为n的序列a(n), 以t位置为分界,把前t-1个数和后n-t+1个数调换前后顺序,但保持每段中数据的相对位置不变。例如一段长度为6的序列1、2、3、4、5、6。t=4时,数组a中元素顺序变成4、5、6、1、2、3。实现上述功能的代码如下,下列①、②处填写正确的是(  )

    t = Val(Text1. Text): m= 2

    For i=t-1 To 1 Step-1

      k = a(i)

      For j=i To n- 1

          ① 

      Next j

        ② 

      n=n-1

    Next i

    A、①a(j+1)=a(j)  ②a(j+1)=k B、①a(j)=a(j+1)  ②a(j+1)=k C、①a(j+1)=a(j)  ②a(j)=k D、①a(j)=a(j+1)  ②a(j)=k
  • 17、下列有关for循环语句说法正确的是(    )。
    A、for 循环变量 in 列表后面必须加冒号 B、For循环所包含的语句是不以缩进为标志的。 C、列表的几种表达方式有直接罗列,先定义后使用和使用range( )函数 D、For循环所包含的语句是以缩进为标志的。
  • 18、下面的程序段运行后的结果为(    )

    s=1

    for i in range(1,6,2):

      s=s+i

      print(s)

    A、15 B、10 C、12 D、9
  • 19、有如下VB程序段:

    s ="cbafedgh"

    m=3:c="":n= Len(s)

    For i =1 To n

      j=(i-1)Mod 3 + 1

      If m> n Then Exit For               '退出For循环

      c=c+ Mid(s,m-j+1,1)

      If j Mod 3 =0 Then m =m+3

    Next i

    If i < n Then c = Mid(s,i,n-i + 1)+c

    执行该程序段后,变量c的值是(    )

    A、Abcdef B、Abcdefgh C、Ghabcdef D、hgabcdef
  • 20、数组a中存储着某市2010年到 2019 年的GDP数值,编写VB程序,实现找出相邻两年GDP变化最大(即相邻两年GDP差值最大)的年份区间。若有多个符合要求的年份区间,只输出距今最近的年份区间。部分代码如下所示:

    Dim i As Integer, imax As Integer

           ①  

    For i = 3 To 10

       If Abs(a(i) - a(i - 1)) >=  ②  Then imax = i

    Next i

    Text1.Text = "GDP变化最大的年份区间是" + Str(imax + 2008) + "-" + Str(imax + 2009)

    ①、②应填入的代码为(   )

    A、①imax=1  ②Abs(a(i - 1) - a(i - 2)) B、①imax=1  ②Abs(a(imax) - a(imax - 1)) C、①imax=2  ②Abs(a(i - 1) - a(i - 2)) D、①imax=2  ②Abs(a(imax) - a(imax - 1))2
上一页 1101 1102 1103 1104 1105 下一页 跳转