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

有如下Visual Basic程序段:

Dim i As Integer, s As Integer

i = 1

s = 0

Do While i <= 5

 s = s + 2

i = i + 1

Loop

问:该程序段运行后,变量s的值为,i的值为

如下图程序,要使Label1中显示的值是30,划线处应该填(  )

A . 8 B . 9 C . 10 D . 12
输入一个表达式(运算符号只有加、减、乘、除和小括号,表达式是正确的,不需要检查),求表达式中最后一次计算的运算符号位置。比如表达式a*(b+c)-4+d最后一次运算的运算符号是在第10个位置的“+”,输出10。算法的思想是从表达式右边开始往左边查找,对碰到的字符分四种情况考虑:

1)若是运算符“+”,保存该位置并结束查找。

2)若是第一次碰到或“/”,保存该位置,若不是第一次碰到或“/”,继续往左边查找。

3)若是“)”,调用函数找到和它对应的位置,跳过该括号内容,继续往左查找。

4)若是非运算符,继续往左查找。

运行界面如下图:

  1. (1) 表达式c*a+(a+b),最后一次计算的运算符号位置是
  2. (2) 实现上述功能的VB程序如下,根据算法将下列程序补充完整。

    Function find(y As String, x As Integer) As Integer

    ‘该函数的功能是返回表达式y中和位于第x位置的“)”配对的位置,代码略

      Do While Mid(y, x, 1) <> “(”

     

      Loop

      find = x

      End Function

      Private Sub Command1_Click()

      Dim s As String, t As Integer, ans As Integer, p As Integer

      s = Text1.Text      ‘输入表达式

      t = Len (s): p = 0

      Do While t > 0

       If Mid(s, t, 1) = “+” Or Mid(s,t, 1) = “-” Then     ‘处理+、-

        ans = t

        Exit Do

       End If

       IfThen     ‘处理*、/

        ans=t

        p=1     ‘用来标记乘号或除号已经出现了

       End If

      If Mid(s, t, 1) =“)”Then      ‘处理括号

       t = find(s, t)

      End If

     Loop

     Label2.Caption=“最后计算的运算符号位置为”+Str(ans)

     End Sub

素数是指除了1和本身不能被任何数整除的数。请将3到100间的素数添加到LIST1中。

PRIVATE SUB FORMCLICK

  FOR I = 3 TO

     F=0

     FOR J= 2 TO I-1

       IF THEN

        F=1

        EXIT FOR

       END IF

     NEXT J

  IF F=0   THEN

 

 END SUB

某地车辆限行规则:周六、周日不限号;周一到周五,每天限行两个尾号,具体如下:

周一限行1和9,周二限行2和8,周三限行3和7,周四限行4和6,周五限行5和0。尾号为车牌最后一位数字,如果最后一位是字母,则看倒数第二位,依次类推,如车牌“浙A12C4F”的尾号为4。小王编写了一个判断车辆限行的VB程序,功能如下:在文本框Text1中输入车牌,Text2中输入星期几,单击“判断”按钮Command1后,在标签Label3上显示该车当天是否限行。程序运行界面如图所示。

  1. (1) 在设计程序界面时,要清空标签Label3上的显示内容,应修改其属性。
  2. (2) 实现上述功能的VB程序如下,请在画线处填入合适代码。

    Private sub Command1__ Click()

      Const s=“一二三四五”

      Dim i As Integer

      Dim cp As String,xq As String

      Dim ch As String,t As String

      cp=Text1. Text

      xq=Text2. Text

      If xq=“六”Or xq=“日”Then

        Label3. Caption=“不限行!“

      Else

        i=Len(cp)

        Do While i>=1

          ch=Mid(cp,i,1)

          If ch>=“0”And ch<=“9”Then exit Do ’Exit Do用于退出循环

              ①    

        Loop

        If Val(ch)=0 Then

          t=Mid(s,5,1)

        Else If Val(ch)<=5 Then

          t=Mid(s,Val(ch),1)

        Else

              ②   

        End If

        If t=xq Then

          Label3. Caption=“限行!”

        Else

          Label3. Caption=“不限行!”

      End If

    End Sub

     ② 

  3. (3) 运行该程序,文本框Text1中输入“浙A1B20E”,Text2中输入“五”,单击“判断”按钮,则标签Label3上显示的内容是
将一个二进制数转化为十进制数可以采用“按位权展开”法。程序功能如下:在文本框Text1中输入一个二进制数,单击“开始转换”按钮Command1后,对应的十进制数在文本框Text2中显示。程序界面如图所示。

进转为进制程序

  1. (1) 该程序窗体中共有个对象(不包含窗体本身)。
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1 _Click( )

    Dim s As String, st As Long, ch As Integer

    Dim i As Integer, n As Integer

       ①    

    n=Len(s)

    st=0

    For i=1 To n

        ch=   ②  

        st=st+ch*2^(i- 1)

    Next i

    Text 2. Text = Str(st)

    End Sub

     ② 

  3. (3) 运行该程序,当输入的二进制数为“10101”时,得到的十进制结果是
有如下VB程序:

Dim c As Integer

Private Sub Form _Load ( )

    c = 0: Text1. Text = “”

End sub

Private Sub Text1 _Change ( )

    If Va l(Text1. Text) > 0 Then

        Text1. Text = Str(Val(Text1. Text) \2

        c = c + 1

    End If

Text2. Text = Str(c)

    End sub

运行该程序,在文本框Text1中输入5,则Text1和Text2中显示的内容分别是(  )

A . 0  3 B . 1  2 C . 5  1 D . -1  3
对于无序数组a(下标1到n),通过引入数组b(下标1到n),使得a(b(1))≤a(b(2))≤a(b(3)≤…≤a(b(n))。

小王编写了一个VB程序,功能如下:在列表List1框中显示i、a(i)、b(i)、a(b(i))在文本框Text1中输入要查找的数据,单击“查找”按钮Command1后,在标签Label3中显示该数据在a数组中的位置。程序运行界面如图所示。

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

Dim a(1 To 8)As Integer, b(1 To 8)As Integer

Dim n As Integer

Private Sub Form_ Load ( )

‘ n = 8, 对分查找前的8个数据存储在a数组中,每个数据的位次存储在b数组中

‘ 在列表框List1中显示数组下标、a数组、b数组、a(b(i))数组

‘ 代码略

End Sub

Private Sub Command1_ Click ( )

Dim i As Integer, 3 As Integer, k As Integer

Dim m As Integer, key As Integer

key = Val (Text1. Text)

i = 1: j = n

Do While i < = j

m = (i+j) \2

k =              ‘①

If key = k Then

Exit Do

Eelseif key > k Then

  i = m+1

Else

  j = m-1

End if

Loop

If i > j Then

Label13. Caption = “该数据不存在”

  Else

Label13. Caption =         ‘②

End If

End sub

 ② 

有如下VB程序段:

n=0

For i=1 To Len(Text1.Text)

  c=Mid(Text1.Text,i,1)

  If c>=“0”And c<=“9”Then m=1 Else m=2

  a(m)=a(m)+1

  If a(m)=1 Then n=n+1

Next i

数组a中各元素的初始值都为0,文本框Textl中的内容为“Happy2017”。执行该程序段后,变量n的值为(  )

A . 1 B . 2 C . 4 D . 9
有序(非降序)数组A有n个元素,用对分查找算法在数组A中查找key值所在的位置,如果有重复的元素,则显示最早出现该key值的位置。相应的VB程序段如下:

key = Val(Text1.Text)

i = 1: j = n

Do While i <= j

 m = (i + j) \ 2

 If a(m) > key Then

 j = m - 1

 ElseIf a(m) < key Then

 i = m + 1

 Else

 If  Then

 j = m - 1

 Else

 Label2.Caption = Str(key) + "的起始位置是" + Str(m)

 Exit Do

 End If

 End If

Loop

If i > j Then

 Label2.Caption = "找不到" + Str(key)

End If

要使程序实现上述算法思想,则方框中的语句是(  )

A . a(m - 1) = key B . a(m) = key C . m - 1 >= 0 And a(m - 1) = key D . m - 1 >= 0 And a(m) = key
对某数组a中的n个元素随机赋0、1或2这三种值之,现按如下算法对数组a从小到大升序排序,设置两个变量:Left记录第一个1的位置,其左侧全是0,Right记录第一个2的前一位置,其右侧全是2。使用i从头到尾查询一遍,根据a(i)的值决定其是否与a(Left)或a(Right)交换,直至i与 Right相遇。

left=1: right =n: i=1

Do While i <=right

If a(i)=0 Then

tmp= a(left): a(left)=a(i): a(i)= tmp

left=left+1

i=i+1

ElseIf a(i)= 1 Then

i=i+1

Else

    ①   

End If

Loop

要实现上述排序算法思想,则横线处代码应该是(  )。

A . tmp=a(i): a(i)=a(right): a(right)=tmp: right=right -1 B . tmp=a(i): a(i)=a(right): a(right)=tmp: right=right-1: i=i+1 C . i=i-1 D . right=right-1: i=1-1
  【加试题】编写一个VB程序,将一个长度为n的有序序列a(1)、a(2)、……a(n),以整数t(1≤t≤n)将该有序序列划分为两段,并将序列a的前t个数与后n-t个数对调,且保持这两段数(t个数和n-t个数)之间的相对位置不变(即t个数和n-t个数各自有序)。例如,长度为6的有序序列10、19、24、32、76、87,当t=2时重排结果为24、32、76、87、10、19。功能如下:在文本框Text1中输入n,单击“生成”按钮Command1后在列表框List1中显示n个有序数,在文本框Text2中输入t,单击“对调”按钮Command2,在列表框List2输出t个数与n-t个数对调后的数字序列。程序运行界面如下图所示。

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

Dim a(1 To 100)As Integer

Dim n As Integer

Private Sub Command1_Click()       '生成n个有序数,显示在List1中

’有序代码略

End Sub

Private Sub Command2_ Click)

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

t=Val(Text2.Text)

For

Temp=

For j=i To i+1-t Step -1

a(j)=a(j-1)

Next j

 

Next i

For i=1 To n

List2.AddItem Str(a(i))

Next i

End Sub

编写VB程序,实现如下功能:在文本框Text1中输入一个三位的正整数,单击“倒序”命令按钮,在文本框Text2输出该数的倒序数,如输入125,输出521。程序运行界面如图所示,实现以上功能的VB代码如下。  

 

请回答下列问题:

  1. (1) 由代码可知,命令按钮“倒序”的对象名是
  2. (2) 为实现上述功能,请在划线处填入合适代码。

    Private Sub Cmd1_Click( )

    Dim bai As Integer, shi As Integer Dim ge As Integer, n As Integer

    n = Val(Text1.Text)

    bai =   ①  

    shi = n \ 10 mod 10

    ge =   ② 

    Text2.Text = Str(ge * 100 + shi * 10 + bai) End Sub

     ② 

  3. (3) 若在文本框Text1中输入1234,单击“倒序”按钮运行程序,则文本框Text2中的结果 是       
某对分查找算法的VB程序段如下:

t="": i=0: j=9: key=62: f=False

Do While i <=j And Not f

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

   t=t+Str(m)

   If a(m)= key Then

     f=True

     ElseIf a(m)>key Then

       i=m+1

       t=t+"→"

   Else

     j=m-1

     t=t+"←"

   End If

Loop

数组元素a(0)到a(9)的值依次为“99,94,90,87,78,70,63,56,45,36”执行该程序段的值是(    )

A . "4→7←5→" B . "4→7←5→6→" C . "4→7←5→6" D . "4→7←-5"
有如下VB程序段,运行后,文本框Text1中输出的内容为(    )

Dim a As Long, k As Integer, s As String

a=1234567 : k=0

Do while a>0

  r=a mod 10

  If r Mod 2 =0 Then k=k+1

  s= s+ Str(r)

  a=a\10

Loop

Text1.Text= Str(k) +s

A .  2 4 6 3 B . 3 6 4 2 C . 3 1 2 3 4 5 6 7 D . 3 7 6 5 4 3 2 1
某VB程序部分程序段如下:

For i = 1 To n - 1

For j=____________

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

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

End If

Next j

Next i

为了使此程序段能实现数组a中的数据升序排列,则划线处应填入的代码是(  )

A . 1 to n-i B . 2 to n-i+1 C . n to i+1 D . i+1 to n
某算法的部分流程图如图所示,输入s=11200,执行这部分流程后,输出m和n的值分别是(   )

A .   14 4 B .   21 4 C .   22 5 D .   42 5
有如下VB程序:

a=2:b=5

If a>b Then a=a+2 Else b=a+b

a=b+2

b=a+b

Text1.Text=Str(b)

该程序运行后,文本框Text1上显示的内容为

关于Python内存管理,下列说法错误的是(   )
A . 变量不必事先声明 B . 变量无须先创建和赋值而直接使用 C . 变量无须指定类型 D . 可以使用del释放资源
已知a = 5,那么执行语句a +=3之后,a的值为
最近更新