数 组
一、思考题
1. 要分配存放12个元素的整型数组,下列数组声明(下界若无,按默认规定)哪些符合要求?
    (1) n=12                                (2) Dim a%( )
        Dim a(1 To n) As Integer               n=11
                                                  ReDim a(n)
    (3) Dim a%[2,3]    (4) Dim a(1,1,2) As Integer
    (5) Dim a%(10)                           (6) Dim a!( )
        ReDim a(1 To 12)                ReDim a(3,2) As Integer
    (7) Dim a%(2,3)  8) Dim a(1 to 3 1 to 4) As Integer
2. 已知下面的数组声明,写出它的数组名、数组类型、维数、各维的上、下界、数组的大小、并按行的顺序列出各元素。
    Dim a(-1 to 2,3) As Single
3. 已声明了静态数组A(3, 4),能否在下面再用重定义动态数组A(4, 4)来重定义A数组的大小吗?
二、选择题
1. 以下关于数组的说法,不正确的是______。
(A)静态数组在声明时大小必须固定           (B)动态数组在声明时大小可以不确定
(C)默认情况下数组的下界为0             (D)运行时可改变动态数组或静态数组的大小
2. 有关数组的说法,错误的是______。
(A)数组是一种特殊的数据类型                  (B)一个数组中可存放多种类型的数据
(C)数组是一组相同类型的变量的集合            (D)数组可以被声明为变体类型
3. 如下数组声明语句,______正确。
(A)Dim a[3, 4] As Integer                  (B)Dim a(3, 4) As Integer
(C)Dim a(n, n) As Integer                   (D)Dim a(3 4) As Integer
4. 要分配存放如下方阵的数据,______数组声明语句能实现(不能浪费空间)。

(A)Dim a(9) As Single                 (B)Dim a(3, 3) As Single
(C)Dim a( 1 To 3 , 1 To 3) As Single       (D)Dim a( -3 To -1 , 5 To 7) As Integer
5. 如下数组声明语句,则数组a包含元素的个数有______。
     Dim a(3, -2 to 2,5)
(A)120     (B)75          (C)60      (D)13
6. 以下程序输出的结果是______。
  Dim a
  a = Array(1, 2, 3, 4, 5, 6, 7)
  For i = Lbound (a) To Ubound (a)
   a(i) = a(i) * a(i)
  Next i
  Print a(i)
 (A)49        (B)0         (C)不确定           (D)程序出错
7.下列数组声明语句中的数组a包含了______个数组元素
   Dim a(4,-1 To 2, 3)
 (A) 120         (B) 11             (C)60          ( D)80
8. 有如下程序段:
  Type student
   nl as Integer
   name as String*13
  End Type
  Dim stu As student
 该程序段定义了两个程序成分,它们分别是______
 (A)数据类型和自定义类型变量             (B)自定义类型和变量
 (C)显示类型和变量                  (D)自定义类型和自定义类型变量
9.在窗体的通用声明段自定义了数据类型student,下列          定义方式是正确的。
(A) Private Type student                   (B)Type student
      No as Integer                                  No as Integer
      Name as String *8                              Name as String *8
    End Type                                      End student
(C  Type student                            (D)Type student
No  Integer                                  No as Integer
        Name String *8                                Name as String *8 
End Type                                      End Type   
10. 设数组a中有N个元素,并已按递增次序排列,下面______程序段可以使a数组的元素按递减次序排列。
 (A) For i = 1 To N     (B) For i = 1 To N / 2
     a(N - i + 1) = a(i)     a(i) = a(N - i + 1)
    Next i            Next i
 (C)For i = 1 To N      (D)For i = 1 To N / 2
    t = a(i)           t = a(i)
    a(i) = a(N - i + 1)      a(i) = a(N - i + 1)
    a(N - i + 1) = t       a(N - i + 1) = t
   Next i            Next i
三、填空题
1. 在VB中,若要设定每个数组默认的下界固定为1,其声明语句是_option base 1_____ 。
2. 程序中自动测试数组的下界用__Lbound____函数来实现,上界用_Ubound_____函数来实现。
3. 当数组首次被声明时,对所有数值型数组默认初值是_0_____;字符串数组默认初值是_
_____。
4. 当用ReDim语句要改变动态数组的大小时,数组元素的值会_丢失_____;用_Preserve_____关键字可保留数组元素原来的值。
5. 已知建立了5个元素的Command1控件数组,用_Index__参数可识别用户单击了某控件数组元素。
6. 在一个二维数组中,第一个下标指明了一个元素的______;第二个下标指明了元素的______。
7. 已知如下a(1 To 5)数组和i、j、k变量有了初值:
1
3
5
7
9
 
2
4
6
a(1)
a(2)
a(3)
a(4)
a(5)
 
i
j
k
 请写出下列各数组元素的值或会产生什么情况:
  a(3)=_5__;a(i)=_3_; a(i+j)=_越界_____;
  a(k-i)=______;a(a(i))=______; a(3+k\3)=______;
  a(i*j)=______; a(0)=______;
8. 如下程序中随机产生6位学生的分数(分数范围1~100),存放在数组a中,以每2分一个"*"显示,如图1.5.14所示。
 
Private Sub Command1_Click()
 Dim a%(1 To 6)
  For i = 1 To 6
   a(i) = _Int(Rnd*100+1)_
  Print string(a(i)\2,_*);A & ( & ) & = & a(i)_
  Next i
End Sub

图1.5.14: 随机分数运行界面
9. 下面程序的功能是从键盘输入6个整数,出最大数和最小数所在的位置,并把两者对调,然后输出调整后的6个数。
  Private Sub Command1_Click()
   Dim a(5) As Integer, max%,maxi%, min%,mini%, i%,t%
   For i = 0 To 5
    a(i) = _val(text1)__
   Next i
   min=a(0):mini=0
   max=a(0):maxi=0
   For i = 1 To 5
    If _a(i)<min___ Then mini = i
    If _a(i)>max___ Then maxi=i
   Next i
   t=a(maxi)
   _a(maxi)=a(mini)_
   a(mini) = t
   For i = 0 To 5
    Print a(i);
   Next i
  End Sub
过 程
一、思考题
1. 简述子过程与函数过程的共同点、不同处?
2. 什么是形参?什么是实参?什么是值引用?什么是地址引用?地址引用时,对应的实参有没有限制?
3. 请比较函数过程和子过程调用的区别。
4. 请说明局部变量与静态变量的区别。
5. 指出下面过程语句说明中的错误。
  (1) Sub f1( n%) As Integer 子过程f1没有类型
  (2) Function f1%(f1%)    函数过程名和形参同名令数组全部的值为0
  (3) Sub f1(ByVal n%())    形参数组必须是传址
  (4) Sub f1( x(i) as Integer)  形参不能指定大小
6. 已知有如下求两个平方数和的fsum子过程:
   Public Sub fSum(sum%, ByVal m%, ByVal n%)
    sum = a * a + b * b
   End Sub
  在事件过程中有如下变量声明:
   Private Sub Command1_Click()
    Dim a%, b%, c!
   a = 10: b = 20
  则指出如下过程调用语句错误所在:
   (1) fsum 3, 4, 5
   (2) fsum c, a, b
   (3) fsum a + b, a, b
   (4) Call fsum(Sqr(c), sqr(a), Sqr(b))
   (5) Call fsum c,a, b
7. 要使变量在某事件过程中保值,有哪几种变量声明的方法?
声明变量为全局(public),通用声明段或标准模块声明的模块级变量,局部过程声明的静态变量(static).
8. 为了使某变量在所有的窗体中都能使用,应在何处声明该变量?
在标准模块声明的全局变量
9. 在同一模块、不同过程中声明的相同变量名,两者是否表示同一个变量?有没有联系?
表示不同的变量,没有任何关系

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。