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

某算法的部分流程图如图所示,执行这部分流程后,输出s,n的值分别是(  )

A . 105,9 B . 15,9 C . 105,7 D . 15,7
对于实数x,保留2位小数且第3位四舍五入的VB表达式是(  )
A . Int(x*100)/100 B . Int(x*1000)/100 C . Int(x*100+0.5)/100 D . (x*1000+5)\100
由n行数字组成的数字三角形如图所示。设计一个算法,对于由n行数字组成的数字三角形(数字范围[1,50],计算从三角形的顶至底的路径经过的数字和的最大值,每一步可以从当前点走到左下方的点也可以走到右下方的点。

寻求路径最大值的算法设计如下:

按三角形的行划分,若有n行,则有n-1个步骤

①从底层开始,本身数即为最大值

②倒数第二层的计算取决于底层的数据:

12+6=18,13+14=27,24+15=39,24+8=32;

③倒数第三层的计算取决于底二层的数据:

27+12=39,39+7=46,39+26=65;

④倒数第四层的计算取决于底三层的数据:

46+11=57,65+8=73;

④最后的路径:13—8—26—15—24其和为86。

根据上述算法描述,设计程序界面如下图所示,点击“生成金字塔”按钮,在列表框中生成数字金字塔,点击“寻求路径最大值”按钮,在文本框text1中输出最大值。

依据上述描述设计如下VB程序:

Const n = 5

Dim sx As String

Dim i, j, k, a(1 To 100) As Integer Private Sub Command1_Click() List1.Clear

For i = 1 To n For j = 1 To i

    ①  

sx = sx + Str(a((i - 1) * n + j)) Next j

For k = n To i Step -1 sx = " " + sx

Next k List1.AddItem sx sx = ""

Next i End Sub

Private Sub Command2_Click() For i = n To 1 Step -1

For j = 2 To i

If    ②   Then

a((i - 2) * n + j - 1) = a((i - 1) * n + j - 1) + a((i - 2) * n + j - 1)

Else

a((i - 2) * n + j - 1) = a((i - 1) * n + j) + a((i - 2) * n + j - 1)

End If Next j

Next i

    ③  

End Sub

请回答下列问题:

  1. (1) 若数字金字塔如图 ,输出路径最大值是
  2. (2) 请在①②③划线处填入合适的代码。

     ② ③ 

在VB中,若a是一个整型数组,a(1)、……、a(4)分别为130、45、278、59,则执行下列程序段后,数组a中各元素的值为(  )

For i= 1 To 3 

  For j=i+1 To 4

    If a(i) >a(j) Then

      a(0)=a(i)

      a(i)=a(j)

      a(j)=a(0)

    End If

  Next j

Next i

A . 45  59  130  278 B . 130  278  45  59 C . 278  130  59  45 D . 59  45  278  130
小明基于冒泡排序思想设计了一个改进的排序算法。该算法先用冒泡法将数组a中奇数位置的元素、偶数位置的元素分别进行排序,然后再进行后续处理。算法的VB程序段如下,但加框处代码有错,请改正。

'待排序数据存储在数组a中(a(1)~a(n)),要求升序排列

For i=1To(n-1)\2

  For j=1To n-i*2

    If a  Then         '①

      t= a(j):a(j)= a(j+ 2):a(j+2)= t

    End If

  Next j

Next i

For i = 1 To n\2

    j = 2 * i - 1

    If a(j)> a(j+ 1)Then t = a(j):a(j)= a(j+1):a(j+1)= t

Next i

For i=  Step 2         '②

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

    Do While t <a(j)

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

    Loop

    a(j+ 1)= t

Next i

若参与运算的数范围大大超出了标准数据类型能表示的范围的运算,就要用到高精度算法。小明编写了如下的高精度乘法程序,文本框Text 1和Text 2中分别输入两个乘数,单击命令按钮Command 1,在文本框Text 3中输出两个数的乘积, 运行界面如图所示。

  1. (1) 请在划线处填入合适的代码。

    Private SubCommand1_Click()

    Dim a( 1 To 100) As Integer, b( 1 To 100) As Integer, c( 1 To 1000) As Integer

    Dim t As Integer, k As Integer, i As Integer, jAs Integer

    Dims1As String, s2As String, output As String

    s 1=Text 1.Text:s2=Text2.Text:Text3.Text=“”

    For i=1 To Len(s1)

        a(i)=  ①     ‘将文本框Text 1中的自然数按从低位到高位的顺序依次存放在数组a(1),a(2) ……a(len(s1))中

    Next i

    ‘将文本框Text2中的自然数按从低位到高位的顺序依次存放在数组b(1),b(2) …… b(len(s2))中,代码略

        len c=Len(s1) +Len(s2) -1

        For i=1 To Len(s1)

            For j=1 To Len(s2)

              c(i+j-1)=c(i+j-1)+a(i)*b(j)

           c(i+j)=  ② 

           c(i+j-1) =c(i+j-1) Mod 10

        Next j

      Next i

      If c(len c+1) > 0 Then   ③ 

      Do While c(len c) =0Andlenc> 1 (2)

           len c=len c-1

      Loop

      output=“”

      For i=len c To 1 Step-1

          output=output+Mid(Str(c(i)),2,1)

      Next i

      Text 3.Text=output

    End Sub

  2. (2) 若将方框内代码“And len c>1”删除,在文本框Text 1中输入122134,在文本框Text 2中输入0,单击命令按钮Command 1,则程序提示
其8位日期加密授权码生成方法描述如下:

①授权码由9位字符组成,前三位为日期的密文,最后1位为验证码;

②日期的最后1位数字k(若k的值为0,令k=10),加密成26个大字英语字母表该位置对应的字母。

③将26个大写英文字母向左移k(日期的最后1位数字)个位置,并将移出的k个字母依次连接到最后。例如当k=3时,形成如下表所示新的字母排列顺序:

位置

1

2

3

4

……

23

24

25

26

字母

D

E

F

G

……

Z

A

B

C

④日期的第1个数字至第7个数字的加密方法是:计算第i个位置上的数字与第i+1个位置的数字及位置i三者相加的和,在新的字母表中取出该数字和对应的字母,作为第i个位置上数字加密字符。

⑤计算日期的各个位置上数字之和sum,若和sum的值大于26,在新的英文字表中,sum Mod 26对应字母转换成小写字母,作为验证码,否则验证码为新的英文字母表中对应字母。

  1. (1) 根据上述加密算法,若输日期为“20000101”,则生成的注册码为
  2. (2) 小张根据上述加密算法,设计了一个对应的解密程序,其VB代码如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

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

    Dim mw As String, sum As Integer, t As Integer, t1 As Integer

    strl="0123456789"

    s=Text1.Text

       ① 

    t=k: sum=t

    s1=Mid(strl, t+1, 1)

    For i=7 To 1 Step-1

    t1=Asc(Mid(s, i, 1))-64

    j=    ② 

    s1=Mid(strl1, t+1, 1)+s1

    sum=sum+t

    Next i

    mw=jm(k)

    If sum>26 Then

    sum=sum Mod 26

    ch=Chr(Asc(Mid(mw, sun, 1))+32)

    Else

    ch=Mid(mw, sum, 1)

    End If

    If ch=Mid(s, 9, 1) Then Text2.Text=s1

    Else Text2.Text="该系列号未能通过验证!"

    End Sub

    Function jm(t As Integer) As String

    Dim i As Integer, p As Integer

    If t=0 Then t=10

    For i=1 To 26

    p=(t+i-1) Mod 26

       ③ 

    Next i

    End Function

     ② ③ 

下列VB表达式的值为6的是(  )
A . 36 Mod 30 \ 3 B . Val("3+3") C . abs(Int(-5.34))+1 D . mid(“2016remember”,4,1)
以下流程图中x为整型变量。若输入9,算法执行结果是(     )。

A . PM B . Error C . AM D . WRONG 
小李同学基于选择排序算法编写了如下程序,Text1中输入一个全部为数字的字符串,现重新排列该字符串各个位置上的数字,使其可以组成的数最小(若零在开头,则省略不写)。

m = Text1.Text: n = Len(m)

For i = 1 To n - 1

  k = i

  For j = i + 1 To n

    If             Then k = j

  Next j

  If i <> k Then

    m = Mid(m, 1, i - 1) + Mid(m, k, 1) +             + Mid(m, i, 1) +            

  End If

Next i

Text2.Text = Val(m)

上述程序中划线处应填入的语句为(    )

A . Mid(m, j, 1) > Mid(m, k, 1);Mid(m, i + 1, k - i - 1);Mid(m, k + 1) B . Mid(m, k, 1) > Mid(m, j, 1);Mid(m, i + 1, k - i + 1);Mid(m, k + 1) C . Mid(m, j, 1) < Mid(m, k, 1);Mid(m, i + 1, k - i - 1);Mid(m, k + 1) D . Mid(m, j, 1) < Mid(m, k, 1);Mid(m, i + 1, k - i + 1);Mid(m, k + 1, n - k)
有如下VB 程序段:

s = "20210606"

c1 = 6

n = 0

For i = 1 To Len(s)

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

If c < c1 Then

  n = n + 1: c1 = c

Next i

运行该程序段后,n 的值为(    )

A . 0 B . 2 C . 6 D . 8
在VB中,若x=1, y=2, z=3,则下列逻辑表达式的值为True(真)的是(   )
A . Not y>z B . Not y+z>x C . y>z And z>x D . x>y Or y>z
下列选项中,不能作为python程序变量名的是(     )
A . abc B . abc123 C . 123abc D . abc__123
程序运行时分别在文本框Text1与Text2中输入12与20,点击按钮Command1后,文本框Text3中显示的内容是(    )

Private Sub Command1_Click()

  Dim i As Integer, j As Integer

  i = Val (Text1. Text)

  j = Val (Text2.Text)

  Text3. Text = Str(i * j / f(i,j))

End Sub

Function f(a As Integer, b As Integer) As Integer

    Dim k As Integer

    k=a Mod b

    If k=0 Then

        f=b

    Else

        f=f(b,k)

  End If

End Function

A . 4 B . 12 C . 20 D . 60
下列VB表达式的值最小的是(    )
A . Int(Rnd*3)+3 B . 46Mod21\2 C . Abs(Int(-7.5)) D . Val(*9") Mod 10
已知list=[“a”,”b”,1,2],则list[-1]的值为(   )
A . a B . b C . -1 D . 2
Python程序中以下变量名正确的是(   )
A . a* B . age C . #b D . print
有如下Python程序段:

for i in range(50 , 1 , -1 ):

    print(i)

则输出的最后一个元素值是(     )

A . 2 B . -49 C . 1 D . 49
表达式'Year' in 'happy New year'的值为(    )
A . True B . false C . 1 D . False
表达式'5'>'12'的值为(    )
A . True B . false C . true D . False