3.2 数据与结构 知识点题库

用下列语句定义的数组的元素个数是:(   )

  Dim names(5) As String

A . 4 B . 5 C . 6 D . 不确定
小周定义了一个变量rs来存储超市里商品条形码,变量的数据类型应是(       )
A . Integer B . String C . Long D . Date
(加试题)有如下VB程序段:

A=1:b=1:n=12

f(1)=a:f(2)=b

For i=3 to n

    c=a+b

    f(i)=c Mod 4

    a=b

    b=c

Next i

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

A . 0 B . 1 C . 2 D . 3
有如下VB 程序段:

m = Val(Text1.Text)

Do While m <> 0

x = m Mod 8

m = m \ 8

a(x) = a(x) + 1

If a(x) = 1 Then n = n + 1

Loop

数组a各元素的初始值都为0,在文本框Text1中输入“529”,执行程序后,变量n的值为(  )

A . 1 B . 2 C . 3 D . 4
使用数组a实现在列表框中显示数字的螺旋矩阵,图a中显示的是螺旋矩阵中数组元素的排列顺序,图b中显示的是矩阵中数组元素对应的赋值情况(以5×5 为例)。

小明依据上述描述设计了如下VB程序,在Text1中输入矩阵的行数n (n≤10),单击“生成”按钮Command1,在List1中显示n×n的螺旋矩阵。请回答下列问题:

  1. (1) 当输入的行数为4时,单击“生成”按钮,则数组元素a(5)的值为
  2. (2) 请在划线处填入合适的代码。

    Function pout(x As Integer) As String     ‘函数功能用于数字的对齐输出

    Dim i As Integer, j As Integer, y As String

    y= Str(x) : j = Len(y)

    For i = 1 To 5 - j

     y = y +“”

    Next i

    End Function

    Private Sub Command1_Click()

    Dim a(1 To 100) As Integer

    Dim i As Integer, j As Integer, m As Integer, n As Integer

    Dim ts As String, t As Integer, v As Integer

    n = Val (Text1.Text) :v = 1 : t = 1      ‘t用于每次填数方向上的位置修正

    For m = n To 1 Step -2

     For i = 1 To m      ‘向右方向填数

     a(t + i - 1)=v

     

     Next i

     t = t + n - 1

     For i = 1 To m-1     ‘向下方向填数

    a(m + t) = v

    v=v+1

     Next i

     t = t - n

     For i = m - 1 To 1 Step -1     ‘向左方向填数

    a(t + i) = v

    v=v+1

     Next i

     For i = m - 2 To 1 Step -1     ‘向上方向填数

    a(t - n + 1) = v

    v=v+1

    t = t-n

     Next i

     t=t+2

     Next m

     For i = 1 To n     ‘以图a方式在List1中输出数组数据

     ts =“”

    For j =To i * n

     ts = ts + pout(a(j))

    Next j

    List1.AddItem ts

     Next i

     End Sub

有以下VB程序段:

a(1)=68: a(2)=88: a(3)=76: a(4)=60: a(5)=98: a(6)=100: a(7)=64: a(8)=85: a(9)=99:a(10)=59

For i = 1 To 9

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

 c(b(i) \ 10) = c(b(i) \ 10) + 1

Next i

For i = 0 To 10

 If c(i) > 0 Then Label1.Caption = Label1.Caption + “” + Str(c(i))

Next i

数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是(  )

A . 23211 B . 13221 C . 23221 D . 13
下列程序运行后的输出结果是(  )

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 . 显示出错信息
对n个元素的数组a进行升序排列:第一遍将最小的数移至第1个位置,将最大的数移至第n个位置;第二遍将余下元素中的最小和最大数分别移至第2个和第n-1个位置,以此类推,直到所有数组元素按升序排列。部分代码如下:

m1=1:m2=n

Do While m1< m2

    For i=m2 To m1+1  Step -1

        If a(i)( a(i-1)Then t= a(i): a(i)=a(i-1): a(i-1)=t

    Next i

      ① 

        If a(i)> a(i +1). Then t= a(i): a(i)=a(i+1): a(i+1)=t

    Next i

    m1=m1+1

    m2=m2-1

Loop

要使程序实现上述算法思想,则代码中①处的语句是(  )

A . For i=m1+1 To m2-1 B . For i =m2-2 To m1-2 Step -1 C . For i=m1+2 To m2-2 D . For i= m2-1 To m1+1 Step -1
有如下VB程序段:

For i = 1 To 6

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

Next i

For i = 1 To 5

If i Mod 2 = 1 And a(i) > a(i + 1) Then

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

Else

a(i) = a(i) + 1

End If

Next i

执行该程序段后,a(1)~a(6)各元素可能的值是(  )

A . 11,11,7,9,3,9 B . 6,2,8,10,5,9 C . 6,9,3,7,8,12 D . 3,9,0,8,2,7
对一个n×n的矩阵以“行”为单位进行升序排序,排序结果如下表所示。

小波编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text中输入n(1≤n≤10),单击“产生”按钮 Command1产生n×n个随机数,随机数的范围为[0, 9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在表框List2中输出排序后的矩阵。程序运行界面如图所示。

  1. (1) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim n As Integer

    Dim a (1 To 100) As Integer

    Private Sub Command1_ Click ( )

    Dim i As Integer, s As String

    s = “”

    n = val (Text1 Text)

    For i = 1 To n *n

         ①  

      s = s+ Str(a(1))

      If i Mod n = 0 Then

        List1. Additem s

        s = “”

      End If

    Next i

    End sub

    Private Sub Command2 _Click ( )

    Dim i As Integer, j As Integer, t As Integer

    Dim s As String

    s = “”

    For i = 1 To n*n

      k = i

      For j = i+1 To     ②     

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

      Next i

      If k <> i Then t = a(k): a(k) = a(i): a(i) = t

          ③      

      If i Mod n = 0 Then

        List2. Additem s

        s = “”

      End If

    Next i

    End Sub

     ② ③

  2. (2) 程序中所使用的排序算法是(填算法名称)。
某医院每天提前发放100个预约号。考虑到老年人身体,预约的病人按照以下规则进行就诊:

①老年人(年龄≥60岁)比非老年人优先就诊;

②老年人按年龄从大到小的顺序就诊,年龄相同的按预约顺序就诊;

③非老年人按预约顺序就诊。

小王根据以上规则编写了一个VB程序,通过引入索引数组temp进行排序,使得age(temp(1))≥age(temp(2))≥age(temp(3))…≥age(temp(n))。如图a所示。

图a

图b

程序运行时,病人的数据显示在列表框List1中,单击“就诊排序”按钮Command1,排序结果显示在列表框List2中,程序运行界面如图b所示。

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

  1. (1) 分析程序,可知程序中读取的数据库工作表名称为
  2. (2) 请在画线处填入合适的代码。

    Dim pname(1 To 100)As String           ‘存放病人姓名

    Dim age(1 To 100)As Integer             ‘存放病人年龄

    Dim num(1 To 100)As Integer            ‘存放病人序号

    Dim n As Integer

    Private Sub Command1_Click( )

      Dim temp1(1 To 100)As Integer, temp2(1 To 100)As Integer   ‘索引数组

      Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer, t As Integer

      k1=0:k2=0

      For i=1 To n

          If age(i)<60 Then

          k1=k1+1

        temp1(k1)=num(i)

      Else

          k2=k2+1

          temp2(k2)=num(i)

        End If

    Next i

    For i=1 To k2-1

        For j=k2 To i+1 Step-1

          If   ①   Then

              t=temp2(j):temp2(j)=temp2(j-1):temp2(j-1)=t

          End If

        Next j

    Next i

    List2.Clear

    List2.Addltem "就诊号  名单   年龄"

    For i=1 To k2

        List2.Addltem Str(i)&."  "&.pname(temp2(i))&"r/&.Str(age(temp2(i)))

    Next i

    For j=1 To k1

        List2.Addltem   ②   &"    "&pname(templ(j)&"   "&.Str(age(templ(j)))

    Next j

    End Sub

    Private Sub Form_Load( )

      Dim conn As New ADODB. Connection, rs As New ADODB. Recordset

      Conn.ConnectionString="Provider=Microsoft. ACE. OLEDB. 12.0;DataSource="&App. Path&"\pdxt.accdb"

      conn.Open

      Set rs. ActiveConnection=conn

      rs. Open"select*from jzmd"

      n=0

      List1.AddItem"预约号   名单   年龄"

      Do While Not rs. EOF

           ③   

        num(n)=n

        pname(n)=rs. Fields(1)

        age(n)=rs Fields(2)

        List1. Addltem Str(num(n))&"  "&-pname(n)&."  "&.Str(age(n))

        rs. MoveNext

      Loop

      rs.Close:conn.Close

    End Sub

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

下列不属于基本数据类型的是(    )
A . 整型 B . 浮点型 C . 复数类型 D . 字符串
某算法的VB程序段如下:

a(1) = 12: a(2) = 44: a(3) = 65: a(4) = 36: a(5) = 58

x = 0: y = 0

For i = 1 To 4

    k = i

    For j = i + 1 To 5

        If a(j) > a(k) Then

            k = j

            x = x + 1

        End If

    Next j

    If k <> i Then

        t = a(i): a(i) = a(k): a(k) = t

        y = y + 1

    End If

Next i

Text1.Text = Str(x) + Str(y)

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

A . 5 3 B . 5 5 C . 10 3 D . 10 5
数学中阶乘是用n!来表示,同时定义了n!=n*(n-1)!,例如:5的阶乘可以表示为5!=5*4*3*2*1。下列Python程序是通过for循环求解一个正整数的阶乘。

图片_x0020_100007

图片_x0020_100008

  1. (1) 以上程序第4行横线处应该填入:
  2. (2) 以上程序中变量a的数据类型是:
  3. (3) 运行后的结果是4!=24,则for循环中第4行的语句共执行了次。
已知 x = [3, 5, 7] ,那么执行语句 x[1:] = [2] 之后,x 的值为
关于数据结构的描述,以下选项中错误的是(      )
A . 数据结构指相互有关联的数据元素的集合 B . 数据的存储结构有顺序存储、链接存储、索引存储和散列存储 C . 数据结构不可以直观地用图形表示 D . 数据的逻辑结构主要有集合结构、线性结构、树结构和图结构四种类型
学习小组有5名成员,成员的分数存放在字典中。为得到成员的分数(用变量fenshu表示),请在横线填入正确的代码。

a={"张三":80,"李四":85,"王五":90,"赵六":70,"钱七":65}

b=input("请输入姓名:")

fenshu=         #从字典读取分数

有如下Python程序段

a=[]

for i in range(100):

    if i%10==0:

        a.append(i)

则程序执行后,a[1]和a[-1]的值分别是(   )

A . 0和100 B . 10和100 C . 0和90 D . 10和90
有如下VB程序段:

s = 0: i = 1

Do While i <= 10

    If i Mod 3 = 0 Then a(i) = a(i) + 1 Else a(i) = i

    List1.AddItem Str(a(i))

    i = i + 1

Loop

i = 10

Do While i >= 1

    If a(i) = 1 Then s = s + 1

    i = i - 1

Loop

该程序段运行后,变量s值是(  )

A . 3 B . C . 5 D . 9
有如下VB程序:

Dim s1 As String, s2 As String, n As Integer, t As Integer

Dim a(128) As Integer

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

s2 =""

For i=1 To n

    t = Asc(Mid(s1, i, 1))

    a(t)=a(t)+1

Next i

For i=1 To 128

    Do While a(i)> 0

        s2 = s2 + Chr(i)

        a(i)=a(i)-1

    Loop

Next i

Text2.Text = Mid(s2,5,1)

若Text1中输入的字符串为“He1lo535Study" (不包括引号) ,运行上述程序后,Text2中显示的结果为(    )

A . o B . e C . S D . 5