VB第+7课函数过程练习答案.docx
《VB第+7课函数过程练习答案.docx》由会员分享,可在线阅读,更多相关《VB第+7课函数过程练习答案.docx(5页珍藏版)》请在冰豆网上搜索。
VB第+7课函数过程练习答案
第6章过程与函数
一、填空题
1.数组名作为过程或函数实参,相应的形参传递方式为________。
2.一维长整型数组a作过程形参写作:
a()AsLong,二维长整型数组b作过程形参写作:
________。
3.过程形参为整型,对应实参为5.64,传递给形参的值为________。
4.调用过程时对形参的改变不会导致相应实参变量的改变,则该形参采用________方式。
5.调用过程时对形参的改变就是对相应实参变量的改变,则该形参采用________方式。
6.声明Single类型全局变量x,写作________;声明Integer类型静态变量x,写作________。
7.在窗体Form1的过程中引用窗体Form2中的全局变量y,写作________。
8.阅读如下代码,单击窗体后,窗体上的显示结果为________。
DimiAsInteger,nAsInteger
PrivateSubForm_Click()
DimiAsInteger
Fori=1To3
s=sum(i):
Print"s=";s;
Nexti
EndSub
PrivateFunctionsum(nAsInteger)
StaticjAsInteger
j=j+n+1:
sum=j
EndFunction
二、选择题
1.VB程序设计语言中,函数过程与子过程必须分别用关键字()声明。
(A)Private,Public(B)Public,Private
(C)Function,Sub(D)Sub,Function
2.要调用一个已经定义好的函数myfunction(),用语句的方式调用函数,下列写法哪个是正确的()
(A)Callmyfunction(B)myFunction
(C)myFunction()(D)CallmyFunction()
3.定义过程时,如果在过程名前加关键字Private,则该过程为()。
(A)它是私有过程,仅在定义该过程的模块内有效,模块内的过程可以调用该过程
(B)它是公有过程,在整个工程内有效,模块外的过程可以调用该过程
(C)它是私有过程,在整个工程内有效,模块外的过程可以调用该过程
(D)它是公有过程,仅在定义该过程的模块内有效,模块内的过程可以调用该过程
4.在过程中用Dim保留字定义的变量是()
(A)全局变量(B)局部变量(C)静态变量(D)以上都不是
5.防止递归函数进入死锁的机制是()
(A)在适当的条件下返回(B)通过Stop语句终止递归调用
(C)通过End语句终止递归函数(D)不需要返回
6.关于函数与子程序的关系,下面说法正确的是()
(A)函数执行完后将得到一个返回值,而子程序只是执行一系列动作
(B)函数可以不带参数,而子程序必须带参数
(C)在函数中只用到传地址的方式,而子程序只能用到传值方式
(D)子程序可以被其他子程序调用,而函数不能被其他函数调用
7.VisualBasic6.0中缺省的参数传递机制是()
(A)传值(B)传址(C)传值和传地址(D)从实参到形参
8.使用()语句可以实现过程的特殊出口。
(A)PublicSub/Function(B)Call过程名
(C)ExitSub/Function(D)PrivateSub/Function
三、思考题
1.静态变量和动态变量的区别是什么?
2.函数过程与子程序过程有什么区别?
3.子过程调用有哪几种形式?
4.什么是形参?
什么是实参?
什么是值引用?
什么是地址引用?
对应的实参有没有限制?
5.怎样引用其他模块的过程和变量?
6.编制通用函数过程,计算Double类型一维数组所有元素的平均值。
7.编制通用Sub过程,将Single类型一维数组反序排放(如实参数组元素依次为6、5、9、7,调用后为7、9、5、6;若为-3.2、4、2.6、31、7.3,调用后为7.3、31、2.6、4、-3.2)。
8.编制通用Sub过程,在一个m行n列二维数组中查找绝对值最大的元素,以及该元素的行号、列号(提示:
Sub过程的形参列表如x()AsSingle,mAsbyte,nAsByte,xmaxAsSingle,kiAsByte,kjAsByte)。
9.输出100—300间的素数,要求:
(1)用函数判断素数。
(2)每行输出10个数。
10.设计一个将一维数组按降序排列的子过程(假设数据个数不知道),然后编程:
(1)自动产生并输出100个[100,999]间的正整数,并要求每行输出10个数据。
(2)调用该过程对数据按降序排列后再按每行10个输出。
1.按地址传递2.b()AsLong3.64.按值传递5.按地址传递6.PublicxAsSingle(或Publicx!
)、StaticxAsInteger(或Staticx%)7.Form2.y8.s=2s=5s=9
2.选择题:
1.C2.D3.A4.B5.A6.A7.B8.C
6-3-7解答:
PrivateSubForm_Click()
Dima()AsSingle
ReDima(10)
Print"反序前:
"
Fori=1To10
a(i)=Rnd*201-100
PrintFormat(a(i),"###.##");
Nexti
Print
Callinver(a(),10)
Print"反序后:
"
Fori=1To10
PrintFormat(a(i),"###.##");
Nexti
Print
EndSub
PrivateSubinver(a()AsSingle,nAsInteger)
DimiAsInteger,tAsSingle
Fori=1Ton\2
t=a(n-i+1)
a(n-i+1)=a(i)
a(i)=t
Nexti
EndSub
6-3-8解答:
6-3-9解答:
PrivateSubForm_Click()
s=0
Fori=100To300
Ifprime(i)Then
Printi;:
s=s+1
IfsMod10=0ThenPrint
EndIf
Nexti
EndSub
PrivateFunctionprime(x)AsBoolean
Ifx<2Then
prime=False
ExitFunction
EndIf
k=Sqr(x)
Fori=2Tok
IfxModi=0Then
prime=False
ExitFunction
EndIf
Next
prime=True
EndFunction
6-3-10解答:
PrivateSubForm_Click()
DimiAsInteger,nAsInteger
Dima(100)AsInteger
Print"排序前:
"
Fori=1To100
a(i)=Int(900*Rnd()+100)
Printa(i);
IfiMod10=0ThenPrint
Nexti
Print
Print"排序后:
"
Callss(a(),100)
Fori=1To100
Printa(i);
IfiMod10=0ThenPrint
Nexti
EndSub
PrivateSubss(a()AsInteger,nAsInteger)
Fori=1Ton-1
Forj=i+1Ton
Ifa(i)t=a(i):
a(i)=a(j):
a(j)=t
EndIf
Nextj
Nexti
EndSub