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

【加试题】小李编写一个统计学生选考科目的VB程序,算法的基本思想是:检查每位学生选课组合的编码是否有效,对有效选择结果进行科目统计,根据各科次占有效人数的百分率求出各科排名。程序运行时,单击“显示”按钮Commmad1,学生选课数据显示在列表框list1中,各科编号及对应科目名称显示列表框list2中,单击“统计”按钮Commmad2,选课结果按各科百分率由高到低显示在列表框list3中,程序运行结果如图所示。

_x0000_i1043

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

  1. (1) 学生选课的编码数据存储在数据表中,其字段名为
  2. (2) 请在划线处填入合适的代码。

    Dim ach(1 To 500) As String     '存储各学生选课编码

    Dim bno(1 To 10) As Integer     '存储各科目编号

    Dim bname(1 To 10) As String    '存储各科目名称

    Dim bnum(1 To 10) As Integer    '存储各科目被选次数

    Dim bmc(1 To 10) As Integer     '存储各科目被选的名次

    Dim n As Integer, num As Integer

    Private Sub Command1_Click()

    Dim i As Integer, km As String

    km = "物理化学生物政治历史地理技术"

    Dim cn As New ADODB.Connection, rs As New ADODB.Recordset, sql As String

    cn.Open "provider=Microsoft.Jet.oledb.4.0;Data Source=" + App.Path + "\students.mdb"

    rs.Open "select * from choose", cn

    Do While Not rs.EOF

    n = n + 1 : ach(n) = rs.Fields("subject") : rs.MoveNext

    Loop

    rs.Close

    cn.Close

    Set rs = Nothing

    Set cn = Nothing

    For i = 1 To 7

    bno(i) = i

    bname(i) = Mid(km, (i - 1) * 2 + 1, 2)

       List2.AddItem Str(bno(i)) + "---" + bname(i)

    Next i

    End Sub

    Private Sub Command2_Click()

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

    Dim c As String, per As Integer

    For i = 1 To n

    If check(ach(i)) = True Then

    For j = 1 To 3

    c = Mid(ach(i), j, 1)

    bnum(Val(c)) =      

      Next j

    num = num + 1

    End If

    Next i

    i = 1

    Do While i <= 7'该循环得到各学科被选人数的名次

    bmc(i) = 1

    For j = 1 To 7

    If bnum(j) >bnum(i) Then      

    Next j

    i = i + 1

    Loop

    For i = 1 To 7

    For j = 1 To 7

    If        Then

    per = Int(bnum(j) * 100 / num * 100) / 100

    List3.AddItem Str(bno(j)) + "---" + bname(j) + "---" + Str(per) + "%"

    End If

    Next j

    Next i

    End Sub

    Function check(s As String) As Boolean

       '代码略! 若学生选科代码有效,函数返回True,否则返回False

    End Function

表达式6.8*9 Mod 28\8的值是(  )。
A . 0 B . 1 C . 2 D . 3
下列各项是常量的有(  )
A . ABC B . “ABC” C . 5+A D . 1/2
RGB色彩模式是工业界的一种颜色标准是通过对红(R)绿(G)蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各种各样的颜色RCB颜色分量的值通常采用十进制数表示,而 Flash软件中颜色值采用十六进制数表示。比如RGB(100,255,10)等价于十六进制颜色码#64FA,每个RGB颜色分量对应两位十六进制数。小李编写了一个十六进制颜色码转RGB颜色值的转换程序,程序功能如下:程序运行时在文本框Text1中输入一个十六进制颜色码,输入格式为“#”后面跟6位十六进数(其中字母均为大写)。单击“转换按钮Command1在标签 Label1输出对应的RGB颜色值。程序运行界面如图所示。

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

  1. (1) 程序运行时,在文本框Text1输入“#C50913”,则标签Label1上显示的内容是
  2. (2) 请在划线处填入合适的代码。

    Private Sub Command1 _Click ( )

    Dim i As Integer, y As Integer

    Dim s As String, ans As string

    Dim a As String

    s = Text1. Text

    a = Mid(s, i, 1)

    y = 0

    For i = 1 To 6

        a = Mid (s, i , 1)

            ①   

        If i Mod 2 = 1 Then

            y = m

        Else

               ② 

            ans = ans + str(y)

            If   ③   Then ans = ans + ","

            y = 0

        End If

    Next i

    Label2. Caption = “RGB (“+ ans +”)”

    End sub

    Function HtoD(x As String) As Integer    ‘将一位十六进制数转换为十进制数

    code = "0123456789ABCDEF”

    j = 0

    Do While j < = 16

        j = j +1

        If x = Mid(code, j, 1) Then Exit Do

    Loop

            ④        

    End Function

     ② ③ ④ 

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

Key = Int(Rnd * 30) * 2 + 41

s = 0: i = 1: j = 10

Do While i <= j

m = (i + j) \ 2

If Key > a(m) Then

i = m + 1: s = 3 * s + 2

Else

j = m - 1: s = 3 * s

End If

Loop

Text1.Text = s

数组a(1)到a(10)的值依次为“2,13,24,31,35,44,45,47,61,101”,执行该程序段后,s的值不可能为(  )

A . 8 B . 18 C . 60 D . 78
某考试的多选题有“A、B、C、D、E”5个答案选项。

例如,标准答案为“ABE”,则对应得分表如下所示。

学生答案

ABE

AB

AE

BE

A

B

E

AC

......

字符串

11001

11000

10001

01001

10000

01000

00001

10100

......

十进制数(x)

25

24

17

9

16

8

1

20

......

ans(x)

2

1

1

1

1

1

1

0

0

小温依据上述描述设计了“多选题阅卷”的VB程序,实现如下功能:在文本框Text1中输入标准答案(大写字母),先单击“初始化”按钮Command1,在数组ans中生成所有答案组合对应的分值,然后单击“阅卷”按钮Command2,从数据库中读取学生的答案并进行阅卷,在列表框List1中显示得分结果。程序运行界面如图所示。

  1. (1) 若标准答案为“ACD”,则数组元素ans (18) 的值为
  2. (2) 请在划线处填入合适的代码。

    Dim ans(0 To 31) As Integer

    Private Sub Command1_Click()

        Dim b(0 To 4) As Integer

       Dim s As String, c As String, sum As Integer, k As Integer

    '初始化数组ans和数组b,各元素的初始值均为0。代码略

    s = Text1.Text:k = Len(s)

       For i = 1 To k

            c = Mid(s, i, 1)

            b(Asc(c) - 65) = 2 ^ (69 - Asc(c))

        Next i

        For i = 0 To 4

            If b(i) <> 0 Then

                ans(b(i)) = 1

                sum =     ①   

            End If

        Next i

       ans(sum) = 2

       '当标准答案含3个及以上选项时,学生答案选其中2个选项可得1分

        i = 0

        Do While k >= 3 And i <= 4

            For j = i + 1 To 4

               If b(i) * b(j) <> 0 Then ans(b(i) + b(j)) = 1

            Next j

            i = i + 1

        Loop

        i = 0

        Do While k >= 4 And i <= 4

            For j = i + 1 To 4

                If b(i) * b(j) = 0 Or k = 5 Then      ②     

            Next j

            i = i + 1

       Loop

       '当标准答案含5个选项时,学生答案选其中4个选项可得1分。代码略

     End Sub

    Private Sub Command2_Click()

        Dim xh(1 To 1000) As String, answer(1 To 1000) As String

      '从数据库中读取学生学号和答案的数据分别存储在数组xh和answer中

    '记录总数存储在变量n中,代码略

      List1.Clear

        For i = 1 To n

            List1.AddItem xh(i) + " " + answer(i) + " " + Str(ans(f(answer(i))))

        Next i

    End Sub

    Function f(s As String) As Integer

        Dim i As Integer, x As Integer

       x = 0

        For i = 1 To Len(s)

          x =     ③     

        Next i

        f = x

    End Function

     ② ③ 

   运算符是进行的标识符号,它标明对操作数所进行的运算。
从离地500米的空中自由落下一个小球,求从开始落下的时刻起,小球在最后1秒内的位移(重力加速度g以9.8米/秒2计)。程序如下,回答以下问题。

import math

h = 500

g = 9.8

t = math sqrt(2*h/g)

hx = g*(t-1)*(-1)/2

hh = h-hx

print(“小球最后1秒下落的位移是:”,hh,“m”)

  1. (1) 该程序代码中使用了库,库的名称是_____。
    A . Limport B . math C . sqrt D . print
  2. (2) 该程序代码中使用了常量,它的名称是_____。
    A . h B . t C . 500 D . hh
  3. (3) 该程序代码中使用了变量hh,它的数据类型是_____。
    A . int B . float C . 列表 D . 字符串
  4. (4) 该程序中print(“小球最后1秒下客的位移是:”,hh,“m”),其中“m”的数据类型是       
    A . int B . float C . 列表 D . 字符串
  5. (5) 该程序使用了物理公式计算空中自由落下个小球的位移,采用的算法处_____。
    A . 解析算法 B . 穷举算法 C . 递归法 D . 选择排序
要使输出的数据为十进制整数,则可以在print( )函数中添加哪种格式?(   )
A . %d B . %.f C . %.1f D . %.2f
某算法的部分流程图如图所示,执行这部分流程后,变量s的值是(    )

A . 26 B . 30 C . 14 D . 10
小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前的数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。

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

Dim a(1 To 8)As Integer

Dim n As Integer

Private Sub Form_Load( )

  a(1)=30:a(2)=47:a(3)=30:a(4)=72

  a(5)=70:a(6)=23:a(7)=99:a(8)=24

  n=8

  For i=1 To 8

      List1.AddItem a(i)

  Next i

End Sub

Private Sub Command1_Click( )

  Dim i,j,k,pos As Integer

  Dims As String

  s=Text1.Text

  pos=Val(Text1.Text)

  For i=1 To n-1

      For j=n

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

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

          ‘如果pos位置的数据参与交换,则更新pos值,记录pos变化位置

            If pos=j Then

                pos=j-1

                s=s+"→"+Str(pos)

            

                pos=j

                s=s+"→"+Str(pos)

            End If

          End If

      Next j

  Next i

  Label1.Caption=“位置变化情况:"+s

  For i=1 To n

      List2.AddItem Str(a(i))

  Next i

End Sub

  1. (1) 程序中语句“List2.AddItem Str(a(i))”用于将数组元素在List2中显示出来。类似的,可以使用“List2.Removeltem2”删除List2中的第2项(项号从0开始),则Removeltem是(单选,填字母:A .事件名/B .属性名/C .方法名/D .对象名)。
  2. (2) 请将程序代码中的画线处语句补充完整。
  3. (3) 程序代码中加框处有误,请改正。
  4. (4) 程序代码“pos=j-1”表明该元素是和它的一项发生了位置交换(单选,填字母:A .前/B .后/C .没有)。
以下给出的式子中,正确的赋值表达式是(   )
A . 6 ← Q B . K + 1 ← x C . A ← A * A D . -H ← G /10
在Python程序中,设已定义函数f,它有三个整型传值参数。设a,b,c为整型变量,则下列能调用该函数的正确语句是(    )
A . f B . f(a+b,b+c) C . f(a+b,b+e,c+a) D . fa+b,b+c,c+a
VB表达式 6 + Int(4.1) Mod 24 \ 2 * 3的值是(    )
A . 3 B . 6 C . 10 D . 18
某字符串加密算法,规则如下:

1)根据字符串长度构建一个最小的n*n矩阵,将字符串中每个字符从左到右,自上而下顺序填入矩阵,不足部分用字符“*”代替;

2)将矩阵转置(行列对换),然后将奇数行字母内码加上1,偶数行字母内码减1,字符为a、z或A、Z时做循环处理。比如,字符a减1为z;字符Z加1为A。

3)按从左到右,从上而下依次取出字符,形成新的字符串。如图a为字符串“Go to the zoo.”的加密过程。编写VB程序,在文本框Text1中输入字符串,点击“加密”按钮,在文本框Text2中输出加密后的字符串。程序运行结果如图b所示。

a

b

  1. (1) 若在文本框Text1中输入3个字母“Far”,执行加密程序后,输出结果为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码

    Dim a(1 To 100) As String, b(1 To 100) As String, n As Integer

    Private Sub Command1_Click()

        Dim s1 As String, s2 As String,i As Integer, j As Integer, m As Single

        s1 = Text1.Text

        m = Sqr(Len(s1))

        If m > Int(m) Then n = Int(m) + 1 Else n = m

        For i = 1 To n * n

            If i <= Len(s1) Then  a(i) = Mid(s1, i, 1)   Else  a(i) = "*"

        Next i

        For i = 1 To n

            For j = 1 To n

                b((i - 1) * n + j) =     ‘将矩阵转置

                b((i - 1) * n + j) = jm(i, j)   ‘内码变换

            Next j

        Next i

        s2 = ""

        For i = 1 To n * n

            s2 = s2 & b(i)

        Next i

        Text2.Text = s2

    End Sub

    Function jm(x As Integer, y As Integer) As String

        Dim s As String

        s = b((x - 1) * n + y)

        If s <= "Z" And s >= "A" Or s <= "z" And s >= "a" Then

            If x Mod 2 <> 0 Then

                If s <> "Z" And s <> "z" Then

                    s = Chr(Asc(s) + 1)

                Else

                    s = Chr(Asc(s) - 25)

                End If

            Else

                If s <> "a" And s <> "A" Then

                    s = Chr(Asc(s) - 1)

                Else

                    s =

                End If

            End If

        End If

        

    End Function

浙江省选考采用7选3选科模式,即从“物化生政史地技”7门科目中任选3门作为选考科目。小周想用Python输出所有的选科组合,他用7位二进制数模拟所有选科组合(1-选,0-不选),再从中筛选出有效组合,例如110000是一种有效组合,1011100 是一种无效组合。实现该功能的Python程序如下,请完成程序填空:

km =”物化生政史地技”

combs =[]

for i in range(128) :

    t=

    c=0

    s=“”

    for j in range(7):

        c=

        if t % 2=1:

             s += km[j]

        t =t//2

    if c=3:

        combs.append(s)

print (combs)

下列选项中变量和数据结构不正确的是(    )
A . _B4 B . list C . 创建字典: m={“李华”, “高三”, “98”} D . “hello  ”*3的值为“hello  hello  hello  ”
在文本框Text1中输入十进制数x,将其转换为十六进制数后在标签Label1上输出。VB程序段如下:

Dim x As Integer Dim s As String

Dim st As String

Dim t As Integer

st=“0123456789ABCDEF”

x = Val(Text1.Text)

Do While x > 0

   

Loop

Label1.Caption=s

方框中的代码由以下三部分组成:

① x = x \ 16 ② s = Mid(st,t+1,1)+ s  ③ t = x Mod 16

下列选项中代码顺序正确的是(     )

A . ③②① B . ①③② C . ②③① D . ②①③
有如下 Python 程序段:

s=0

for k in range(3,1,-1):

    if k <= 1 :

       x = 1

       if k <= 2 :

           x = 2

       if k <= 3 :

           x = 3

       s = s + x

print(s)

执行该程序段后,输出显示的内容是(     )

A . 9 B . 8 C . 6 D . 3
哥德巴赫猜想:任意一个大于等于4的偶数,都可以用两个素数之和表示。如:4=2+2,6=3+3,8=3+5,10=5+5,12=5+7,98=17+79。

编写一个验证哥德巴赫猜想的VB程序:程序运行时,在文本框Text1中输入一个大于等于4的偶数,单击“验证”按钮Command1后,如果哥德巴赫猜想验证成功,则在文本框Text2中显示“Yes”,并在列表框List1中显示用两个素数表示该偶数的等式,否则显示“No”。程序运行结果如图所示。

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

′函数pp(x)的功能是判断整数x是否为素数,若是素数则返回True,否则返回False

Function pp(x As Integer) As Boolean

    Dim j As Integer

    pp = True

    j = 2

    Do While j <= Int(Sqr(x)) And pp=True

        If x Mod j = 0 Then pp = False Else

             '①

    Loop

End Function

Private Sub Command1_Click()

    Dim n As Integer, p As Integer, q As Integer, pd As Boolean

    n = Val(Text1.Text)

    p = 1              

    pd = False

    Do While Not pd And p < n

        p = p + 1

                    '②

        If pp(p) And pp(q) Then

            Text2.Text = “Yes”

            pd = True

            List1.AddItem Str(n) + “=” + Str(p) + “+” + Str(q)

        End If

    Loop

    If pd = False Then Text2.Text = “No”

End Sub

程序中加框①处应改正为

加框②处应改正为

最近更新