1、1 简述子过程和函数过程的共同点和不同之处。答:子过程和函数过程的共同点:函数过程和子过程都是功能相对独立的一种子程序结构,它们有各自的过程头、变量声明和过程体。在程序中使用它们不但可以避免书写扫重复的程序语句,缩短代码,而且可以使程序条理清晰,容易阅读。子过程和函数过程的不同点:(1) 过程声明的关键字不同,子过程用的是 Sub,函数过程用的是 Function(2) 子过程名无返回值就无类型声明,函数过程名有值就有类型声明(3) 函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值;而子过程名在过程体内不能赋值。(4) 调用方式不同,子过程是一条独立的语句,可用 Call 子过程
2、名或省略 Call 直接以子过程名调用;函数过程不是一条独立的语句,是一个函数值,必须参与表达式的运算。(5) 一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数过程定义的形式,并在子过程的形参表中增加一个地址传递的形参来传递结果。2.什么是形参,什么是实参?什么是值引用?什么是地址引用?地址引用时,对应的实参有什么限制?答:形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个数、类型、位置,形参的名字并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。实参是调用子过程时提供给过程形参的初始值或通过过程体处理后获得的结果调用时用实参代替形参,实参与形参在个数、类型
3、、位置一一对应,实参与形参名相同与否无关。实参与形参的结合有两种方法,即传地址(BYRef)和传值(ByVal),或称地址引用和值引用,缺省为地址引用。值引用时,系统将实参的值传递给对应的形参,实参与形参断开了联系。如果在过程体中改变形参的值,不会影响到实参。地址引用时,实参与形参变量共用同一个存储单元,如果在过程中改变了形参的值,对应的实参也将发生改变。地址引用时,实参只能是变量,不能是常量或表达式。3.指出下面过程语句说明中的错误:Sub f1(n%) as integer 过程无类型Function f1%(f1%) 函数名和参数名不能相同Sub f1(Byval n%() 数组是地址传
4、递Sub f1(x(i) as integer) 数组元素不能做形参Sub f1 (f1%) 可以,但最好不要使用4 哪个是地址传递: B(A)Call F1(n+m) (B) Call F1(m) (C)Call F1(5) (D) Call F1(m+5)5.要想从子过程调用后返回两个结果,下面子过程语句说明合法的是 C(A)Sub f2(ByVal n%,ByVal m%)(B)Sub f1(n%,ByVal m%)(C)Sub f1(n%,m%)(D)Sub f1(ByVal n%,m%)6.在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用关键字在过程中定
5、义局部变量。 D(A) Dim (B) Private (C) Public (D) Static7.下面过程运行后显示的结果是 APublic sub F1(n%,ByVal m%)n=n mod 10m=m10End Sub Private sub command1_click()Dim x%,y%X=12:y=34Call F1(x,y)Print x,yEnd Sub(A)2 34 (B)12 34 (C)2 3 (D)12 38.如下程序,运行的结果是 CDim a%,b%,c%Public Sub p1(x%,y%)Dim c%x=2*X : y =y +2 : c =x+yEnd
6、 SubPublic Sub p2(x%,ByVal y%)Dim c%x=2*X : y=y +:2 : c=x+yEnd SubPrivate Sub Command1_Click()a =2 : b =4: c =6Call p1(a,b)Print “a=“;a; “b=“; b; “c=“;cCall p2(a,b)Print “a=“;a “b=“;b;“c=“;cEnd Sub(A)a=2 b =4 c =6 (B) a=4 b =6 c =10a =4 b =6 c =10 a =8 b =8 c =16(C) a=4 b=6 c=6 (D) a=4 b=6 c=14a=8 b
7、=6 c=6 a=8 b=8 c=69.如下程序的运行结果是 BPublic Sub Proc(a%()Static i%Do A(i)=a(i)+a(i+1)i=i+1loop while i ndo While mn : m=m-n : loopdo While nm : n=n-m : looploopf=mEnd FunctionPrivate Sub Command1_Click()Print f(24,18)End Sub7.将 100150 之间的偶数,拆分成两个素数之和(只要一对即可 ),最后输出格式如图 6.7 所示。其中:prime 函数判断参数 x 是否为质数。输出格式:
8、1:100=3+972:102=5+973:104=3+1014:106=3+103Private Function prime(ByVal x As Integer) As Booleanprime =(10) trueFor i=2 To Sqr(x) If (11) Then m mod i=0prime =FalseExit FunctionEnd IfNext End FunctionPrivate Sub Form_Click()I=1for n = (12) 100 to 150For k =3 To n/2If prime(k)= (13) then and prime(n-k)Print I; “:”;n;”=”;k;”+”;n-kExit forEndifNext k(14) i=i+1Next nEnd sub