4.1.1 Python的常量和变量 知识点题库

某计算机系统中,只采用ASCII码与GB2312两种编码,现在要统计某句话中有多少个ASCII字符,多少个GB2312字符。为了解决这个问题,某同学设计了一个VB程序,功能如下:在文本框Text1中输入待统计的句子,单击“统计”按钮Command1,则计算机会在标签Label2中输出统计结果。界面如第11题图所示:程序代码如下:

  1. (1) 若要将窗体中的“Form1”改为“字符串统计”,则应该修改窗体的 属性。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim i As Integer, x As String, t As String

        Dim n As Integer, m As Integer

        x = Text1.Text

        For i = 1 To    

            t =

            If Asc(t) <= 127 And Asc(t) >= 0 Then

                n = n + 1

            Else

                m = m + 1

            End If

        Next i

        Label2.Caption = "共有ASCII字符" & n & "个,GB2312字符" & m & "个"

    End Sub

  3. (3) 若在文本框Text1中输入“学考Fighting^_^”,统计后GB2312字符有个。
有如下程序段:

Const n = 6

Dim a (1 To n) As Integer

Dim i As Integer, j As Integer, t As Integer

Randomize For i = 1 To n

    a (i) = Int (Rnd * 20 + 11)

Next i

Do While True

    For i = 1 To n-1

        If a(i) > a(i +1) Then Exit For

    Next i

    If i < n Then

        For i = 1 To n

            j = Int(Rnd * 6) + 1

            t = a(3): a(3)=a(i): a(i) = t

        Next i

    Else

        Exit Do

    End if

Loop

上述程序段执行后,a(1)到a(6)的值可能是(  )

A . 10  13  15  25  25  28 B . 15  16  22  26  28  28 C . 18  21  25  25  19  30 D . 29  22  20  20  18  16
数组指针的应用:小明编写了一个二进制的消消乐程序,实现功能如下:二进制数中相邻重复的数字个数大于或等于2就消除掉,例如:二进制数1110前面连续3个1消除掉后该二进制数变成0,二进制数1001消除3个重复0后变成11,消除后的结果不继续消除。

程序功能如下:在文本框Text1中输入一个二进制数据,单击“消除”按钮 Command1,将二进制数据中相邻重复的数据大于或等于2的消除掉,并将结果在标签 Label1中显示。程序运行界面如图所示。

实现上述功能的VB程序如下,但加框处代码有错,请改正。

Private Sub Command1_Click ( )

Dim a (100) As String, b (100) As String

Dim n As Integer

Dim pa As Integer

Dim pb As Integer

s = Text1, Text

n = Len (Text1. Text)

For i= 1 To n

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

Next i

pa =1 : pb = 1

Do While pa < =  n-1

  If  Then   ‘①

    b(pb) = a(pa)

    pa= pa + 1: pb = pb + 1

  Else

    j = pa+1

    Do While j < = n

      If  Then    ‘②

        j=j+1

      Else

        Exit Do

      End if

    Loop

    pa = j

  End if

Loop

If pa =n Then b (pb) = a(pa): pb = pb + 1

ans = “”

For i= 1 To pb-1

      ‘③

Next i

Label1. Caption = "消除后的结果为:" + ans

End Sub

 ② ③ 

有如下VB程序段:

i = 1: j = 9: flag = False

Key = Val(Text1.Text)

Do While i < j

m = (i + j + 1) \ 2

If a(m) > Key  Then  j = m - 1  Else  i = m + 1

If a(m) = Key Or a(m + 1) = Key  Then  flag = True: Exit Do

Loop

If flag Then

If a(m) = Key  Then  Text2.Text = Str(m)  Else Text2.Text = Str(m + 1)

Else

Text2.Text = "找不到"

End If

程序运行时,数组元素a(1)到a(9)中的数据为12,24,27,34,39,46,68,73,84,在文本框Text1中输入“68”,执行该程序段,则下列表达式正确的是(  )

A . j=8 B . i=8 C . j=9 D . m=6
某对分查找算法的VB程序段如下:

i = 1: j = 8: s = ""

key =Text1.Text

Do While i <= j

  m =(i + j) \ 2

  If key = a(m) Then

   s = s + "M"

   Exit Do

  ElseIf key > a(m) Then

   j = m - 1: s = s + "L"

  Else

   i = m + 1: s = s + "R"

  End If

Loop

Text1.Text = s

数组元素a(1)到a(8)的值依次为“4,22,27,32,35,44,56,59”,该程序段执行后,文本框Text1中显示的内容不可能是(  )

A . M B . LR C . RM D . LM
有如下VB程序段:

 For i = 1 To 3

  k = ""

  For j = 1 To 2 * i - 1

   k = k + " * "

  Next j

  List1.AddItem k

 Next i

该程序段运行后,在列表框List1中显示的是(  )

A . B . C . D .
某VB程序段如下:

 s = "Hello World"

 s1 = ""

 n = Len(s)

 For i = 1 To n \ 2

   If Mid(s, i, 1) > Mid(s, n - i + 1, 1) Then

     s1 = s1 + Mid(s, i, 1)

   Else

     s1 = Mid(s, n - i + 1, 1) + s1

   End If

 Next i

 Text1.Text = s1

执行该程序段后,在文本框Text1中显示的是(  )

A . WlleH B . oorld C . dlroo D . orldo
下列VB程序功能为:根据文本框Text1中各字符的大小关系,计算各字符升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。

s=Text1.Text

n=Len(s)

For i=1 To n

  y(i)=1

Next i

For i=1 To

  For j=  To n

    If  Then

     y(j)=y(j)+1

    Else

      y(i)=y(i)+1

    End If

  Next j

Next i

上述程序段多个加框处的表达式分别为(  )

A . (1)n       (2)1        (3)Mid(s,j,1)>=Mid(s,i,1) B . (1)n       (2)1        (3)Mid(s,j,1)>Mid(s,i,1) C . (1)n-1     (2)i+1       (3)Mid(s,j,1)>=Mid(s,i,1) D . (1)n-1     (2)i+1       (3)Mid(s,j,1)>Mid(s,i,1)
有如下VB程序段:

Dim a(I To 10)As Integer

Dim s(1 To 10)As Integer

Private Sub Form_Load()

  a(1)=3:a(2)=6:a(3)=8:a(4)=4:a(5)= 9

  a(6)=5:a(7)=3:a(8)=3:a(9)=8:a(10)= 6

End Sub

Private Sub Command1_Click()

  Dim max As Integer,i As Integer,j As Integer, k As Integer

  max=0

  For i=1 To 10

    k=0

    For j=10 Toi Step -1

        If a(j)=a(i)Then k=j:Exit For

    Next j

    If k > 0 And k- i > max Then max=k-i

  Next i

  Text1.Text=Str(max)

End Sub

程序运行后,文本框Text1显示的内容是 (  )

A . 5 B . 6 C . 7 D . 8
某算法的流程图如下图所示:

执行该流程图,输出变量 s 的值是(  )

A . 9 B . 10 C . 11 D . 12
某医院接受捐赠物资,各项物资数据包含编号、品名和收支数量。编号构成规则是:急需等级(单个大写字母,由高到低划分为A、B、C三个等级)+物资种别(单个大写字母,至多有A~Z共26种)。为提高库存管理效率,现需要整理物资库存,要求:先对同种物资数量进行合并统计;然后按各种物资库存量,更新其急需等级,并依等级由高到低分类显示。等级划分规则为:当库存量低于3天所需,设置为A级;当库存量低于7天所需,设置为B级;否则设置为C级。

按上述要求,编写一个VB程序,功能如下:在列表框List1中显示整理前的所有物资相关数据,单击“库存合并统计”按钮Command1,在列表框List2中显示整理结果,程序运行界面如图所示。

  1. (1) 由图中示例可知,急需等级发生变化的物资有种(填数字)。
  2. (2) 请在划线处填入合适的代码。

    Const n= 2000    ‘物资总项数

    Const nc = 26    ‘物资种别数,最多不会超过26

    Dim items(1 To n) As String, supplies(1 To n) As String, totals(1 To n) As Long

    Dim g(1 To2 * nc) As Long    ‘存储各种物资3天、7天的需求数量

    Dim b(1 To nc) As Long    ‘存储各种物资的库存量

    Dim c(1 To nc) As Long

    Dim q(1 To nc) As Integer

    Private Sub Form_Load()

    ‘本过程读取编号、品名、收支、需求的数据分别存储在数组items、supplies、totals、g数组中,并在List1中显示有关数据:g数组中g(1)、g(2)存储物资A的3天、7天的需求数量;g(3)、g(4)存储物资B的3天、7天的需求数……代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, k As Integer, top As Integer, bottom As Integer

        Dim r As Long, s As String, t As Integer, m As Integer

        For i=1 To nc.

            b(i)=0:c(i)=0

        Next i

        For i=1 To n    ‘统计每种物资的库存量

        k = Asc(Mid(items(i), 2, 1))- Asc("A")+1

          ①  

        c(k)=i

    Next i

    j=0

    For i=1 To nc

        If c(i)<>0 Then j=j+1: q(j)=i

    Next i

    top = 0: bottom=j+ 1

    j=1: k=bottom-1

    Do While j<bottom    ‘按各种物资的需求量进行等级分类

        m=q(j)

          ② 

        If r<g(2*m-1) Then

            top=top+1

            If top<>j Then t= q(top): q(top)=q(j): q(j)=t

            j=j+1

        ElseIf r>= g(2*m) Then

            bottom=bottom-1

            t= q(j): q(j)=q(bottom): q(bottom)=t

        Else

            j=j+1

        End If

    Loop

    List2.AddItem "编号  品名  库存"

        List2. AddItem "------------------------------"

        For i= 1 To k

            s= fp(i, top, bottom)

            List2.AddItem" " & s & " " & supplies(c(q(i))) & " " & b(q(i))

        Next i

    End Sub

    Function fp(pos As Integer, head As Integer, tail As Integer) As String

        If   ③   Then

            fp= "A"

        ElseIf pos < tail Then

            fp= "B"

        Else

            fp="C"

        End If

        fp = fp & Mid(items(c(q(pos))), 2, 1)

    End Function

     ② ③ 

某排序算法的VB程序段如下:

For i=1 To 4

  k=i

  For j=5 To i+1 Step-1

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

  Next j

  If k<> i Then

     tmp=a(k) : a(k)=a(i) : a(i)=tmp

    f(i)=True

 End If

Next i

当数组元素a(1)到a(5)的值依次为“8,2,1,21,3”数组f的初值均为 False,执行该程序段,f数组中元素值为True的个数有(    )

A . 1个 B . 2个 C . 3个 D . 4个
编写VB程序实现如下功能程序运行时产生n个数据并按升序排序显示在列表框List1中,在文本框Text1中输入一个正整数key,单击“查找”按钮 Command1,则在标签Label2中显示查找结果。程序界面如图所示。

实现上述功能的VB程序如下,但加框处代码有错误,请改正。

Const n=10

Dim d(1 To n)As Integer

Private Sub Form Load()

′随机产生n整数并存储在数组d中,并把数组d按升序排序

′在列表框中显示排序后的数据,代码略

End Sub

Private Sub Command1_Click()

    Dim key As Integer, p As Integer

   key =Val(Text1.Text)

       ‘①

If p<>0 Then

   Label2. Caption="该数据在第"+Str(p)+"个位置"

Else

   Label2. Caption="没有找到! "

  End If

End Sub

Function search(key As Integer) As Integer

  i=1: j=n

  Do While i<= j

  m=(i+j)\2

  If d(m)=key Then

    search =m

    Exit Function

  ElseIf key<d(m)Then

    j=m-1

  Else

    i=m+1

  End If

Loop

    ‘②

End Function

某解密程序:对输入的字符串进行解密处理,输出解密后的字符串。已知数据加密方法为对原始字符串中的每个字符进行如下处理:

①将该字符的ASCII码转换为8位二进制数;

②将后4位二进制数逐位取反(1变0,0变1)

③将操作②生成的4位二进制数均右移一-位, 原第4位变成新的第1位;

④将原来的前4位二进制数连接新的后4位二进制数成为最终加密后字符的内码。

例如字符“A”经过上述加密运算,可得到字符“M”。

ASCII码

转二进制数

后4位取反

后4位右移

拼合

转十进制

转字符

65D

0100 0001B

1110

0111

0100 0111B

71D

G

程序运行界面如图所示,在文本框Text1中输入加密字符串。点击“解密”按钮后,在文本框Text2中输出原始字符串。

  1. (1) 若加密后的字符为F,则原字符为
  2. (2) 请在横线处填入合适代码。

    Private Sub Command1_ Click()

      Dim s As String, s1 As String, s2 As String, n As Integer

      Dim x As Integer, i As Integer, j As Integer, C As Integer

      Dim a(15) As String

      a(0) = "000": a(1) = "0001": a(2) = "0010": a(3) =“011": a(4) = "0100":a(5) = "0101": a(6) ="0110": a(7) = "111": a(8) = "1000" a(9) ="1001":a(10) = "1010": a(11) ="1011": a(12) = "1100"a(13) = "1101": a(14)= "1110":a(15) ="1111"

      s2 = "": s = Text1. Text

      For i=1 To Len(s)

        n = Asc(Mid(s, i, 1))

        c=n Mod 16

        s1 = 

        x = Va1(Mid(s1, 1,1))

        For j=2 To  4

          x=x+

        Next j

        x=(n/16)*16

        s2 = s2 + Chr(x)

      Next i

      Text2. Text = s2

    End Sub

  3. (3) 加框处代码出错,请改正。
冒泡排序在某一遍加工过程中没有数据交换时,说明数据已经有序,优化程序段如下:

i = 1: flag = True

Do While i < = 4 And flag = True

flag=False

For j = 6 To i + 1 Step -1

If a(j) > a(j - 1) Then

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

flag = True

End If

Next j

i = i + 1

Loop

数组元素a(1)到a(6)的值依次为48,36,24,97,77,23,经过该程序段加工后,变量i的值是(     )

A . 1 B . 3 C . 5 D . 4
某会所采用会员制度,对会员消费实行积分奖励,利用VB编写一个程序,实现的功能:在文本框Text1、Text2中输入一个积分的范围,在列表框List2中显示该范围内的会员编号和对应的积分。多个会员可能有相同的积分,先用对分查找法找到该范围内的最小积分编号的下标,再循环输出该范围的会员编号情况。程序运行界面如图所示。

程序代码如下,为实现以上功能,请在横线处填写合适的代码:

Dim jf(800) As Integer, hyh(800) As String, n As Integer

Dim n As Integer ′表示会员的总人数

Private Sub Form_Load()

′从数据库中读取会员编号和积分,并按积分值从小到大排序,显示在列表框List1中

For i=1 To n

  List1.AddItem hyh(i)+“ ”+Str(jf(i))

Next i

End Sub

Private Sub Command1_Click()

Dim i As Integer, j As Integer, m As Integer, k1 As Integer, k2 As Integer

k1=Val(Text1.Text): k2=Val(Text2.Text)

If k1 > k2 Then t=k1: k1=k2: k2=t

  If k1 > jf(n) Or k2 < jf(1) Then

    List2.AddItem “没有找到该范围的数据!”

    Text3.Text=“0”: Exit Sub

  End If

  i=1

  j=n

  Do While i <= j

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

    If jf(m) > k1 Then

      j=m - 1

    ElseIf jf(m) < k1 Then

      i=m+1

    Else
      If Then

        j=m - 1

      Else

        p=m

      Exit Do

      End If
    End If

  Loop
  If i > j Then p =

  k=0
  Do While  And p <= n

    List2.AddItem hyh(p)+ “ ”+Str(jf(p))

   

      p=p+1

  Loop

  Text3.Text=Str(k)0

End Sub

下列变量名不合法的是(  )
A . 7bc B . c0 C . c_8 D . E6a
下列Python变量名错误的是(   )
A . _1 B . BA C . cds_11 D . 11_abb
下面是合法单精度型变量的是(   )。 
A . Kuma! B . Sum% C . mytm$ D . Km#
下列不是VB常量的是(  )。
A . 3.14 B . ′Name ′ C . #10/18/2007# D . True
最近更新