3.2 Python语言程序设计 知识点题库

已知x= "Visual Basic",则表达式Mid(x,6,3)的值为:(   )
A . "lBa" B . "l B" C . "Bas" D . "lB "
假设变量a的值是1,变量b的值是2,变量c的值是3,计算下列表达式的值。
  1. (1) a^3+b*c                
  2. (2) c mod b +a     
  3. (3) int(c/b) >b-a     
  4. (4) a<b and (c-a)/2>0    
  5. (5) a+b>c or b+c>a and c+a>b  
奇数n阶幻方是指由自然数1、2、…、n2组成的n×n的方阵,其中每个元素值都不相等,且每行、每列与对角线上的n个元素之和都相等。

N阶幻方的构造方法有很多种,下面是“右上方填数法”的算法:

⑴将1放在第一行中间一列;

⑵2~n2依次填在上一个数的右上方位置(即行减1列加1):

若上一个数的行数为1时,则当前数的行数为n;

若上一个数的列数为n时,则当前数的列数为1。

⑶如果按上面规则确定的位置上已有数,则把当前数放在上一个数的下面。

例如当n为3时,如图a所示,1在第1行第2列,则2的位置为第3行第3列;

再如3在第2行第1列,则4的位置应为第1行第2列,但该位置已有数,因此4就放在3所在位置的正下面。

“左上方填数法”的方法类似于“右上方填数法”,以3阶幻方为例,“右上方填数法”和“左上方填数法”所构造的幻方如下图a、图b所示。

图a 右上方填数法

图b 左上方填数法

小明采用“左上方填数法”的方法设计了如下程序。

Private Sub Command1_Click()

  Dim a(1 To 100) As Integer

  Dimx As Integer,y As Integer,x1 As Integer,y1 As Integer

  Dim n As Integer, s As Integer,pos As Integer, st As String

  n = Val(Text1.Text)

  For i = 1 To n * n

    a(i) = 0

  Next i

  s = 1

  x = 1

  y = (n + 1) \ 2

  a(y) = s

  Do While    ①  

    s = s + 1

    x1 = x: y1 = y

    x = x - 1

    y = y - 1

    If x < 1 Then x = n

    If y < 1 Then y = n

    If a((x - 1) * n + y) > 0 Then     ②   : y = y1

          ③  

    a(pos) = s

  Loop

  st = ""

  For i = 1 To n * n

    st = st + wid(a(i))

    If i Mod n = 0 Then

      List1.AddItem st

      st = ""

    End If

  Next i

End Sub

'自定义函数wid的功能是使数字在方阵对齐

Function wid(p As Integer) As String

  '代码省略

End Function

请回答下列问题:

  1. (1) 采用“左上方填数法”构造5阶幻方,则方阵中第3行第4列应填入的数字为
  2. (2) 请在划线处填入合适的代码。

     ② ③ 

下列不属于VB合法常量的是(  )
A . “123” B . FALSE C . #09/08/98 # D . 4+9
数组a存储n个学生的性别和身高数据,其中奇数位置存储性别,偶数位置存储身高,数组的存储结构如下表所示:

1

2

3

4

5

6

……

2n-1

2n

性别

身高

性别

身高

性别

身高

……

性别

身高

该 n位学生站成一排合影:男生全部在一侧,从低到高排序;女生全部在另一侧,从高到低排(所有人的身高h为整数,且100≤h≤200),排序前显示于List1,排序后显示于List2,如图所示。

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

Const n = 10

Dim a(1 To 2 * n) As String Private Sub Form_Load()

'读取身高和性别数据,存储在数组a中,并显示于列表框List1中,代码略

End Sub

Private Sub Comd1_Click()

Dim count As Integer, i As Integer, j As Integer count=0

For i = 1 To n-1

        ‘改错①

    For j = n To i+ 1 Step -1

       If a(2 * j - 1) = "男" Then If 

          Then   ‘改错②

          t = a(2 * j - 2): a(2 * j - 2) = a(2 * j): a(2 * j) = t

          t = a(2 * j - 3): a(2 * j - 3) = a(2 * j - 1): a(2 * j - 1) = t start = j

       End If

    ElseIf a(2 * j - 3) = "女" Then

        If      Then   '填空

            t = a(2 * j - 2): a(2 * j - 2) = a(2 * j): a(2 * j) = t

            t = a(2 * j - 3): a(2 * j - 3) = a(2 * j - 1): a(2 * j - 1) = t start = j

        End If

    End If

    Next j i=start-1

    count=count+1 Next i

For i = 1 To n

List2.AddItem a(2 * i - 1) + a(2 * i) Next i

End Sub

  1. (1) “排序”按钮的对象名为
  2. (2) 程序代码中,加框处有错误,请改正。

     ② 

  3. (3) 程序代码中,将下划线处语句补充完整。
  4. (4) 对于数据{男,180,女,165,男,170,女,161,男,176},程序运行后,变量 count的值为
将一串二进制数据进行加密,其具体步骤描述如下:

1)从前往后以8个二进制数据为一段,将n个待加密二进制数据依次分割成若干个数据段。剩余数据(个数小于8)为一个独立数据段。

2)对于数据个数等于8的每个数据段,分别作以下的位置调整,从第1个位置开始,从1开始数数,数到m时取出该位数字(取出位置的数字不参与下次计数),从下一个位置开始,继续从1开始数数,数到m时取出该位数字(当数到这8位二进制数的第8个位置后回到第1个位置继续计数),重复上述操作,直至这8位二进制数的各个数字被取完。然后,依次把取出的8位数字拼接成新的二进制数。得到加密数据段。对于数据个数小于8的数据段逆序重排,得到加密数据段。

3)依次合并加密数据段,即为最后的加密数据。

编写一个VB程序,实现功能如下:程序运行时从文本框Text1中读入一个二进制数,从文本框Text2中读入整数m,单击“加密”按钮1,对输入的二进制数按上述方法转换后在文本框Text3中显示。程序运行界面如图所示。

  1. (1) 运行下述程序,若在文本框Text1中输入“11001100”,Text2中输入“5”,单击“加密”按钮,则文本框Text3中显示的内容是
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command_ Click ( )

    Dim a (1 To 100)As String, f (1 To 8) As Integer

    Dim m As Integer, s As String, k As Integer

    Dim i As Integer, As Integer, p As Integer

    s = Text1 Text: m = Val (Text2 Text)

    n = Len (s)

    For i=1 To 8

        f(i) =        ①         

    Next i

    p = 0

    For i =1 To 8

        j = 1

        Do While < = m

                      ②         

            If f(p) = 1 Then j = j+1

        Loop

        f(p) = 0

        For k= 1 To n \8

                  ③         

    Next k

    Next i

    For i = (n \8) * 8 + 1 To n

                 ④          

    Next i

    For i= 1 To n

        Text3. Text = Text3. Text + a(i)

    Next i

    End sub

     ② ③ ④ 

某同学编写了一个VB程序,功能为在文本框Text1中输入英文字符串,单击“转换”按钮Command1,文本框Text1中的大写英文字母转换为小写,结果显示在文本框Text2中。部分程序段如下:

s1=Text. Text

s2=" "

For i=1 To Len(s1)

ch=Mid(s1,i,1)

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

'提示:“A”的ASCII码值为65,“a”的ASCII码值为97

End If

s2=s2 & ch

Next i

Text2. Text =s2

要使程序实现上述功能,则方框中的代码是(  )。

A . ch=Chr(Asc(ch)+32) B . ch=Asc(Chr(ch)+32) C . ch=Chr(Asc(ch)-32) D . ch=Str(Val(ch)-32)
小王基于选择排序算法编写了一个 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 a(k)=a(i)  Then t = a(k): a(k) = a(i): a(i) = t

       Next i

    ‘将排序后数组 a 的元素,按每行 n 个数显示在 list2 中,代码略
    End Sub

     ② 

  3. (3) 程序中加框处代码有错,请改正。
有如下VisualBasic自定义函数:

Function f(x As Integer) As Single

  f=Abs(x)

End Function

该函数返回值的数据类型是(    )

A . 整数型 B . 日期型 C . 逻辑型 D . 单精度实数型
下列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
有如下VB程序段:

s="67.153.47.211"

n = Len(s)

ch=”":cmax= ""

For i= 1 Ton   

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

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

         ch=ch+c

     Else

         If ch> cmax Then cmax = ch

         ch=""

     End If

Next i

Text1.Text = cmax

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

A . 74 B . 76 C . 211 D . 351
如果一个正整数从左到右读与从右到左读是一样的,就称它为回文式数(简称回数),如图321。“回数猜想”的主要思想是,对任意正整数,若它不是回数,则按下列算法即可获得一个回数:

⑴把该整数的数字顺序颠倒,求得该数的逆序数;

⑵将该整数和其对应的逆序数相加;

⑶若相加结果不是回数,则将结果作为新的整数,返回步骤⑴。

小林按照上述算法,设计了验证回数猜想的VB程序(猜想次数不超过10次),程序功能如下:在文本框Text1中输入一个正整数,单击“验证”按钮(Command1),获取文本框Text1中的数,当该数不是回数时,采用回数猜想的方法进行验证,并在列表框List1中输出每次验证的过程,若验证成功或验证次数超过10次,则停止验证,最后在列表框List1中输出验证结果。程序运行效果如图所示。

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

Private Sub Command1_Click()

   Dim t As String, a As Long, b As Long

   Dim count As Integer       ‘count用于存储回数猜想的验证次数

   t = Text1.Text

   count = 1

   Do While Check(t) = False And count <= 10

     a = Val(t)

           ①       

     c = a + b

     List1.AddItem Str(a) & " +" & Str(b) & " =" & Str(c)

     count = count + 1

     t = c

   Loop

   If Check(t) Then

      List1.AddItem  "验证成功!"

   Else

      List1.AddItem  "10次内未验证成功!"

   End If

End Sub

' 自定义函数Turn

Function Turn(x As String) As Long

   Dim s As String, i As Integer

   s = ""

   For i = Len(x) To 1 Step -1

      s = s & Mid(x, i, 1)

   Next i

   Turn =      ②        

End Function

‘自定义函数Check,检查x是否为回文数

Function Check(x As String) As Boolean

   Dim i As Integer

   Check = True

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

      If Mid(x, i, 1) <>       ③        Then Check = False mid(x,len(x)+1-i,1)

   Next i

End Function

  1. (1) 程序代码中,自定义函数Turn(x)的功能是
  2. (2) 请在划线处填入合适代码。

     ② ③ 

有10个数据34,22,101,8,14,88,24,17,54,7依次存放在列表list中,有如下Python程序:

list= [34,22,101,8,14,88,24,17,54,7]

num=list[0] for i in range(1, 10):

    if list[i]<num:

        num=list[i]

print(num)

当程序运行结束时,输出的值是(     )

A . 101 B . 7 C . 8 D . 88
有如下VB程序:

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

n=3

List1.Clear

For i=1 To n

    k=“”

    For j=1 To i

        k=k+“*”

    Next j

    List1.AddItem k

Next i

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

A . B . C . D .
星星设计了10*10的矩阵,如下图所示:

实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为(  )
Dim a(1 To 100) As Sting

For i= 1 To 10

    For j=1 To 10

        If i=j Or i Mod 10=0 Or i Mod 10= 1

        Then

            a(  ①  )="●"

        Else

            a(  ①  )="○"

        EndIf

    Next j

Next i

For i= 1 To 100

    s=s+ a(i)

    If   ②   Then

        List1.Addltem s

    End If

Next i

A . ①(j-1)*10+i                     ②i mod 10=1 B . ①(i-1)*10+ j                    ②i mod 10=1 C . ①(j-1)*10+ i                   ②i mod 10=0 D . ①(i- 1)*10+j                    ②i mod 10=0
下列有关于列表说法正确的是(     )
A . 一个列表被创建后,其大小不能改变 B . 一个列表被创建后,可以直接修改列表中的元素值 C . 一个列表中只能存储同一种类型的数据 D . 列表的索引下标从1开始
检测输入的四位整数abcd是否满足下述关系:(ab+cd)×(ab+cd)=abcd。实现上述功能的Python程序代码如下,请在程序划线处填入合适的代码。

k=int(input("输入一个四位数:"))

x=

y=k%100

if :

    print("符合")

else:

    print("不符合")

VB中的六种关系运算符是>,<,=,
S=0

FOR A=5 TO 1

    S=S+A

NEXT A

PRINT S  

该程序的运行结果是(     )

A . 0 B . 15 C . 6 D . 无结果
查找峰值问题:随机生成n个正整数(假设n= 20,取值范围为0~ 100),存储于数组a中,将这些数按顺序映射在坐标轴上,相邻的数用直线相连,构建了类似于“心电图”的折线:

编写VB程序统计所有的峰值(peak)、峰值数量(count)和最高点(high)。

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

  1. (1) 代码“List. AddItem Str( count)”中的AddItem是 (单选,填字母:A .对象名/B .属性/C .事件/D .方法);
  2. (2) 加框处的代码有错误,请改正。

    Const n = 20

    Dim a(1 To n) As Integer

    Private Sub Form_ Load( )

    '随机生成n个数,存储于数组a中,并输出在List1中。代码略。

    End Sub

    Private Sub Command1_ Click( )

      Dim count As Integer

      Dim high As Integer

      Dim peak As Integer

      Dim i As Integer, j As Integer

      count= 0

      if a(1)> a(2) then

        count = 1

        high=-1

        i=1

        Do While i< n-1

          j=i+1

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

            Do While a(j)>a(j-1)

              j=j+1

            Loop

            count =count+1

                  '①

            List2. AddItem“第”+Str(count) +“个峰值:”+ Str( peak)

            If peak > high Then high = peak

                 '②

          Else

            i =i+1

          End If

        Loop

        List2. AddItem“共有:”+Str(count) +“个峰值”

        List2. AddItem“最高点是:”+Str( high)

      End if

    End Sub