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

下列关于For ...next 语句的说法正确的是(  )
A . 循环变量、初值、终值和步长都必须为数值型 B . step后的步长只能为正数 C . 初值必须小于终值 D . 初值必须大于终值
如果一个正整数从高位到低位上的数字依次递减,则称其为降序数(如92、4772是降序数,而7524不是降序数)。现编写VB程序实现如下功能:在文本框Text1中输入一个正整数,单击“判断”按钮 Command1,在标签Label2中显示出该数是不是降序数。程序运行界面如图所示。

  1. (1) 代码Private Sub Command1_Click( )中 Command1是。(单选,填字母:A .对象名/B .事件/C .事件处理过程/D .方法)。
  2. (2) 请完善下列程序代码:

    Private Sub Command1_Click( )

    Dim i As Integer, s As String, flag As Boolean

        ①   

    flag True: i=2

    Do While i <= Len (s) And flag

           ②  

            i=i+1

       ③  

    If flag Then

        Label2. Caption=s+ “是降序数!”

    Else

        Label2.Caption=s+ “不是降序数!”

    End If

    End Sub

     ② ③ 

某VB程序代码如下:

n = Val(Text1. Text)

sum=n

k=4

Do While n \ k>0

    Sum = sum + n \ k

n=n \ k+n Mod k

Loop

Text2. Text = Str(sum)

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

A . 12 B . 14 C . 16 D . 13
小李在探究将两段已按从小到大排序的数据连接后用冒泡排序思想再进行从小到大排序的情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组c中),单击“排序”按钮Command1后,在列表框List2中显示排序后的数据。

  1. (1) 在设计如图a所示的程序界面时,应使用图b所示“控件工具箱”中的(填写相应编号)添加列表框List1。
  2. (2) 语句“Flag=True”放置在(单选,填字母:A/B/C)位置。
  3. (3) 程序代码中,加框处语句有错,请改正。
  4. (4) 在划线处补充完成程序代码。

    Const n1 = 6     ‘ 第1段已排序数据长度为n1

    Const r2 = 5     ‘ 第2段已排序数据长度为n2

    Dim c (1 To n1 + n2) As Integer     ‘ 数组c长度为n1+n2,依次存储第1、2段数据

    Private sub Command1_Click ( )

    ‘ 数组c依次存储两段已按从小到大排序的数据,并在列表框List1中显示’

    ‘ 代码略

    List2. Clear

    ‘ A位置

    For i = n1+1 To n1 + n2

       

    ‘B位置

        Do While j > 1 and Flag

        If         ①          Then

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

    ‘ C位置

        Else

            Flag = False

        End If

                ②         

        Loop

    Next i

    For i = 1 To n1 + n2

        List2. AddItem c(i)

    Next i

    End sub

     ② 

某对分查找算法的VB程序段如下:

Key=Int(Rnd*10)+1

If Key>5 Then Key=Key+5

i=1:j=10:n=0

Do While i<=j

    m=(i+j)\2

    If Key<=d(m) Then

      j=m-1:n=n-1

    Else

      i=m+1:n=n+1

    End If

Loop

Label 1.Caption=Str(n)

若数组元素d(1)到d(10)的值依次为“1,3,4,5,7,8,11,13,15,18”,执行该程序段后,则在标签Label 1中显示的结果不可能为(  )

A . -2 B . -1 C . 1 D . 2
某种编码以4位二进制码为一组,每组前两位表示方向,后两位表示距离。编写一个程序,将编码翻译成方向和距离,距离值为每组编码后两位二进制码转换为十进制数的值。具体功能如下:在文本框Text1中输入连续多组编码,单击“翻译”按钮Command1,结果显示在列表框List1中。程序运行界面如图所示。

  1. (1) 要使程序运行时,文本框 Text 1 的 Width 属性值为 2018,可在Form_Load 事件过程中添加语句(单选,填字母:A .Width=2018/B .Text 1.Width=2018/C .Width.Text 1=2018).
  2. (2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

    Private Sub Commandl_Click()

    Dim s As String,c As String,d As String

    Dim n As Integer,bl AsInteger,b2 As Integer, v As

    Integer, i As Integer

    s = Text1.Text:n = Len(s):i= l

    Do While i <=n

        c = Mid(s,i,2)

        If c = "00" Then

          d = "东"

        ElseIf c= "01" Then

          d = "南"

        ElseIf c= "10" Then

          d= "西"

        Else

          d = "北"

        End If

        bl = Val(Mid(s,i +2,1))

        b2 = Val(Mid(s,i+3,1))

        v=   ①  

        List1.Addltem d + " "+ Str(v)

            ②   

    Loop

    End Sub

  3. (3) 若文本框Text1中输入的内容为“1111”,单击“翻译”按钮,列表框List1中显示的内容是
食堂排队买菜问题。在食堂排队买菜时,每个同学都有一个窗口买菜时间,如果某同学的等待时间超过他在窗口买菜时间的3倍,他就会不愉快,并且不参与排队,反之是愉快的。等待时间是指排在该同学之前的所有人的买菜时间之和。已知每个同学在窗口的买菜时间,请确定如何排队才能使愉快的人数最多,并输出最多的人数。例如:10个同学的买菜时间如下表所示,则最多有8个人是愉快的。

学生编号

1

2

3

4

5

6

7

8

9

10

买菜时间

3

2

5

5

6

7

1

8

1

3

最终是否参与排队

Const n = 10

Dim a(1 To n)As Integer

Private Sub Command1_Click()

Dim i As Integer,s As Integer,ans As Integer,t As Integer

'读取每个学生的买菜时间,依次存储在数组a中,代码略

For i = 1 To n-1

  k = i

  For j = n To i + 1 Step - 1

    If    Then k = j

  Next j

  If a(i)<>a(k)Then t=a(i):a(i)= a(k):a(k)=t

Next i

s = 0:ans = 0

For i = 1 To n

  If  Then s=s + a(i):ans = ans + 1

Next i

Label1.Caption ="共有"+ Str( ans)+"个人是愉快的,且参与排队买菜。"

  1. (1) 代码“Private Sub Command1_Click()”中的Command1是(单选,填字母:A .对象名/B .事件名/C .事件处理过程名)。
  2. (2) 请在划线处填入合适代码。
  3. (3) 程序代码的加框处有错,请改正。
  4. (4) 若10个同学的买菜时间都相同,则有个人是愉快的,且参与排队。
某密码强度判断程序功能如下:在文本框Text1中输入由大写字母、小写字母、数字和其他字符4种不同类型字符组成的密码字符串,单击“判断”按钮Cmd1,在标签框Label3中显示判断结果。程序运行界面如图所示。

密码强度判断条件如下:密码长度小于6,则强度为“弱”。在密码长度大于等于6的情况下,若只出现一种字符,则密码强度为“弱”;若出现两种不同字符,则密码强度为“中”,出现3种以上不同字符,则密码强度为“强”。

  1. (1) Cmd1对象属于类。(单选,填字母:A .Label/B .TextBox/C .CommandButton)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Cmd1_Click()

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

    As String

        ①   

    If n<6 Then

      Label3.Caption ="弱"

    Else

      s= "0000"

      For i = 1 To n

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

        If c > = "0"And c<= "9" Then

          Mid(s,4,1)= "1"'将字符串s第4位上的字符替换为"1"

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

          Mid(s,3,1)= "1"

        Elself c>="a" And c<="z" Then

            ② 

        Else

          Mid(s,1,1)= "1"

        End If

      Next i

      m = 0

      For i = 1 To 4

        If Mid(s,i,1)= "1" Then  ③ 

      Next i

      If m< 2 Then

        Label3.Caption="弱"

      Elself m = 2 Then

        Label3.Caption="中"

      Else

        Label3.Caption="强"

      End If

    End If

    End Sub

  3. (3) 若文本框Text1中输入的内容为“a26$gh2!”,单击判断按钮Cmd1,事件过程运行结束时,变量s的值为
某对分查找算法的部分VB程序如下:

i = 1:j = 12:k = 0:s = " "

key = Val(Text1.Text):c = "N":flag = False

Do While i< = j And flag = False

  m = (i+j+1)\2:k = k+1

  If key = a(m)Then c = "Y":flag = True

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

  s = s & Str(a(m))

Loop

Text2.Text = s:Text3.Text = c

数组a(1)到a(12)的值依次为“99,91,85,76,68,61,53,42,34,27,20,13”,执行该程序段后,下列说法正确的是(  )

A . 该程序段只能进行两位正整数的查找 B . 在文本框Text1中输入两位任意正整数,则k的值介于1和3之间 C . 在文本框Text1中输入76,程序执行后变量i和j的值分别为1和6 D . 若文本框Text2中显示了两个正整数,则文本框Text3中显示的内容一定是Y
对于一组升序不重复的正整数,在任意数字位置分成两段,并交换前后两段的位置,存入数组a。例如6、17、25、36、44、58,在数字6处分成两段,交换位置后为:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

6

17

25

36

44

58

在数字44处分成两段,交换位置后为:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

44

58

6

17

25

36

依据对分查找思想,设计一个在数组a中查找最小值,并输出在Text1中的程序,实现该功能的 VB程序如下,但加框处代码有错,请改正。

Private Sub Commandl_Click()

Const n = 6

Dim a(1 To n)As Integer

Dim i As Integer,j As Integer,m As Integer

'读取数据,按上述规则存入数组a中,代码略

i = 1:j = n

If    Then Text1.Text = Str(a(i))   ‘⑴

  Do While i< = j

  m =(i+j)\2

  If a(m)<a(j)Then

        ‘⑵

  Else

    i = m + 1

  End If

Loop

Text1.Text = a(j)

End Sub

 ⑵ 

(二进制转十六进制)从文本框TextB输入一串不带符号位的二进制整数,单击“转换”按钮,将二进制转换为十六进制并显示在文本框TextH中。程序界面如图所示:

转换方法:先从右往左将二进制数分割成 4 位一组,若最左边的一组不足4位,则用 0 将高位补足,然后将每 4 位二进制数转换为 1 位十六进制数。

  1. (1) 观察程序代码,可知“转换”按钮的对象名为。(单选,填字母:A .TextB/ B .TextH/B .Command1/C .Convert/D .转换)
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Convert_Click()

    Dim a(1 To 100) As Integer, temp As Integer

    Dim s As String, res As String, n As Integer, r As Integer

    res = ""

    s=TextB.text

    n = Len(s)

    For i = 1 To n

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

    Next i

    t = n \ 4

    r = ① 

    temp = 0

    For i = 1 To r       ‘将最高的r位转换为十六进制

     ② 

    Next i

    If temp > 9 Then

    res = Chr(temp + 55)

    ElseIf temp > 0 Then

    res = CStr(temp)       ‘Cstr()函数用于将数值转换为字符串,同时删除前导空格

    End If

    For i = 1 To t          ‘将t组4位二进制转换为十六进制

    Temp=0

    For j=1 to 4

    temp = temp+a(j+r+4*(i-1))*2^(4-j)

    Next j

    If temp > 9 Then

    res = res + Chr(temp + 55)

    Else

    res = res + CStr(temp)

    End If

    Next i

    TextH.Text = res

    End Sub

    第①处代码为

    第②处代码为

  3. (3) 若在文本框 TextB 中输入“101000111”,则单击“转换”按钮后的输出结果为:
有如下VB程序段:

For i=1 To 6

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

Next 1

For i=2 To 6

If i Mod 2=0 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(1)到a(6)的值可能是(  )。

A . 11,1,7,5,4,3 B . 5,3,6,4,0,2 C . 10,9,8,0,5,2 D . 9,8,1,1,5,4
自定义函数delStr(S,m)的功能是删除字符串S中第m位上的字符,

Function delStr(S As String, m As Integer)As String Dim n As Integer

n= Len(s)

If m<1 Or m>n Then

delStr="输入位置有误!"

ElseIf m=1 Then

delStr=Mid(S, 2, n-1)

ElseIf m<n Then

   ①  

ElseIf m=n Then

delStr=Mid(S, 1, n-1)

End If

End Function

则划线①处代码填写正确的是(  )。

A . delStr=Mid(S, 1, m)+Mid(S, m+1, n) B . delStr=Mid(S, 1, m-1)+Mid(S, m, n) C . delStr=Mid(S, 1, m)+Mid(S, m, n-m) D . delStr=Mid(S, 1, m-1)+Mid(S, m+1, n-m)
x和n都是正整数且x<=n,下列选项中,与语句“x=x Mod n +1 ”功能相同的是(  )
A . x=(x+1) Mod n B . x=x+1     If x=n Then x=1 C . x=x+1     If x=n+1 Then x=1 D . x=x+1     If x=n+1 Then x=0
在一个整数序列中找第k大数,若有相同的整数,则位置靠前的整数的名次靠前。如有整数分别为“10,13,12,13,15”,则第1大的数为15,第2大的数为13,位于第2位置,第3大的数还是13,位于第4个位置,第4大数是12,第5大的数是10。

编写一个VB程序,实现如下功能:程序启动时产生n个1~20之间的随机整数,在文本框Text2中输入整数k(k≤n),单击“查找”按钮Command1后,在标签Label1上显示第k大的数及位置。程序运行界面如图所示。

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

    Const n = 10

    Dim a(1 To n) As Integer

    Private Sub Form_Load()

    '本过程产生n个1~20之间的随机整数存数组a中,并在文本框Text1中显示,代码略

    End Sub

    Private Sub Command1_Click()

    Dim i As Integer, sum As Integer, key As Integer,c As Integer,k As Integer

    Dim b(1 To 20) As Integer

         ①    

    For i = 1 To n

      b(a(i)) = b(a(i)) + 1

    Next i

    i = 20

    sum = 0

    Do While i >= 1 And sum < k

           ②    

    i = i – 1

    Loop

         ③    

    Label3.Caption = "第" + Str(k) + "大的数是" + Str(key)

    c = 0

    For i = 1 To n

      If a(i) = key Then c = c + 1

      If c = Then Exit For

    Next i

    Label3.Caption = Label3.Caption + ",在第" + Str(i) + "位置"

    End Sub

     ② ③ 

  3. (3) 程序代码中的加框处代码有误,请改正。
在VB中,有如下程序段,该程序段执行后,变量x的值是(  )

x=0

for i=1 to 5

x=x+i-1

next i

A . 0 B . 5 C . 15 D . 10
阅读下列程序,写出运行结果。

Dim x as Integer

Dim y as Integer

   y = Val (InputBox(“y =”))

   For i = 1 To 3

     x = Val (InputBox(“x =”))

     If x < y Then

        y = x

     End If

   Next i

   Print y

程序运行后,依次输入:45  96  11  37

运行输出结果是:

在Python中运行下列程序,输出结果为(    )

for i in range (1,6):

    print(‘*’)

A . ****** B . * * * * * * C . * * * * * D . *****
下列可以作为python变量名的是(    )
A . 'a1' B . 6key C . False D . i_f
下列可以作为Python 变量名的是(      )
A . info1 B . 3_teacher C . a#21 D . If
最近更新