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

以下不能作为Visual Basic变量名的是(   )。(多选)  
A . EI B . E12 C . 12-E D . E-12 E . 12.5
下列 VB 程序段中:

Dim i as Integer, max as Integer Dim a(1 to 10) as Integer

‘代码略,随机产生 10 个不重复的数存于数组 a 的 10 个元素 a(1)~a(10)中max=a(1)

For i=2 to 10

       If a(i)>a(max)  then  max=i Next i

变量 max 用于存储(   )

A . a(2)~a(10)的最大值 B . a(1)~a(10)的最大值 C . a(2)~a(10)的最大值在数组中的下标值 D . a(1)~a(10)的最大值在数组中的下标值
有N堆纸牌,编号分别为①,②,…。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌,然后移动。

移牌规则:在编号为①的堆上取的纸牌,只能移到编号为②的堆上;在编号为N(N≥2)的堆上取的纸牌,只能移到编号为N-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。

现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

例如N=4,4堆纸牌数分别为:

9

8

17

6

移动3次可达到目的:从③取4张牌放到④(9 8 13 10)→从③取3张牌放到②(9 11 10 10)→从②取1张牌放到①(10 10 10 10)。

现编写如下代码解决4堆任意张数牌的移动问题,请按提示补充划线句的代码:

Private Sub Command1_Click()

Dim aver As Single

Dim st As Integer     ‘统计移动的步数

Dim ssum, i, j As Integer

Dim a( 1 To 100) As Integer

a(1) = Val(Text1.Text)     ‘读取各堆牌张数,求总张数aver

a(2) = Val(Text2.Text)

a(3) = Val(Text3.Text)

a(4) = Val(Text4.Text)

ssum =a(1) + a(2) + a(3) + a(4)

aver=ssum \ 4     ‘求牌的平均张数aver

For i=1 To 4

  ① 

Next i

i=1     ‘过滤初端和末端的0

j = 4

Do While a(i) = 0 And i < 4

 i=i+1

Loop

Do While a(j) = 0 And j > 1

 j = j-1

Loop

st = 0

Do While i < j      ‘开始移动牌使数组a元素值均为0并过滤掉

  ② 

 a(i) = 0

 st = st + 1

 i=i+1

 Do While a(i) = 0 And i<j      ‘过滤掉数组a元素值均为0

   ③ 

 Loop

Loop

Print st      ‘输出移动次数

End Sub

  1. (1) 划线①处;划线②处;划线③处
  2. (2) 若现有6堆牌,分别编号①②③④⑤⑥,各堆张数分别为15、2、4、7、8、6,按上述算法的思路,要使用最少的移动次数使每堆上纸牌数都一样多,则最少次数为
单精度型数据的有效位最多位,双精度型数据的有效位最多位。
下列程序运行后的输出结果是(  )

DIM A(6) AS INTEGER

FOR I= 1 TO 6

  A(I)= I

NEXT I

PRINT A(I)

A . 0 B . 6 C . 7 D . 显示出错信息
下列程序段执行后,变量max的值用于存储(  )

Dim i As Integer, max As Integer

Dim a (1 to 10) As Integer

‘代码略,随机产生10个不重复的数存于数组a的10个元素a⑴~a⑽中max=1

For i=2 To 10

If a (i) > a(max) Then max=i

Next i

A . a(2)-a(10)的最大值 B . a(1)~a(10)的最大值 C . a(2)~a(10)的最大值在数组中的下标值 D . a(1)~a(10)的最大值在数组中的下标值
有如下VB程序段:

Dim a(1 To 5)As Integer

Dim res As string

n = 19: i = 0

Do While n < 0

  i = i + 1

  a(i) = n Mod 2

  n = n\2

Loop

程序运行后,数组元素a(1)~a(5)的值依次是(  )

A . 1,0,0,1,1 B . 1,1,0,0,1 C . 1,0,0,1,0 D . 1,0,1,0,0
下列属于Visual Basic实数常量的是(  )
A . 0.618 B . 1/2 C . True D . “2014-9-1”
以下能作为 VB 变量名的是(   )
A . Num_01 B . 2xy C . String D . score(i)
小董编写了一个有关“筛选操作”的VB程序,实现如下功能:在文本框Text1中显示一组随机生成个位数为“9”的两位数(原始数据),在文本框Text2中输入筛选个数,单击“操作”按钮Command1后,在文本框Text3中按降序显示所筛选个数的不重复最大数据(以逗号分隔并以数据结尾),若在文本框Text2中输入的数大于原始数据中不相同数的个数,则在文本框Text3中显示“筛选的个数太大,请重新输入!”。程序运行界面如图所示。

  1. (1) 如图所示,该VB程序的窗体中共有类对象(填数字)。
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Const n = 10

    Dim d(n) As Integer, c As Integer

    Private Sub Form_Load()

       Dim i As Integer, j As Integer, f As Boolean, s As String

        Randomize

        c = n

        For i = 1 To n

            f = False

             d(i) =       ①         ' 随机生成个位数为“9”的两位数

             For j = 1 To i - 1

                If      ②       Then f = True

             Next j

             If f Then c = c - 1

        Next i

    '原始数据在文本框Text1中显示。代码略

    End Sub

    Private Sub Command1_Click()

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

    Dim cnt As Integer,t As String, s As String

    d(0) = 100

    cnt = Val(Text2.Text)

        If cnt > c Then

    Text3.Text = "输入筛选的个数太大,请重新输入!"

       Exit Sub      'Exit Sub表示退出过程

    End If

    For i = 1 To cnt

     k = i

    For j = i + 1 To n

    If d(j) < d(i - 1) And ( ) Then k = j

    Next j

          If k <> i Then

                t = d(i): d(i) = d(k): d(k) = t

          End If

    Next i

    For i = 1 To cnt

          s = s + Str(d(i)) + ","

    Next i

    Text3.Text =      ③    

    End Sub

     ② ③ 

  3. (3) 程序中加框处代码有错,请改正。
给定m个区间和1个数组(有n个元素),现要求根据各区间限定的取值范围,将数组依次分割成m+1个段。具体分割方法如下:

•第1段是从数组首个元素开始,元素值都属于第1区间的最长连续元素段,如果首个元素不属于第1区间,则第1段元素个数为0;

•第1段分割后的剩余元素,用同样的方法来依次分割第2段、第3段、…、第m段;

•第m段分割后的剩余元素分割到第m+1段(剩余段)。

若第p(1≤p≤m-1)段末尾连续元素的值也同时属于第p+1区间,则这块连续元素称为第p段“重叠块”,该段其余部分称为第p段“非重叠块”。由于不存在第m+1区间,这里特别规定:第m段的全部元素都分割到m段“非重叠块”,第m段“重叠块”的元素个数为0。一个数组分段示例如图。图中数组第1个元素10不属于第1区间[0,5],因此第1段的元素个数为0。10和20属于第2区间,而33不属于第2区间,因此第2段只包含10和20两个元素。第3段末尾连续3个元素的值也同时属于第4区间,因此,第3段“非重叠块”包含33,58,46,第3段“重叠块”包含55,62,69。

  1. (1) 给定2个区间,数组各元素为“12,44,34,45,66,50,45,70”,第1段“重叠块”中的元素个数为3个,第1个区间为[10,50],则第2个区间可能为(单选,填字母A .[30,80] /B .[9,45] /C .[60,90])。
  2. (2) 小李根据上述描述,设计了一个统计各段“非重叠块”“重叠块”和剩余段中元素个数的算法。算法的 VB 程序如下,请在划线处填入合适的代码。

    Const n = 18: m = 6

    Dim a(1 To n) As Integer

    Dim b(1 To 2 ∗ m) As Integer

    'b(1)、b(2)为第 1 区间的下限和上限,b(3)、b(4)为第2区间的下限和上限,…

    Dim c(1 To 2 ∗ m + 1) As Integer

    '数组c用于保存统计结果:

    'c(1)、c(2)分别存储第1段"非重叠块"和"重叠块"的元素个数,

    'c(3)、c(4)分别存储第2段"非重叠块"和"重叠块"的元素个数,…

    'c(2m-1)存储第m段"非重叠块"元素个数,c(2m)存储

    第m段"重叠块"的元素个数(值为0)

    'c(2 m+1)存储剩余段元素个数

    Private Sub Command1_Click()

    Dim i As Integer, p As Integer, L As Integer, LL

    As Integer

    '读取n个数据并保存在数组a中,代码略

    '读取m个区间的下限和上限并保存在数组b中,代码略

    For i = 1 To 2 ∗ m + 1

     c(i) = 0

    Next i

    i = 1: p = 1

    L = 0: LL = 0

    Do While i <= n And p <= m

     If IsIn(i, p) Then

     If Then

     LL = LL + 1

     Else

     L = L + LL + 1

     LL = 0

     End If

     i = i + 1

     Else

     c(2 ∗ p - 1) = L

     c(2 ∗ p) = LL

     L = 0

     p = p + 1

     End If

    Loop

    If i <= n Then

    Else

     c(2 ∗ p - 1) = L

     c(2 ∗ p) = LL

    End If

    '输出统计结果,代码略

    End Sub

    '函数IsIn用来判断a(i)值是否属于第p区间

    Function IsIn ( i As Integer, p As Integer )

    As Boolean

    If a(i) >= b(2 ∗ p - 1) And a(i) <= b(2 ∗ p)

    And p <= m Then

     IsIn = True

    Else

     IsIn = False

    End If

    End Function

为分析数组a中各元素依次变化的情况,进行如下定义:

变化段:数组中相邻两个元素构成一个变化段。变化段有上升段(a(i)>a(i-1))、下降段(a(i)<a(i-1))和持平段(a(i)=a(i-1))。数组a中的n个元素可构成n-1个依次排列的变化段。

波峰:从上升段转到下降段形成一个波峰。波峰的起点是峰顶前所有连续上升段中的第1个,终点是峰顶后所有连续下降段中的最后1个。

对称波峰:上升段与下降段个数相同的波峰称为对称波峰。

下图为一组数据的变化段及波峰示意图。

现要求统计数组a各元素依次变化过程中“对称波峰”的个数。小李依据上述描述设计如下VB程序。请回答下列问题:

  1. (1) 数组元素“1,4,3,3,2,6,8,7,9,3,4,7,9,6,3,1”依次变化过程中“对称波峰”的个数为
  2. (2) 请在划线处填入合适的代码。

    Const n = 20

    Dim a(1 To n) As Integer

    Private Sub Form_Load()

    '读取数据,并存储到数组a中,代码略

    End Sub

    Private Sub Command1_Click()

    Dim flag As Integer    '存储变化段的状态:1表示升,-1表示降,0表示平

    Dim count As Integer      '存储对称波峰段的个数

    Dim steps As Integer

    Dim i As Integer

    flag = 0: steps = 0: count = 0

    For i = To n

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

    If IsSymPeak(flag, steps) Then count = count + 1

    If flag = 0 Or flag = -1 Then

    Else

    steps = steps + 1

    End If

    flag = 1

    ElseIf a(i) = a(i - 1) Then

    If IsSymPeak(flag, steps) Then count = count + 1

    steps = 0

    flag = 0

    Else

    steps = steps - 1

    flag = -1

    End If

    Next i

    If IsSymPeak(flag, steps) Then count = count + 1

    Text1.Text = Str(count)

    End Sub

    Function IsSymPeak(flag As Integer, steps As Integer) As Boolean

    If Then

    IsSymPeak = True

    Else

    IsSymPeak = False

    End If

    End Function

有如下VB程序段:

Dim d(1 to 5)as integer,i as integer

Dim flag as Boolean,j as integer

‘给数组元素d(1)至d(5)赋初值为1,代码略

  Randomize

  For i=1 to 5

    J = 1:flag = True

    d(i) = int(Rnd*9)

    Do while j< =i-1 and flag = True

      d(i) = int(Rnd*5+1)

      If d(i) = d(j) then i=i-2:flag = False

      j = j+1

    Loop

Next i

运行程序后,数组中的数据值可能是(    )

A . 1 3 4 5 6 B . 3 5 4 1 1 C . 8 3 1 2 5 D . 1 2 6 2 1
在Visual Basic中,要定义一个由50个元素构成的一维整型数组cp,下列语句正确的是(     )
A . Const cp(1 to 50) As Integer B . Dim cp(1 To 50) As Integer C . Const cp(1 To 5) As Integer D . Dim cp As Integer
有如下VB程序段:

For i=1 To 10

  f=i Mod 2

  If f=0 Then a(i)=0 Else a(i)=1

  For j=1 To i

    If f=0 Then a(i)=a(i)+j Else a(i)=a(i)*j

  Next j

Next i

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

A . 10 B . 6 C . 4 D . 1
(约瑟夫问题)n个人围成一圈,从第1个人开始从1报数,数到3的人出圈;再由下一个人继续从1开始报数,数到3的人出圈……输出依次出圈的人的编号和最后一个留在圈里的人的编号。如输入n=8,则依次出圈的人的编号是3,6,1,5,2,8,4,最后留在圈内的是7号。

以下VB程序在a数组中保存了下一个要报数的人的编号,即若。(w)=p,则表示当第w个人报过数2后,下一个要报数的是第p号。程序在列表框Listl中输出了依次出圈的人的编号,在标签Label1中输出了最后剩下的人的编号。请完善程序。

Private Sub Command1_Click( )

  Dim i As Integer, n As Integer, w As Integer, num As Integer

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

  n=Val(Text1.Text)

  For i=1 To n-1

      a(i)=i+1

  Next i

  a(n)=1

  w=n        ‘变量w表示当前检查的是第w号数组元素,即从第n号开始检查

  t=0       ‘变量t用以模拟报数

  Do While   ①   

      num=a(w)    ‘当前报数的人的编号

      t=t+1

      If t=3 Then

          List1.AddItem Str(num)

        a(w)=   ②   

        t=0

      Else

             ③   

      End If

  Loop

      Label1.Caption=Str(w)

End Sub

以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

有如下程序段:

Dim a(1 To 6) As String

For i = 6 To 2 Step -1

    k = i

    For j = 1 To i - 1

        If a(j) > a(k) Then k = j

    Next j

    If k <> i Then

           

    End If

Next i

已知数组元素a(1)~a(6)的值依次为“35”,“12”,“35”,“110”,“47”,“123”,下列说法不正确的是(    )

A . 程序执行后,数组呈现升序排序 B . 在程序执行过程中,数据的比较次数为15次 C . 程序中加框处代码执行4次 D . 数组中数据相同的元素排序前后相对位置不变(如:a(1)的“35”保持在a(3)的“35”前面)
VB中数据类型Long表示长整型,占(   )字节。
A . 4 B . 2 C . 8 D . 16
3e-4属于的数据类型是(    )
A . 整型 B . 字符串 C . 实型 D . 布尔型
产生一个5到10之间的随机整数并存到变量b中,b=,从列表cla=[“2班”,“3班”,“7班”,“9班”]随机抽选一个班级,存到变量a中,a=
最近更新