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

【加试题】VB表达式S=Int(Rnd()*1000+9000),则S的取值范围是(   )   
A . B . C . D .
执行如下Visual Basic程序段后,a的值范围是(   )

Private Sub Command1_Click()

Dim a As Integer

a = Int(6 * Rnd + 1) * Int(6 * Rnd - 1)

Print a

End Sub

 
A . [0,35] B . [-1,24] C . [-4,35] D . [-6,24]
编写VB程序,实现如下功能:在文本框Text1中输入筛选关键词“ca”,单击“筛选”按钮Command1,在列表框List1所列字符串中查找左边与“ca”相匹配的字符串,并在列表框List2中输出(运行效果如图所示);否则,在列表框List2中显示“无筛选结果”。

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

Dim a(1 To 20)As String   ‘用于存储20个字符串

‘将20个字符串分别保存赋值给数组元素a(1)、a(2)、a(3)、a(4)、…、a(19)、a(20),并在列表框List1中显示

Private Sub Form_Load()

‘代码略

End Sub

Private Sub Command1_Click()

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

Dim flag As Boolean  ‘变量flag用于标记是否在数组a中筛选到左边与s匹配的字符串

List2.Clear  ‘筛选时清空上次筛选结果

s=Text1.Text

n=Len(s)

flag=False

For i=1 To 20

  If  Then   ‘

   List2.AddItem a(i)

   flag=True

  End If

Next i

If flag=False Then

     ‘

End If

End Sub

某字符串(字节数为3的倍数)编码规则如下:

⑴将该字符串内码分成3个字节一组,顺次连接后得到24位二进制数;

⑵将得到的24位二进制数字按每6位一组分成4组,每组6个位;

⑶在每组数字前补上两个0,得到4个字节的二进制数;

⑷将⑶中得到的四个二进制数分别转换为十进制数;

⑸将每个十进制数转换为1个加密字符,对应的“密码表”按数值由小到大依次为“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn

opqrstuvwxyz0123456789+/”。

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

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

  1. (1) 在上述加密算法步骤⑷中,得到的十进制数最大是
  2. (2) 实现上述功能的VB程序如下。请在划线处填入合适代码。

    Function Code2Char(c As Integer) As String

    Dim s As String

    s=“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”

    Code2Char=

    End Function

    Private Sub Command1_Click()    ‘加密过程

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

    Dim a1 As Integer,a2 As Integer,a3 As Integer    ‘存储加密前字符的ASCII码

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

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

    s = Text1.Text : n= Len(s) : ss =“”

    For i = 1 To n

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

     a2 = Asc(Mid(s, i+1,1))

     a3 = Asc(Mid(s, i+2,1))

     b1 = a1 \ 4

     b2 = (a1 Mod 4) * 16 + (a2 \ 16)

     b3 =

     b4 = a3 Mod 64

     ss = ss + Code2Char(b1) + Code2Char(b2) + Code2Char(b3) + Code2Char(b4)

    Next i

    Text2.Text = ss

    End Sub

【排名次问题】小王编写了一个依据成绩计算名次的VB程序,成绩为0到100之间的整数。算法的基本思想:先统计每个分数的个数,然后按照分数从高到低依次计算每个有效分数(该分数的个数不为0)对应的名次分数相同时名次并列。最高分为第1名,该分数的名次与个数之和为下一个有效分数的名次,以此类推。程序用数组A存放每个分数对应的个数,数组B存放每个分数对应的名次。例如,下表中最高分100有2个,并列第1名,则分数96的名次为分数100的名次加上分数100的个数,即第3名。

分数

100

99

98

97

96

95

94

0

个数

(A数组)

2

0

0

0

1

0

3

0

名次

(B数组)

1

3

4

程序运行时,学生数据显示在列表框List1中,单击“计算”按钮Command1,计算结果显示在列表框List2中,程序运行界面如图所示。

实现上述功能的VB程序如下,请回答下列问题:

  1. (1) 如表所示,若分数93的个数为2,则该分数对应的名次为
  2. (2) 请在划线处填入合适的代码

    Dim sName (1To50) As string    ‘ 存放学生姓名

    Dim sScore (1To50) As Integer    ‘ 存放学生分数

    Dim recCount As Integer    ‘ 存放学生人数

    Private Sub Form_Load ( )

    ‘ 本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示

    ‘ 代码略

    End sub

    ‘ 整数转换成长度固定的字符串

    Function ads (x As Integer, n As Integer) As string

    Dim sx As String, nx As Integer, i As Integer

    sx = Str (x):nx = Len (sx)

    For i =1 To n-nx

      sx = “”+ sx

    Next i

          ①     

    End Function

    Private Sub Command1_Click ( )

    Dim A (0 To 100) As Integer    ‘存放每个分数的个数

    Dim B (0 To 100) As Integer    ‘存放每个分数的名次

    Dim mc As Integer, score As Integer, i As Integer

    For i = 0 To 100

      A(i) = 0

    Next i

    For i = 1 To recount ‘ 计算每个分数的个数

           ②      

    Next i

    mc = 1

    For i = 100 To 0 step -1    ‘ 计算每个分数的名次

      If A(i) <> 0 Then

        B(i) = mc

             ③      

      End If

    Next i

    List2. clear

    List2. AddItem “姓名  分数  名次  ”

    List2. Additem “------------------------------”

    For i = 1 To recCount

      score = sScore(i)

      mc = B (sScore(i))

      List2. AddItem sName(i) + ads ( score,5) + "第" + ads(mc,3) + "名”

    Next i

    End sub

     ② ③ 

有如下VB程序段:

For i=1 To 6

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

Next i

For i=1 To 5

   If i Mod 2=1 And a(i)>a(i+1)Then

      t=a(i):a(i)=a(i+1):a(i+1)=t

   Else

      a(i)=a(i)+1

   End If

Next i

执行程序后,a数组各元素可能是(  )

A . 11,11,7,9,3,9 B . 6,2,8,10,5,9 C . 6,9,3,7,8,12 D . 3,9,0,8,2,7
Visual Basic表达式3+27\2Mod3*2,正确的值是(  )
A . 0 B . 2 C . 3 D . 4
小王基于选择排序算法编写了一个 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. (1) n=6时运行结果如图所示,图中1处“47”在数组 a中下标是(填数字)。
  2. (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))

    If       ①        Then  

    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. (3) 程序中加框处代码有错,请改正。
下列程序执行后文本框Text1显示的内容是(    )

x= "abcdcba": ans = 0

For i= 1 To Len(x) \2.

If Mid(x, i, 1) = Mid(x, Len(x)-i+ 1, 1) Then ans = ans+ 1

Next i

Text1.Text = Str(ans)

A . 1 B . 2 C . 3 D . 4
下列VB表达式中,随机产生两位数奇数的是(    )
A . Int (Rnd*45)*2+9 B . Int (Rnd*45)*2+11 C . Int (Rnd*46)*2+9 D . Int (Rnd*46)*2+11
下列程序执行后,变量ans的值是(  )

s="A1B2C3"

ans=""

For i=1 To Len(s)

  ch=Mid(s, i, 1)

  If i Mod 2=1 Then ans=ans+ch

Next i

A . "AIB" B . "123" C . "AB" D . "ABC"
s是个自然数,下列表达式能判断数字s是一个三位数奇数的是(   )
A . 0<s\100<=9 And s Mod 2=1 B . s\100>0 Or s\100<=9 And s\2<>s/2 C . s\1000=0 And s\100>0 And s\2<>s/2 D . Not(s\1000>0 0r s\100<=0) Or s\2<>s/2
某企业开展“运动打卡动动有奖”活动:若员工在本月累计运动时间30小时以下,奖励0元;达到30但不足45小时奖励300元;达到45但不足60小时奖励450元;60小时及以上奖励500元。小强用python编写程序实现相关功能:输入某员工本月累计运动时间(时),输出其能获得的奖励金额。
  1. (1) 实现上述功能的程序如下,请在划线处填入合适的代码。

    t=int(input("请输入您本月累计运动时间(时):"))

    if t<0:

        print("输入错误")

    else:

        if t<30:

           

        elif t<45:

            m=300

       

            m=450

        else:

            m=500

        print("您的奖励是:",m)

  2. (2) 当输入“-1”时,输出信息为(选填,填字母:A .输入错误 / B .您的奖励是:0 / C .您的奖励是:500)
下面的程序是计算s=1*2+3*4+5*6+7*8+9*10,把程序中划线的错误语句改正。

Private Sub Command1_Click( )

    Dim s As Integer

    s=1

    For k=1 T0 10 Step 2

        s= k*(k+1)

    Next k

    Print(s)

End Sub

改正为:

已知a是一位3位正整数,下列表达式中能得到它十位上的数字的是(   )
A . a/10%10 B . a//10%10 C . a%10//10 D . a%10/10
在Python代码中表示“x属于区间[a,b)”的正确表达式是(    )。
A . a≤x and x<b  B . n<= x or x<b C . x>=a and x<b D . x>=a and x>b
下列表达式能判断正整数x是偶数的是(     )
A . x%2==0 B . x/2== 0 C . x %2==1 D . x % 2!=0
小明有 n 个桃子,吃完后每三个桃核可以换一个桃子,计算小明总共能吃到几个桃子。
  1. (1) 若小明总共有7个桃子,则他最后可以吃到个桃子。
  2. (2) 部分伪代码如下所示,下列加框处有误,请修改伪代码中的错误。

    输入桃子数量n

    count←n

    while    

    count = count + n // 3

      

    输出("小明总共能吃到:", count, "个桃子")

下列Python表达式中,可以表示x在区间(a,b]内的是(    )
A . a<x and x<=b B . a<x<=b C .  a<x or x<=b D . a>x and x<=b
下列表达式的值为True的是(    )
A . "11" + "22" != "33" B . 20 % 6 * 8 > 3 ** 3 C . not(6 / 3 == 2) D . "come" in ["Come","welcome","we"]