4.1.3 Python的运算符与表达式 知识点题库

数据插入。用VB设计程序,主要功能如下:随机产生15个200以内的正整数数列,按升序排序后显示在List1列表框中,在文本框Text1中输入1个200以内的正整数,单击“插入”按钮Command1后将其插入到数列中,并保持数列仍然有序,显示在列表List2中,同时在标签Label4中显示插入的位置,程序界面如图所示。

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

Dim a( 1 To 20) As Integer

Private Sub Command1_Click ( )

Dim key As Integer

key =   ①   

i = 1

Do While key > a ( i ) And ( i <= 1 5 )

i = i + 1

Loop

Label4.Caption = “该数插入的位置是:” + Str ( i )

If  i = 16  Then

a ( i ) = key

Else

For j = 16  To  i + 1 Step -1

    ②  

Next j

a ( i ) = key

End  If

List2. Clear

For i = 1 To 16

List2.AddItem a( i)

Next i

End Sub

Private Sub Form_Load( )

'随机生成15个200以内的正整数

Randomize

For i = 1 To 15

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

Next i

'将15个数从小到大排序

For i = 1 To 14

k = i

For j = i + 1 To 15

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

Next j

If  i <>k  Then

t = a(i); a( i) = a ( k ):a ( k )

End  If

Next i

'将排好序的数输出在列表框Listl中

Listl.Clear

For i = 1 To 15

Listl.AddItem str ( a ( i ) )

Next i

End Sub

程序中①划线处应填入,程序中②划线处应填入

小丽在假期看到小朋友们在玩一个游戏,8个小朋友围成一圈,从某个小朋友开始报数,报到指定数时,该小朋友出圈,接着从出圈的位置开始再接着报。她希望通过VB程序模拟这个过程,思路如下:

1)用一个一维数组来模拟,编号1~N保存在数据a(1)~a(n)中,来代表N个小朋友。

2)K代表报数的起始位置,从数组的a(k)开始遍列,报到m出圈,将当前位置的元素删除,后面的元素依次往前移位。总数减1。

3)当报数报到数组元素的最后一个时,返回数组开头接着报数。

4)当总数只剩下一个数时,直接输出。

界面如下:

Private Sub Command1_Click(   )

Dim i As Integer

Dim n As Integer

Dim m As Integer, k As Integer

Dim A(1 To 50) As Integer   '存放编号的数组

n = Val(Text1.Text)                       '编号个数

k = Val(Text2.Text)                '报数起始位

m = Val(Text3.Text)                   '报到出圈数

If n > 0 And k > 0 And m > 0    ①   n <= 50 Then

    For i = 1 To n              '初始化编号a(1)=1,a(2)=2,……

         A(i) = i

    Next i

    Label1.Caption =     ②          '调用出圈函数,得到返回的出圈顺序

Else

    MsgBox "编号、起始位、报到出圈数都必须大于0!编号不能超过50!"

End If

End Sub

Private Function chuquan(b() As Integer, n As Integer, m As Integer, k As Integer) As String

Dim i As Integer, j As Integer

Dim s As String                  '出圈顺序存放

i = k - 1

s = "出圈顺序为:"

Do While n > 1

       i = i + 1

       m = m - 1

       If     ③  Then

         s = s + Str(b(i)) + ","

         For j = i To n - 1

            b(j) = b(j + 1)

         Next j

         b(j) = 0

         n = n - 1

         i = i - 1

         m = 4

      End If

      If i = n  Then  i = 0

Loop

chuquan =        ④    

End Function

变量a中存储了一个字符,能够正确判断该字符为数字字符“0”-“9”的VB表达式是(   )
A . Asc(a)>=0 Or Asc(a)<=9 B . “0”<=a<=”9” C . a<=”0” Or a>=”9” D . a>=”0” and a<=”9”
将数学表达式 写成Visual Basic表达式,正确的是(   )
A . Sqr[Abs(a*b – c*c)] B . Sqr(Abs(ab - c*2))     C . Sqr(Abs(ab - c*c)) D . Sqr(Abs(a*b - c^2))
在VB中,下列程序段执行后,变量b的值是(  )

a=4

b=7

a=a+b

b=a+b

A . 7 B . 11 C . 15 D . 18
使用“字符洗牌”程序模拟扑克洗牌的操作,为了打乱牌序,把手上的扑克牌中间抽一部分放到最上面,完成一次洗牌(如字符串“1234ABCD”,若把中间的第3 个到第5个字符抽出并保持原来的顺序放到最前面,则一次“洗牌”操作后字符串变成“34A12BCD”),也可以把扑克牌分成上下两部分,把下面的部分放置到上面(如字符串“1234ABCD”,把第3 个字符到最后一个字符移到前面,变成“34ABCD12”),多次重复做这个动作,就能达到洗牌的目的,效果如图所示。

  1. (1) 若要把窗体的标题名称由“Form1”改为“字符洗牌”,应改变窗体的属性。
  2. (2) 完成上述功能的程序代码如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

     Dim r As Integer, k1 As Integer, k2 As Integer

     Dim s As String, n As Integer

         ‘从文本框TxtIn 中获取字符串

     Randomize

     r = Int(Rnd() * 10) + 1    ‘随机生成洗牌次数

     n = Len(s)

     Do While r >= 1    ‘洗牌操作

      k1 = Int(Rnd() * (n - 2)) + 2

      k2 = Int(Rnd() * (n - k1 + 1)) + k1

      s = + Mid(s, 1, k1 - 1) + Mid(s, k2 + 1, n - k2)

      r = r - 1

     Loop

     = s       ‘输出结果

    End Sub

  3. (3) 若加框处的语句改为TxtOut.Text = Str(s),则运行程序时会发生的错误消息为

【加试题】删数问题。输入一个数字串s,删去其中k个数字(k<数字串中数字的个数),使剩余数字在保持相对位置不变的情况下构成一个值最小的整数。例如,s=“19990608”,k=4,处理结果为:608。

删数的算法如下:

⑴如果k>0,则从前往后检测相邻字符,否则,转⑶;

⑵①若所有相邻字符都已非降序,则将串尾k个字符删去,k值置0,转⑴;

②若相邻两数存在逆序(即前一个数>后一个数),则将前一个数删除,k值变化,然后回到⑴;

⑶去掉串首的0,输出结果。按照上述算法思路,编写了VB程序,功能如下:在文本框Text1中输入数字串,在文本框Text2中输入删数的个数,单击“处理”按钮Command1,在文本框Text3中显示最小的整数。程序运行界面如图所示。

  1. (1) 如果输入的数字串为“20160125”,删除个数为4,则结果是
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    delete 函数说明:delete(st,x,y)为自定义函数,功能为在字符串st中删除x 位置开始的y 长度的子串。

    Private Sub Command1_Click()

    Dim s As String, k As Integer, i As Integer, j As Integer, n As Integer

    s = Text1.Text

    k = Val(Text2.Text)

    n = Len(s)

    Do While k > 0

    i = 1

    Do While i < n And 

    i = i + 1

    Loop

    If i = n Then

    n = n - k

    k = 0

    Else

    s = delete(s, i, 1)

    n = n - 1

    End If

    Loop

    i = 1

    Do While n > 1 And Mid(s, 1, 1) = "0"

    s = delete(s, 1, 1)

    I = i + 1

    n = n - 1

    Loop

    Text3.Text = s

    End Sub

    Function delete(st As String, x As Integer, y As Integer) As String

    'mid 函数第3个参数省略,则截取从开始位置向右到字符串结尾的所有字符

    delete = Mid(st, 1, x - 1) + Mid(st, x + y)

    End Function

有如下VB程序段

Dim c As Integer,a(0 To 5) As Integer

For i = 1 To 5

  a(i) = i

Next i

c = 0

For i = 1 To 5

  x = Int(Rnd * 5 + 1)

  If a(x Mod 5) = i + 2 Then c = c + 1

  If c = x Then Exit For

  i = i - 1

Next i

运行该程序后,变量c的值不可能是(  )

A . 1 B . 2 C . 3 D . 4
统计不同单词个数,在Text1中输入一行单词,点击“统计”按钮后在Text2中输出不同单词的个数。单词字母有大小写,同一单词的大小字母视为相同,句子以符号结尾,程序运行界面如图所示。

  1. (1) 观察以下代码,该代码中 Command1_Click()是。(单选:A .对象名/B .事件名/C .事件处理过程名)
  2. (2) 实现上述功能的 VB.程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim a(1 To 100)As String, s As String, ch As String, word

    As String

    Dim i As Integer,j As Integer,k As Integer, numb As Integer

    s=Text1.Text:k=0:word=" "

    For i=1 To Len(s)

    ch=Mid(s,i,1)

      If ch>="a"And ch<="z"Оr ch>="A"And ch<="Z"Then

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

        word=word+ch

      Else

        flag=False

        For j=1 To k

          If a(j)=word Then flag=True

        Next j

        If Not flag And word<> ''Then

            ②  

          a(k)=word

          numb=numb+1

        End If

          ③  

      End If

    Next i

    Text2.Text=Str(numb)

    End Sub

表达式16/4-2^5*8/4 MOD 5\2的值为值是 (   )。 
A . 14 B . 4 C . 20 D . 2
阅读下列程序代码:

    Dim s As String, c As String

    Dim i As Integer, n As Integer, p As Integer

    s = Text1.Text

    n = Len(s)

    p = 1

    For i = 1 To n

        c = Mid(s, i, 1)

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

            t = c + t

        Else

            t = Mid(t, 1, p - 1) + c + Mid(t, p, Len(t) - p + 1)

            p = p + 1

        End If

    Next i

Text2.Text = t

如果文本框Text1中输入“ABCD@1234”,则文本框Text2中输出(    )

A .  ABCD@1234 B .  @1234ABCD C .  @1234DCBA D .  1234@ABCD
产生一个在[10,99]中随机奇数的VB表达式是(  )
A . 11 + Int(Rnd * 99) B . 11 + Int(Rnd * 45)*2 C . 11 + Int(Rnd * 89) D . 10 + Int( Rnd * 90)
下列VB表达式的值最大的是(   )
A . Len(“21”)+3 B . Sqr(36) + Int(3.6) C . Int(Rnd*7+15) D . Val(mid(“236”,1,2))
学校举行元旦文艺汇演比赛,需要计算每位选手的比赛得分。比赛的计分规则如下:去掉一个最高分和一个最低分,求剩下得分的平均分。若用Python程序实现上述计分功能,请回答下列问题:
  1. (1) (多选)各评委对某选手的评分为83,85,87,75,95,87,88,90,79,80。在核对成绩时发现有误,错误录入的得分为score=(83,85,878,80,788,90,79,80],以下选项中能实现正确修改的是(     )
    A . score[3:6]=[75,95,87] B . score[4:6]=[75,95,87] C . score[-7:-4]=[75,95,87] D . score[-7:-5]=[75,95,87]
  2. (2) 若评分列表score经过升序排序后为[75,79,80,83,85,87,87,88,90,95],则求评委的最高分的表达式为;最低分的表达式为 。
在Python中print(-14//4)的运行结果是(    )。
A . -4 B . -3.5 C . 2 D . -2
已知t=5.1,s=9,m=-8,则表达式的值为True的有(    )
A . t > Abs(m) B . Sqr(s) = Int(s-t) C . S Mod 10< Fix (t) \10 D . Not (s=9)
下列能正确表示数学表达式100≥x≥1的VB表达式是(    )
A . 100≥x And x≥1 B . 100>=x And x>1 C . x>=1 And x<=100 D . x>=1 Or x<=100
下面优先级最高的运算符是(     )
A . ** B . ( ) C . + D . /
有两个条件P、Q,只要有一个条件为真时,结果一定为真的表达式是(       )
A . not P B . P and Q C . P or Q D . not P   and   not Q
在Python中,表达式"45"+"6"的值为(    )
A . 51 B . ‘456’ C .   456 D . ‘51’
最近更新