第6章 过 程
Next End Sub
(5)阅读程序,写出程序运行后的输出结果:_____。
Dim A() As Integer
Private Sub Form_Click()
ReDim A(1 To 5) For I = 1 To 5 A(I) = I Next I
ReDim A(1 To 10) For I = 6 To 10
A(I) = 2 * I Next I
For I = 1 To 10
Print A(I); Next I End Sub
' 若将该语句改为ReDim Preserve A(1 To 10),结果如何?
四、编程题:
(1)随机生成15个100以内的正整数,并显示在一个文本框中,再将所有对称位置的两个数据对调后显示在另一个文本框中(第1个与第15个对调,第2个与第14个对调,第3个与第13个对调,??)。
(2)数组的逆置。随机生成10个两位正整数,存放在数组A中,再将数组中的数据进行逆置,在窗体上输出逆置前后的数组元素。应用程序运行参考界面如图5-30所示。
图 5-30
(3)数组的循环移位。将10个数放入数组中,然后将其中第一个数放置到最后,其余数依次前移。应用程序运行参考界面如图5-31所示。
- 16 -
第6章 过 程
图 5-31
(4)随机生成20个两位正整数,统计其中有多少个不相同的数。 (5)设有一个二维数组A(5, 5),试编程计算:
① 数组所有元素之和;
② 所有靠边元素之和; ③ 所有对角线元素之和。
(6)求一个N×N矩阵A的转置。N从键盘输入,A矩阵和它的转置矩阵AT分别显示在两个文本框中。(提示:转置矩阵AT(I, J) =A(I, J))
(7)找出100以内的所有素数,存放在数组Prime中。并将所找到的素数,按每行10个的形式显示在窗体上。
(8)求矩阵A中每一列的最大值以及最大值所在的行。应用程序运行参考界面如图5-32所示。
图 5-32
(9)设计窗体,输入两个数,根据不同运算符计算结果。设需要进行的有加、减、乘、除、整除、余数、指数和字符串连接8种运算。根据运算方式,显示计算结果。应用程序运行参考界面如图5-29所示。
- 17 -
第6章 过 程
图 5-29
(10)将升序数组A和升序数组B,合并成升序数组C。应用程序运行参考界面如图5-30所示。
图 5-30
练习题六
1、选择题:
(1)Sub过程和Function过程最根本的区别是_____。
A.两种过程参数的传递方式不同
B.两种过程分别用于实现不同的程序功能
C.Sub过程不能返回值,而Function过程可以返回值
- 18 -
第6章 过 程
D.Function过程可以没有形参,而Sub过程不能没有形参 (2)以下叙述中,错误的是_____。
A.在Sub或Function过程中不能再定义其他Sub或Function过程
B.在调用过程时,与使用ByRef说明的形参对应的实参只能按地址传递方式结合 C.递归过程既可以是递归Function过程,也可以是递归Sub过程 D.在调用过程时,形参为数组的参数对应的实参只能是数组 (3)以下叙述中,正确的是_____。
A.一个Sub过程至少要有一个Exit Sub语句
B.一个Sub过程必须有一个End Sub语句
C.可以在Sub过程中定义一个Function过程,但不能定义Sub过程 D.调用一个Function过程可以获得多个返回值
(4)在程序中用Private Function Fun(X As Integer, Y As Single)定义了函数Fun。在调用函数Fun的过程中,变量I,J均定义为Integer型,能正确引用函数Fun的是_____。
①Fun(I , J) ②Call Fun(I , 3.65)
③Fun(3.14 , 234) A.①③ C.①②③
④Fun(\B.②③④ D.①②③④
(5)定义两个过程Private Sub1(St() As String)和Private Sub2(Ch() As String * 6),在调用
过程中用Dim S(3) As String *6, A(3) As String定义了两个字符型数组,下面调用语句中正确的有_____。
①Call Sub1(S) ②Call Sub1(A) ③Call Sub2(A) ④Call Sub2(S)
A.①② C.②③
B.①③ D.②④
(6)名为sort的Sub子过程的形式参数为一数组,以下的定义语句中正确的是_____。
A.Private Sub sort(A() As Integer) B.Private Sub sort(A(10) As Integer) C.Private Sub sort(ByVal A() As Integer)
D.Private Sub sort(A( , ) As Integer)
(7)窗体的Name属性为Frm1,在窗体模块通用声明处和过程Sub1中分别用Public K As Integer, Dim K As Integer 声明了两个同名变量K,则在过程Sub1中要访问全局变量K,可采用_____。
A.Frm1.K C.Form1.K
B.Form.K D.K
(8)以下叙述中,错误的是_____。
A.一个Visual Basic程序中的任何一个代码段都可以直接引用全局变量
- 19 -
第6章 过 程
B.过程级变量的作用范围仅限于声明它们的过程中 C.Static类型变量可以在标准模块的声明部分定义 D.通用过程可以由用户定义过程名
(9)以下叙述中,错误的是_____。
A.如果过程被定义为Static类型,则过程中局部变量都是Static类型
B.在设计Visual Basic程序时,窗体、标准模块、类模块等需要分别保存为文件 C.全局变量必须在标准模块中定义
D.事件过程可以由用户定义过程名
(10)运行下面程序,当在窗体上单击一下后,窗体上显示的结果是_____。
Private Sub Sub1(x As Integer)
Static m As Integer m = m + x x = x + 1 Print m; End Sub
Private Sub Form_Click()
Dim I As Integer For I = 1 To 6 Sub1 I Next I End Sub
A.1 3 5 B.1 2 3 4 5 6 C.1 3 6 10 15 21 D.1 4 9
2、填空题:
(1)采用Function过程编写求其中的最大值程序。(产生10个两位随机整数) Option Explicit Option Base 1
Private Sub Form_Click( )
Dim A(10) As Integer
Dim I As Integer , Maxnumber As Integer For I=1 to 10 A(I)=___①___ Print A(I); Next I Print
- 20 -