《vb课后练习答案习题解答 (6).doc》由会员分享,可在线阅读,更多相关《vb课后练习答案习题解答 (6).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中华IT学习网 官方总站:圣才学习网第7章 过 程71 填空题1 一个VB应用程序可以包括的三种模块是:( )、( )和( )模块。答案:窗体模块、标准模块、类模块2函数过程定义中至少有一个赋值语句把表达式的值赋给( )。答案:函数过程名3在VB中,过程定义中有两种传递形式的参数:一种是( ),称为传值调用;另一种是( ),称为传址调用。答案:传值参数、传址参数4 若模块中以关键字public定义子过程,则在( )中都可以调用该过程。答案:整个应用程序5若窗体模块或标准模块中以关键字private定义函数过程,则该函数过程只能在( )中使用。答案:该窗体模块或标准模块6每一个用标识符定义的变量
2、、常量、过程都有一个有效范围,这个范围称为标识符的()。答案:作用域7在模块内定义的过程,若在关键字sub或Function加前缀Public,则该过程称为()。答案:全局级过程或工程级过程8 过程中定义的静态变量作用域是(),生存期是()。答案:该过程内、整个应用程序运行结束之前72 选择题1标准模块中的代码存放在以( )为扩展名的文件中。a).frm b).bas c).cls d).txt 答案:b2( )不能在标准模块中定义。a)事件过程 b)子过程 c)函数过程 d)公共过程答案:a3设已定义子过程p,有3个数值型传值参数;设a为实型变量,调用该子过程的正确语句为( )。a) p b
3、) call p 0.5, a, 100 c) call p ( 0.5, cos(0.1), a+10 ) d) p ( 0.5, 1.2, 100 )答案:c4.设已定义函数过程f,它有三个实型传值参数;设a,b和c为实型变量,则调用该函数的正确语句为( )。a)f b) f( a+b, b+c )c)f ( a+b, b+c ,c+a ) d) f a+b, b+c, c+a答案:c5在过程体中退出子过程的语句是( )。a) Exit Do b) Exit Forc) Exit Sub d) Exit Function答案:c6在过程的形式参数的前面加上关键字( ),则该参数说明为传值参
4、数。 a) Val b) ref c) Byref d) ByVal答案:d7关于过程作用域,错误的描述是( )。a) 全局级过程的作用域为整个工程。b) 在某一窗体模块中定义的全局级过程,若被该模块外的模块所调用,必须在该过程名前加上窗体名称。c) 在不同模块中定义的模块级过程可以同名。d) 模块级过程与工程级过程不能同名。答案:d8关于变量的作用域,正确的描述是( )。a) 在模块内定义的变量,其作用域必定为所在模块。b) 同一模块中不同级的变量不能同名。c) 同一模块中所有在过程之外用Dim定义的变量为全局变量。d) 不同模块中定义的变量名字可以相同。答案:d9当鼠标在窗体上移动时,会发
5、生( )事件。a) MouseDown b) MouseUpc) MouseMove d) DragDown答案:c10当某个对象具有焦点时,在键盘上按下某一键时就会发生( )事件。a)KeyPress b)KeyUp c)KeyDown d)DragDown答案:a、c11当用户( )时,会引发焦点所在对象的KeyPress事件。a) 在键盘上按下有ASC码的键 b) 释放键盘上有ASC码的键c) 单击鼠标左键 d) 单击鼠标右键答案:a12当用户在键盘上按下一个有ASC码的键时会发生( )事件。a) KeyPress和 KeyDown b) KeyPress 和KeyUpc) KeyDow
6、n和 KeyUp d) KeyPress和 KeyMove答案:a73 解答题1过程的主要作用是什么?VB有什么类型的自定义过程?试举例说明。答:过程的主要作用有两个:一是任务划分。即把一个复杂的任务划分为若干个小任务,每个小任务可以用过程来完成,从而使任务更易于理解,易于实现和维护;二是代码重用。各种复杂的任务常常包含一些完全相同或非常相近的小任务。把这些小任务独立地编成公用的过程,由各个任务调用,这样的做法可以避免重复的编程劳动。 在VB6中,有下列4种类型的自定义过程:1)以关键字Sub开头的子过程;2)以关键字Function开头的函数过程;3)以关键字Property开头的属性过程;
7、4)以关键字Event开头的事件过程;在教材中只介绍子过程和函数过程两种自定义过程。例如,Private Sub fact(Byval n As Integer,Byref fac As Long) Dim t As Long,i As Integer t=1 For i=1 To n t=t*i Next i fac=tEnd Sub是一个求n的阶乘子过程。又如,Private Function max(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer)If x y Then max = x Else max = yIf z
8、 max Then max = z End Function是一个求三个数x、y和z最大值的函数过程。2传值参数和传址参数的主要作用是什么?在调用过程进行参数传递时,它们之间有什么区别? 答:传值参数的主要作用是把需处理的原始数据传送给被调用过程的形式参数。传址参数的主要作用是把调用过程后的结果传递回给调用程序。对传值参数来说,在调用过程进行参数传递时,是把实际参数的值直接传送给相应的传值参数。值传送完之后,传值参数与相应的实际参数之间毫无任何联系。即在调用过程时,传值参数的改变不会引起相应实际参数的改变。对传址参数来说,在调用过程进行参数传递时,是把实际参数的地址传送给相应的传址参数。调用过
9、程时,对传址参数的任何操作都是对相应的实际参数进行。即在调用过程时,传址参数的改变会引起相应实际参数的改变。74 阅读程序,并写出程序的运行结果。1Private Sub p(ByVal i As Integer) Dim j%, k% For j = 0 To 7 - i Print ; Next j For k = 0 To 2 * i - 1 Print *;Next k Print End Sub Private sub command1_Click() Dim i% For i = 1 To 2 P(i) Next i For i = 3 To 1 Step -1 P(i) Next
10、 i End Sub答案: * * * * *2. Private Sub Command1_Click()Dim m%m = max(35, -21, 480)m = max(max(m, 75, 100), 380, 28)Print max=; mEnd SubPrivate Function max(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer)If x y Then max = x Else max = yIf z max Then max = z End Function答案: max=4803Private
11、Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer Call s(10, 5, a) Call s(7, a, b) Call s(a, b, c) Print a=; a, b=; b, c=; cEnd SubPrivate Sub s(x As Integer, y As Integer, z As Integer) z = y xEnd Sub答案: a=-5 b=-12 c=-74. Private Sub Command1_Click() Dim i% Const n = 10 Dim a(1 To n
12、) As Integer Randomize For i = 1 To n a(i) = Int(Rnd * 100 + 1) Print a(i), If i Mod 4 = 0 Then Print Next i Print Call s(a, n)End Sub Private Sub s(a() As Integer, ByVal n As Integer) Dim i%, k% For i = 1 To n If a(i) Mod 3 = 2 Then If k Mod 4 = 0 Then Print Print a(i), k = k + 1 End If Next i End
13、Sub答案:输出10个1100之间的随机整数,并把其中能被3除余2的数输出。5. Public x As Integer Private Sub Command1_Click() x = 10 : Print x Call s1 : Print x Call s2 : Print x End Sub Private Sub s1() x = x + 20 : Print x End Sub Private Sub s2() Dim x As Integer x = x + 20 : Print x End Sub答案: 10 30 30 20 306. Private Sub Command1
14、_Click() s3 (1): s3 (1): s3 (1) End Sub Private Sub s3(ByVal a As Integer) Dim x As Integer Static y As Integer x = x + a: y = y + a Print x=; x, y=; yEnd Sub答案: x=1 y=1 x=1 y=2 x=1 y=375 编程题 3,其中f(t)= (1+e)/(1+e),求g(2.5,3.4),g(1.7,2.5)和g(3.8,2.9)的值。解答:(1)界面设计和属性设置在窗体上建立三个标签、三个文本框和两个命令按钮。窗体和窗体上控件的主要
15、属性设置如表3.7.3所示。 表3.7.3 属性设置 控件名称 属性名 属性值 Form1 Caption计算函数值 Label1 Caption x= Label2Caption y= Label3 Caption 空串 Text1 Text 空串 Text2 Text 空串 Text3 Text 空串 Command1Caption 计算 Command2 Caption 结束(2)程序代码Private Sub Command1_Click() Dim x!, y! x = Val(Text1.Text) y = Val(Text2.Text) Label3.Caption = g( &
16、 Str(x) & , & Str(y) & )= Text3.Text = Str(g(x, y)End SubPrivate Sub Command2_Click() EndEnd SubPrivate Function f(ByVal t!) As Single f = (1 + Exp(-t) / (1 + Exp(t)End FunctionPrivate Function g(ByVal x!, ByVal y!) As Single If x = y Then g = f(x + y) / (f(x) + f(y) Else g = f(x - y) / (f(x) + f(y)
17、 End IfEnd FunctionPrivate Sub Text1_Click() Text1.Text = : Text2.Text = : Text3.Text = Label3.Caption = End Sub(3)运行情况运行程序后,屏幕出现用户界面。把鼠标移到Text1文本框并单击,然后输入x(例如,2.5)。再把鼠标移到Text2文本框并单击,然后输入y(例如,3.4)。x和y输入后,单击标题为“计算”的命令按钮,系统执行相应的Click事件过程。执行结果如图3.7.3所示。求g(1.7,2.5)和g(3.8,2.9)的操作方法类似。单击标题为“结束”的命令按钮,结束程序的
18、执行。 图3.7.3 执行结果4给定三组已按升序排列好的整型数据,使用过程编写程序把它们合并为一组仍能按升序排列的数据。解答:(1)界面设计和属性设置在窗体上建立四个标签、四个文本框和两个命令按钮。窗体和窗体上控件的主要属性设置如表3.7.4所示。 表3.7.4 属性设置 控件名称属性名 属性值 Form1Caption把三组升序数据合并为一组升序数据 Label1Caption 第一组: Label2Caption 第二组: Label3 Caption 第三组: Label4 Caption 合并后: Text1Text 空串 Text2 Text 空串 Text3Text 空串 Text
19、4TextMultiLineScrollBars 空串 True 1 Command1Caption 合并 Command2 Caption 结束(2)程序代码Option ExplicitOption Base 1Dim a As Variant, b As Variant, c As VariantPrivate Sub Form_load() Dim i% a = Array(1, 2, 7, 8, 9) For i = 1 To 5 显示数组a的元素值 Text1.Text = Text1.Text & Str(a(i) Next i b = Array(3, 4, 8, 8, 9,
20、10, 12, 12) For i = 1 To 8 显示数组b的元素值 Text2.Text = Text2.Text & Str(b(i) Next i c = Array(1, 5, 5, 6, 8) For i = 1 To 5 显示数组c的元素值 Text3.Text = Text3.Text & Str(c(i) Next iEnd SubPrivate Sub Command1_Click() Dim i%, m%, n%, p% m = UBound(a) n = UBound(b) p = UBound(c) Dim d() ReDim d(m + n) Call gsort
21、(a, b, d) Dim e() ReDim e(m + n + p) Call gsort(c, d, e) For i = 1 To m + n + p 显示数组e的元素值 Text4.Text = Text4.Text & Str(e(i) Next iEnd SubPrivate Sub gsort(x As Variant, y As Variant, z As Variant) Dim i%, j%, k%, n1%, n2% i = 1: j = 1: k = 1 n1 = UBound(x): n2 = UBound(y) While i = n1 And j y(j) Th
22、en z(k) = y(j): k = k + 1: j = j + 1 比较x和y中的元素,把较大的元素移到 Else z中,直到其中一个数组搬空为止 z(k) = x(i): k = k + 1: i = i + 1 End If Wend While i = n1 z(k) = x(i): i = i + 1: k = k + 1 把x中剩余的元素搬到z中 Wend While j = n2 z(k) = y(j): j = j + 1: k = k + 1 把y中剩余的元素搬到z中 WendEnd SubPrivate Sub Command2_Click() EndEnd Sub(3
23、)运行情况运行程序后,屏幕出现用户界面,并把需合并的三组数据分别在三个文本框中显示出来。单击标题为“合并”的命令按钮,系统执行相应的Click事件过程。执行结果如图3.7.4所示。单击标题为“结束”的命令按钮,结束程序的执行。 图3.7.4 执行结果10结结 .图 行的束,命束为题。. 图行。 应执,令”“为。出框本在数的合,户现屏后情行 ( _ 到元余 :+ ) 到元剩 + = = ) = :(= ( 为空个其, 移元较素中和比 :( = ) = = ,% , ) 素素组显 ,( + + ( , ( ( , ( )( . 素元数 = , ,( )( & = . 素元组 = 0, , ) (
24、& = . 素的数示 = , = (_ 代代结 合 空 空空 空 空 后 组第 组 组第 数序为合升 性属性名名设属 .表 示 .表设要控体体按个两个签个立设设和答据据序升一并把写程使型的排已组结执 . 行执程钮命的结击似方操. .和. 求. 图执程事 执系令”算题单输 ),如输然单框 鼠把 后击单 移标界用屏,情行 = . = . = ( )( = )+ ) = ;= ) 0 - ( * * * * * - ( _ - = 果结的写,读变的际应会改数传用即进数应相操任址对时调址的相址参实,传进用调数变改际相会不的值过用系任毫数际与值后送。值应送传数实是递参程在说序用回传后过把要主传参的程给据
25、数处是要数值 别么间它递参进调么用主参和值程过值最 数求 = 程子阶 = *= = , 程过种程和子只程程头 关程程头 关程数头 关程过开 关程义自种下, 动动复避可样,任各程公地务任这小近非全一含务的种码是维和易解更而成程用任每任干分务杂个。任:两要程明例试程自么 是主答解: ) 件件 会码 一下键用:右鼠 键鼠的码 盘 键 上件事 的对发会 户当、 件事 生就一按上,有象当: 件事 生会移窗标:同以名的中块量局量的 外程有中名能不同块同块模为用其的定在) 描正用的于:名同程工程模名同程块义块同称体上程过必所模块被,全定中体某程工域作级) 描误用程: ) ) ) )数值明参, (关面数形程:
26、 ) )(句程出体:+ + + + ( ) 句的该调,为 数值个它过函已: , ,. ,0( 0( 00 . ) (语的子调变为;值型 子已:过共 数 程) 过义中模标 : ) . . 中文的) 存的块择 之结序应、程该)期存(量静义过级程级)为该则 缀加 关程的块用作)的为围这范个都量量的识个模准块体用中 (只数该过数定 字以模或模程应程过以都 ,子定 字关参址数用址称) 是;值传 (数的传两定过中程数函) (给达句语有少程数模类块、窗块) ( 是种的以程 一空 . 0. 学:方 . 0 网 华 的种 窗类程句(函中定的 值)址参 , 程应模 该(中块识量都为)块程 加则程静程应 的 ) .
27、 :标模过 :子 ;的( 0 0 , 已过数为该句) ( +:( 形关 数) ) 误 作工体全模所上同程名程同于正)其用块不有外局中名标移 :有按就事 户 的 上键盘的 鼠用 件 ) 解主么试要任个干任成更和种含非小务各样复动下自关程 程 头子种过 , = 最程和主参它么数处给的主传序说是数值送际毫用不际变进实址址址操数用改的读写 * * 0 = , = =( = ( ) 0其数 = : 0 : ( , = = 其 + .).设立标框件设示 性件 数 空 计 序 . . ,)= ( + ( ) ) ( =. ,用 单 输)单题令 图. 方结命程 .执组使写升据设立个体体表 表名属 为 第 组 第 空 合 结代 ( . ) , = 元 ) , 素 , ( (+ 显 , = = 素移 空( 剩到 + 元 _ 行现户的出“, 行.题,束 图 . 0. 学圣站 0 中华IT学习网 官方总站:圣才学习网