4.1.2 Python的数据类型 知识点题库

在Visual Basic中,下列能作为变量名的是(   )  
A . 3_name B . name C . if D . a&b
下面变量名命名正确的是(   )
A . 6Sf B . int C . b_4 D . b-4
在VB程序中用变量存储某个人的身份证号码,以下数据类型合适的是(   )
A .   Integer B . String C . Long D . Single
编写VB程序,实现如下功能:在文本框Text1中输入某一年份,单击“天干地支与生肖”按钮Command1,在列表框List1中输出该年份开始的12个年份及对应的“天干地支”与“生肖”,运行界面如图所示,程序代码如下。

_x0000_i1042

  1. (1) 代码“Private Sub Command1_Click()”中的Click是         。(单选,填字母)
    A . 对象名 B . 属性名 C . 事件名
  2. (2) 为实现上述功能,请在划线处填入合适的代码。

    Private Sub Command1_Click()

    Dim a As Integer, b As Integer

    Dim i As Integer, n As Integer

    Dim c1 As String, s1 As String

    Dim c2 As String, s2 As String

    Dim c3 As String, s3 As String

    List1.Clear

    s1 = "甲乙丙丁戊己庚辛壬癸"

    s2 = "子丑寅卯辰巳午未申酉戌亥"

    s3 = "鼠牛虎兔龙蛇马羊猴鸡狗猪"

    n = Val(Text1.Text)

    For i = n To

       a = (i + 6) Mod 10

       b = (i + 8) Mod 12

       c1 = Mid(s1, a + 1, 1)

       c2 = Mid(s2, b + 1, 1)

       c3 = Mid(s3, b + 1, 1)

       List1.AddItem + "年" + c1 + c2 + " " + c3

    Next i

    End Sub

  3. (3) 由上述算法可知,2024年对应的“天干地支”为
如果需要用一个变量来存储数据5.7,则此变量定义的数据类型最好为(   )
A . integer B . long C . single D . double
双精度型数据用浮点形式表示时,底数用表示。
求最长升序子序列的长度。一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是升序的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些升序的子序列(ai1, ai2, ..., aiK),这里 1 <= i1 < i2 < ...<iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些升序子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8)。小王设计VB程序用于求最长升序子序列的长度,在文本框Text1中输入n个各不相同的数据(各数据之间以逗号隔开),单击“求解”按钮Command1后在标签Label1中输出最长升序子序列的长度,运行界面如图所示。

具体算法描述如下:

⑴将文本框Text1中的n个数据依次读取到数组a中;

⑵构造一个数组b(j),j表示升序子序列的长度,b(j)的值表示所有j长度升序序列中最小的末尾元素值。例:序列(2,6,4,5),长度为2的子序列有(2,6)、(2,4)、(2,5)、(4,5),则b(2)=4;

⑶从第1个元素开始,依次处理到第i(1≤i≤n)个元素为止,b数组所能达到的最大下标值maxlen,处理过程分两种情况:

A.a(i)>b(maxlen),则最长升序子序列的长度增加;

B.a(i)<b(maxlen),则在b数组中逆序查找到第一个b(j)>a(i)(maxlen-1≤j≤1),更新数组b中升序子序列长度为j+1时所存储的元素值。

以图中数据为例:

⑷数组b的最大下标值即为最长升序子序列的长度。实现上述过程的VB程序如下,请回答下列问题:

  1. (1) 若在文本框Text1中输入的序列为(4,7,9,8,6),则数组元素 b(2)的值为
  2. (2) 请在划线处填入合适的代码

    Private Sub Command1_Click()

    Dim a(1 To 100) As Integer '存储原序列

    Dim b(1 To 100) As Integer '存储各长度序列的最小末尾元素Dim s As String

    Dim n As Integer, i As Integer, j As Integer, maxlen As Integer s = Text1.Text

    n = 1: j = 1

    For i = 1 To Len(s) c = Mid(s, i, 1)

    If c = "," Then

    a(n) = Mid(s, j, i - j ) n = n + 1

    j = i + 1 End If

    Next i

     maxlen = 1: b(1) = a(1) For i = 2 To n

    If a(i) > b(maxlen) Then

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

    Else

    j = maxlen - 1: flag = True Do While j >= 1 And flag

    If a(i) > b(j) Then

    flag = False End If

    j = j - 1 Loop

    IfThen b(1) = a(i)

    End If Next i

    Label1.Caption = "最长升序子序列的长度为:" + Str(maxlen)

    End Sub

有如下VB程序段:

a(1) = 1: a(2) = 2

b(1) = 1: b(2) = 2

For i = 3 To 10

  a(i) = a(i-1) + a(i-2)

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

Next i

执行该程序段后,数组元素b(5)的值为(  )

A . 11 B . 15 C . 16 D . 18
有如下VB程序段:

a(1) = 1

 For i = 2 To 6

 Randomize

 a(i) = a(i - 1) + Int(Rnd * 5 + 1)

 If a(i) Mod 2 = 1 Then

   a(i) = a(i) \ 2 + 1

 Else

   a(i) = a(i) / 2

 End If

 Next i

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

A . 1 3 4 6 7 9 B . 1 2 0 3 5 6 C . 1 2 3 4 5 4 D . 1 3 4 5 1 1
“旋转数组”过程是指将数组中的元素向右移动k个位置,其中k是非负数。以数组a向右移动3个位置为例,其移动过程有如下两种方法:

原始数据:

a(1)

a(2)

a(3)

a(4)

1

2

3

4

方法一:

①向右旋转1步:

a(1)

a(2)

a(3)

a(4)

4

1

2

3

②向右旋转2步:

a(1)

a(2)

a(3)

a(4)

3

4

1

2

③向右旋转3步:

a(1)

a(2)

a(3)

a(4)

2

3

4

1

方法二:

①将a(1)值放至旋转3个位置后位置a(4):

a(1)

a(2)

a(3)

a(4)

1

2

3

1

②将原a(4)值放至旋转3个位置后位置a(3):

a(1)

a(2)

a(3)

a(4)

1

2

4

1

③将原a(3)值放至旋转3个位置后位置a(2):

a(1)

a(2)

a(3)

a(4)

1

3

4

1

④将原a(2)值放至旋转3个位置后位置a(1):

a(1)

a(2)

a(3)

a(4)

2

3

4

1

有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:

  1. (1) 当文本框Text3中输入内容修改为3时,执行该程序后,a(3)的值为
  2. (2) 请在划线处填入合适的代码。

    Dim a(20) As Integer

    Const n = 20

    Private Sub Form_Load()

    '随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略

    End Sub

    Private Sub Command1_Click()

     Dim i As Integer, p As Integer, k As Integer, cnt As Integer, c As Integer, t As Integer

     p = Val(Text2.Text)

     k = Val(Text3.Text)

    i = 1: start = 1:c = a(i): cnt = 1

     Do While cnt<= p      '方法二

    i =    ①  

     t = a(i)

     a(i) = c

     If     ②    Then

     start = start + 1

    i = i + 1

     c = a(i)

     Else

     c = t

     End If

    cnt = cnt + 1

     Loop

     For i = 1 To k      '方法一

     temp = a(n)

     For j =    ③   

     a(j) = a(j - 1)

     Next j

    a(p + 1) = temp

     Next i

     For i = 1 To n

     s = s + Str(a(i))

     Next i

    Text4.Text = s

    End Sub

     ② ③ 

某学校要对班主任进行满意度调查,有20个评分项(为方便程序处理,评分项具体的名称本题中不显示,仅以序号代替),每个评分项学生可以打A、B、C 三个等级中的一个,现在已经收集所有学生对班主任的评价,为了保证隐私,不显示学生姓名,只显示班级,并存储在数据库的表中,点击command2(读取数据),读取原始数据显示在左侧list1中,左侧列表显示的原始评价数据第一条表示高二(01)班有1位同学在第9项给班主任打A,依次类推,点击command1(统计),统计出各项目的评价统计(A+B所占的百分比)。

  1. (1) 根据以下代码可知,本程序访问的数据库名称是
  2. (2) 完成划线处的代码填空:

    Dim classname(1 To 8000) As String       '存储原始数据中的班级名称

    Dim selectabc(1 To 8000) As String        '存储原始数据选项的值

    Dim xiangmu(1 To 8000) As String         '存储原始数据选项的序号

    Dim n As Integer

    Private Sub Command2_Click()             '从数据库读取数据,并且按班级名称排序

    Dim conn As New ADODB.Connection

    conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="&App.Path&"\pingjia.accdb"

    conn.Open

    Dim rs As New ADODB.Recordset

    Set rs.ActiveConnection = conn

    rs.Open "select * from data"

    n = 0' 记录评价的总条数

    '读取数据,并按班级排序,代码略

    End Sub

    Private Sub Command1_Click()

      Dim cstart(1 To 50) As Integer       '存储每个班级在数组classname中的起始位置

      Dim cend(1 To 50) As Integer        '存储每个班级在数组classname中的末尾位置

      Dim k As Integer                   '存储班级数量

      Dim testall(1 To 20) As Integer          '存储每一项总选择人数,例如testall(1)里存储这评价项目1里的总人数,testc(1)里存储评价项目1里选C的人数

      Dim testc(1 To 20) As Integer          '存储每一题(项)选c的人数

      '确定每个班级的起止位置,存储到cstart数组和cend数组

      cstart(1) = 1

      temp = classname(1)

      k = 1

      For i = 1 To n

        If classname(i) <> temp Then

          

          k = k + 1

          cstart(k) = i

          temp = classname(i)

        End If

      Next i

      cend(k) = n

      For i = 1 To k             '每个班级分别统计评价项目

        

        For q = 1 To 20          '对testall和testc数组初始化

          testall(q) = 0

          testc(q) = 0

        Next q

        For j = cstart(i) To cend(i)           '对第i个班级进行统计

          testall(xiangmu(j)) = testall(xiangmu(j)) + 1\

          If selectabc(j) = "C" Then 

        Next j

        For p = 1 To 20       '统计完成后输出这个班级的20个项目的A+B所占百分比

          s = s &""&Str(Round((testall(p) - testc(p)) / testall(p) * 100, 1))

        Next p

        List2.AddItem s

      Next i

    End Sub

有如下VB程序段:

Dim a(1 To 10) As Integer

Dim i, j As Integer

For i = 1 To 10

    j = i

    Do While j <= 10

        If j Mod i = 0 Then

            a(j) = a(j) + 1

        End If

        j = j + 1

    Loop

Next i

Text1.Text = Str(a(3))

数组a各元素初值为0,执行上述程序段后,文本框Text1中显示的内容为(    )

A . 1 B . 2 C . 3 D . 4
运行下列程序

Dim a(1 To 5) As Integer

a(1) = 1

For i = 2 To 5

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

    If a(i) Mod 2 = 0 Then

         a(i) = a(i) + i

    Else

        a(i) = a(i) + a(i - 1)

    End If

Next i

a(1)~a(5)的值不可能的是(   )

A . 1,2,3,8,9 B . 1,6,2,10,11 C . 1,6,11,16,17 D . 1,4,5,10,7
有如下VB程序段

Dim a(1 To 8) As Integer, b(1 To 8) As Integer

a(1)=1: a(2)=2: a(3)=3: a(4)=2: a(5)=1:a(6)=4:a(7)=3: a(8)=5

b(1)=5:b(2)=3:b(3)=5:b(4)=9:b(5)=7:b(6)=7:b(7)=7:b(8)=6

n=8

For i=1 To n-1

    For j=n-1 To i Step-1

        If a(j)*b(j+1)<a(j+1)*b(j)Then

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

            t=b(j):b(j) =b(j+1):b(j+1)=t

        End If

    Next j

Next i

For i=1 To 8

    List1.AddItem str(a(i))+" "+str(b(i))

Next i

运行该程序段后,列表框List1第5行显示的内容为(    )

A . 1 5 B . 3 7 C . 2 5 D . 4 7
现有列表l=[1,2,3,4,5,6,7,8,9,0],那么python3解释器执行l[1:3]='abc'后执行 l[2]的结果是(    )
A . 4 B . b C . abc D . c
已知数组a中的元素按非递减有序排列,在程序运行时显示在Text1中。编写程序实现如下功能:删除数组的重复元素,并更新数组的长度,在Text2输出新的数组元素值。程序运行界面 如图所示。

  1. (1) 要是程序运行时,窗体Form1标题立即立即显示为“删除重复数组元素”,可在(单 选:A .Form_Load()/B .Form_click()/C .Command1_Click())事件过程中添加Form1.Caption=“删除重复数组元素”语句来实现。
  2. (2) 为实现上述功能的VB程序如下,请在划线处补充缺失的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Dim lena As Integer    '数组a的实际长度 Dim s As String

    Private Sub Form_Load()

        '生成lena个非递减序列,并输出到文本框text1中,代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer i = 1

        Do While i < lena

            If a(i) <> a(i + 1) Then i =

            Else

                For j = i + 1 To lena

                    a(j - 1) =  

                Next j

                lena =  

            End If

        Loop

        s = ""

        For i = 1 To lena

            s = s + Str(a(i))

        Next i

        Text2.Text = s

    End Sub

已知s='abcdefgh',则s[1:5:2]+s[-1:-7:-2]的值是()
A . ’bdhfd’ B . ’bdfhfdb’ C . ’achfd’ D . ’acehfdb’
字符串变量a、b的值分别为“123” “321”,则表达式a+b的值是(    )
A . “123+321” B . “123321” C . 444 D . “444”
小明编写了一个矩阵转换程序,功能如下:单击“生成”按钮Command1后,在列表框list1中生成1-16顺序矩阵,单击“转换”按钮Command2后,在列表框.list2中生成转换后的矩阵。

转换的算法如下:

1)改变列的位置:原矩阵第3列变为新矩阵的第1列,原矩阵第1列变为新矩阵第2列,原矩阵第4列变为新矩阵第3列,原矩阵第2列变为新矩阵第4列。

2)改变行的位置:经过(1)处理后的矩阵的第1行和第4行交换,第2行和第3行交换。实现上面的功能,程序运行界面如图所示。

  1. (1) 程序执行后,点击转换按钮,在列表框List2中显示转换后的矩阵。再次点击转换按钮后,列表框List2中仅显示重新转换后的矩阵,则应在Com-mand2_ Click( )事件过程中添加语句(单选,填字母:A .Text2. Text=“”/B .List2. AddItem“”/C .List2. Clear)
  2. (2) 实现上述功能的程序如下,请在程序划线处填入合适的语句或代码。

    Dim sc(1 To 16) As Integer

    Dim zh(1 To 16) As Integer

    Private Sub Command1_ Click( )

        '在列表框list1中生成4*4矩阵sc,代码略

    End Sub

    Private Sub Command2_Click( )

        Dim pb As Integer, tmp As Integer, i As Integer, line As String

        For i=1 To 16     '变化列

            If i Mod 4=1 Then

                

            ElseIf i Mod 4=3 Then

                pb=i-2

            Else

                pb=pb+2

            End If

            zh(pb)= sc(i)

        Next i

        For i=1 To 8     '交换行

            If  Then

                tmp=zh(i) : zh(i)=zh(i+12) : zh(i +12)= tmp

            Else

                tmp=zh(i) : zh(i)=zh(i+4) : zh(i+4)= tmp

            End If

        Next i

        line= ""

        List2. Clear

        For i=1 To 16

            If i Mod 4=1 Then

                List2. AddItem line

                line= adj(Str(zh(i)), 3)

            Else

                

            End If

        Next i

        List2. AddItem line

    End Sub

    Function adj(a As String,n As Integer) As String

        'adj 函数的功能:在字符串a前加入适当的空格,使得a的程度为n位,代码略。

    End Function

以下程序运行后,显示的结果是(    )。

m=['书法','绘画','体育']

m.append('歌唱')

m.append('舞蹈')

print(m[4])

A . 舞蹈 B . 体育 C . 歌唱 D . 书法,绘画,体育
最近更新