常量、变量及变量的赋值 知识点题库

有如下VB程序段:

i = 1: j = 10: k = 6

Do While i < = j

  m = Int ((i +1)/2)

  If k= a(m) Then

    Exit Do

  ElseIf k < a(m) Then

    j = m-1

  Else

    i=m+1

  End if

Loop

数组元素a(1)到a(10)的值依次为3,5,7,10,12,15,17,18,21,25,该段程序运行后,在查找数值6的过程中,i,j,m的值分别是(  )

A . i=2,j=3,m=3 B . i=3,j=2,m=3 C . i=3,j=3,m=3 D . i=1,j=4,m=2
“轮转后有序数组(Rotated Sorted Array)”是取有序数组中某一个数为分割点,将分割点之前的所有数都轮转到数组的末尾所得的数组。比如7,11,13,17,2,3,5就是一个轮转后有序数组,原有序数组中的子串{2,3,5}被轮转到了数组的末尾处。对于一个轮转后有序数组arr也可以进行对分查找,算法思路如下(以升序为例):每次根据查找的左侧位置L和右侧位置R求出中间位置M,M左边[L,M]和右边[M+1,R]这两部分中至少有一个是有序的(可根据中间位置数据和边界数据的大小关系进行判断)。

arr[M]和待查找数据key比较:

①arr[M]= key,返回M的值;

②若M位置的右侧有序,当待查找数据在右侧时则下次在右侧查找,否则在M左侧查找;

③若M位置的左侧有序,当待查找数据在左侧时,下次在左侧查找,否则在M右侧查找。

  1. (1) 对轮转后有序数组{7,1,13,1,2,3,5}使用函数Search( )查找key值3,则查找次数为
  2. (2) 以下VB程序实现了对轮转后有序数组arr进行分查找的过程,如果查询成功,返回M值,查询失败则返回-1。请补充程序中划线处的代码。

    Function Search (key As Integer, L As Integer, R As Integer) As Integer

        ①           ‘填写合适的代码

    Do While L < R And Search =-1

      M=(L+R)\2

      If arr(M) = key Then

        Search = M

      Else

        If     ②    Then      ‘填写合适的代码

          If arr(L) < = key And key arr(M)Then

            R=M-1

          Else

            L=M+1

          End If

        Else

          If        Then     ‘填写合适的代码

            L=M+1

          Else

            R = M-1

          End if

        End if

      End If

    Loop

    End Function

【加密与解密问题】某数据加密方法描述如下:

⑴以字节为单位进行加密处理;

⑵将1个字节的8位二进制数分割成前4位与后4位两个二进制数;

⑶分别将上述两个4位二进制数转换为十进制数;

⑷将每个十进制数转换为1个加密字符,对应的“密码表”如下:

值(十进制)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

加密字符

I

l

i

k

e

C

H

N

p

o

s

t

c

a

r

d

小明按照上述方法,设计了一个字符串(仅包含ASCⅡ字符)加密的VB程序,功能如下:单击“加密”按钮Command1,程序依次将文本框Text1中每个字符的ASCⅡ码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表展示了字符串中一个字符的加密过程:

实现上述功能的VB程序如下:

程序运行效果如图所示。

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

    Private Sub Command1_Click ( )

    Dim n As Integer, s As String, i As Integer, ss As String

    Dim a As Integer    ‘存储加密前字符的 ASCII码

    Dim b1 As Integer, b2 As Integer    ‘分别存储分割、转换后的两个十进制数

    s = Text1. Text

    n = Len (s)

    For i = 1 To n

      a =     ①     

      b1 = a\16

      b2 =a Mod 16

      ss= ss + Code2 Char(b1) + Code2 Char(b2)

      Text2. Text=ss

    Next i

    End Sub

    ‘十进制值转换为加密字符的函数

    Function Code 2 Char(c As Integer) As string

    Dim s As String

    s = “IlikeCHNpostcard”

    Code2Char =     ②     

    End Function

     ② 

  2. (2) 若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是
若在文本框Text1、Text2、Text3中分别输入2,5,6,下列程序段运行后,标签Label2中显示的内容是(  )

Private Sub Commandl_Click()

Dim a As Integer, b As Integer,cAs 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
有如下VB程序

i = 1: j = 8

Key = Val(Text1.Text)

Do While i < j

  m = (i + j) \ 2

  If a(m) >= Key Then

    i = m + 1

  Else

    j = m

  End If

Loop

数组a(1)~a(8)分别是18、16、14、13、12、10、9、7,程序运行后,下列说法正确的是(  )

A . 程序运行后会进入死循环 B . 在text1输入任意数字,程序运行后i=j+1 C . 代码最多可能会运行4轮 D . 在text1输入13,程序运行后m=5
有如下VB程序段:

b=0

For a= 1 To 10

   b=a+b 

   a=a+3

Next a

c=a+b

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

A . 15 B . 22 C . 28 r=0? D . 32
某次技术考试后进行成绩处理,学生信息包括姓名、班级、成绩,要按班级从小到大,同一班级按成绩从高到低进行排序。按上述要求,编写一个VB程序,功能如下:在列表框List1中显示排序前的数据,单击“排序”按钮Command1,在列表框List2中显示排序后结果,程序运行界面如图所示。

  1. (1)   将数组元素temp1(1)到temp1(500)分为10段,每段刚好存储一个班的学生成绩,10个班的学生数如下表所示。从数组temp1第1个元素开始依次存储这10个班的学生成绩,如1班学生成绩存储在temp1的第1个元素到第50个元素,则3班学生成绩存储在temp1的第个到第个元素(填数字)。

    班级

    1班

    2班

    3班

    4班

    5班

    6班

    7班

    8班

    9班

    10班

    人数

    50

    45

    50

    51

    49

    55

    50

    48

    52

    50

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

    Const n = 500     '总学生数

    Const m = 10     '总班级数Dim score(1 To n) As Integer

    Dim stu_name(1 To n) As Integer Dim class(1 To n) As Integer Dim temp1(1 To n) As Integer Dim temp2(1 To n) As Integer Dim temp3(1 To n) As Integer Function adj(s As String)

    '本函数在字符串s 前添加若干空格,实现右对齐,代码略

    End Function

    Private Sub Form_Load()

    '本过程读取学生姓名、班级和成绩数据分别存储在数组stu_name,class 和score 中,

    '并在 List1 中显示,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, k As Integer, t1 As Integer, t2 As String

        Dim c(0 To m + 1) As Integer

        For i = 0 To m

            c(i) = 0

        Next i

        For i = 1 To n

           

            c(k) = c(k) + 1

        Next i

        For i = 1 To m

            c(i) = c(i) + c(i - 1)

        Next i

        For i = n To 1 Step -1

            k = class(i)

            temp1(c(k)) = score(i)

            temp2(c(k)) = stu_name(i)

            temp3(c(k)) = class(i)

           

        Next i        '处理完毕 c(i+1)表示第 i 个班级的最后一个学生的存储位置

        c(m + 1) = n

        For k = 1 To m        '对每一个班级学生成绩进行排序For i = c(k) + 1 To c(k + 1) - 1

            For j = c(k + 1) To i + 1 Step -1

                If Then

                    t1 = temp1(j): temp1(j) = temp1(j - 1): temp1(j - 1) = t1

                    t2 = temp2(j): temp2(j) = temp2(j - 1): temp2(j - 1) = t2

                    t1 = temp3(j): temp3(j) = temp3(j - 1): temp3(j - 1) = t1

                End If

            Next j

        Next i

    Next k

    For i = 1 To n

        score(i) = temp1(i): stu_name(i) = temp2(i): class(i) = temp3(i)

        List2.AddItem adj(Str(stu_name(i))) & adj(Str(class(i))) & adj(Str(score(i)))

        Next i

    End Sub

运行下列程序

Dim a(1 To 5) As Integer

  a(1) = 1

  For i = 2 To 5

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

    If a(i) Mod 2 = 0 Then

      a(i) = a(i) + i

    Else

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

    End If

 Next i

a(1)~a(5)的值不可能的是:(  )

A . 1,2,3,8,9 B . 1,6,2,10,11 C . 1,6,11,16,17 D . 1,4,5,10,7
某算法的部分流程图如图所示。执行这部分流程后,n2和n1的值分别是(  )

A . 7,8 B . 7,0 C . 8,8 D . 8,0
编写一个基于对分查找插入数据的程序代码。实现把数据temp插入降序序列后得到一个新的降序序列,原序列各元素存放在数组元素a(1)-a(n)中。实现上述功能的程序段如下:

temp = Val(Text1.Text)

If temp <= a(n) Then

    a(n + 1)= temp

Else

    left= 1: right= n

    Do While left <= right

        mid = (left + right) \2

        If   ①   Then right= mid- 1 Else left= mid+ 1

    Loop

    For j= n To left Step-1

          ② 

    Next j

      ③ 

End If

则横线①②③上的语句分别是(  )

A . ①a(mid)>temp ②a(j)=a(j-1)   ③a(right+1)=temp B . ①a(mid)<temp ②a(j)=a(j-1)   ③a(left)=temp C . ①a(mid)>temp ②a(j+1)=a(j)  ③a(right+1)=temp D . ①a(mid)<temp ②a(j+1)=a(j)  ③a(left)=temp
某程序功能如下:将自然数从1到100按某种方式排列起来,单击“输出”按钮Command1,在列表框List1中显示排列后的数表,运行结果如图所示。

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

    Private Sub Command1_Click()

    Const n = 10

    Dim i As Integer, j As Integer

    Dim d(0 To 100) As Integer

    For i = 1 To n

     For j = 1 To n

     If i = 1 Then

     d(j) = j ^ 2

     Else

     If j = 1 Then

           ①      

     Else If j < i

     d((i - 1) * n + j) = d((i - 2) * n + j) - 1

     Else

              ②          

     End If

     End If

     Next j

    Next i

    ‘在列表框List1中按每行10个输出数组d的所有元素,代码略

    End Sub

    ①处代码为,②处代码为

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

    应改为

有如下程序段:

Dim s As String, ch As String

Dim ansAs String, i As Integer

s = Text1.Text

For i = 1 To Len(s)

ch = Mid(s, i, 1)

If ch >= "A" And ch <= "Z" Then

ch = Chr(asc(ch) + 3)

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

ch = Chr(asc(ch) - 3)

End If

ans = ans + ch

Next i

Text2.Text = ans

运行时文本框Text1中输入“Tu5Mp4”,则文本框Text2中输出的内容是(    )

A . Wx2Ps1 B . Wr5Pm4 C . WrPm1 D . Wx5Ps4
某算法的部分流程图如图所示。执行这部分流程后,输出s和i的值分别是(  )

A . -3   5 B . -4  5 C . -3    6 D . -2    6
某算法流程图如下图所示,执行该算法,下列说法正确的是(  )

A . 变量i的值是21 B . 语句i=i+1执行了5次 C . 变量s的值为10 D . 语句i<=20被执行了5次
下列VB程序段功能为:在文本框Text1中显示整型数组元素a( 1 )到a( 10 )中的最小值和次小值。

k1 = 1:k2= 10

For i=2 To 10

     If a(i) < a(k1) Then

        

        

     ElseIf a(i) < a(k2) Then

        

     End If

Next i

Text1.Text = Str(a(k1)) + "," + Str(a(k2))

上述程序中方框处可选语句为:

①k1=i

②k2= i

③k2= k1

则⑴⑵⑶处语句依次是(    )

A . ①②③ B . ③①② C . ②①③ D . ③②①
算法的部分流程如图所示。执行该流程,输出t和k的值分别是(   )

A . 14  6 B . 14  5 C . 15  6 D . 15  5
给定两个十进制整数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. (1) 下列程序段中句List1.AddItem中的AddItem是(填字母:A. 属性名/B.事件名/C.方法名/D.对象)
  2. (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. (3) 如果删除加框处代码,并运行程序,在文本框Text1中输入“40”,在文本框Text2中输入“10”,单击“统计”按钮,则标签框Label3显示X到Y之间1的个数有个。
关于Python语句P = –P,以下选项中描述正确的是(     )
A . P和P的负数相等 B . P和P的绝对值相等 C . 将P赋值为它的相反数 D . P的值为0
在下列关于变量的命名规则中说法不正确的是(    )
A . 变量名不能以数字开头  B . 变量名中不能有空格  C . 变量名应区分大小写 D . 变量名可以使用Python的内置命令。(比如我们用input做变量名)
在下面的python程序中,变量b和c的值为(    )。

a=6

a=b=c=8

print(b, c)

A . b为6,c为6 B . b为6,c为8 C . b为8,c为8 D . b为8,c为6
最近更新