《VB第六章实验报告.docx》由会员分享,可在线阅读,更多相关《VB第六章实验报告.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章实习报告第一部分:书上例题运行结果展示例6-1求组合数的值,设m=6,n=10。例6-2一个数组有10个整数元素,将第一个元素与最后一个元素对调,第二个与倒数第二个对调,输出对调前后数组各元素的值。例6-3编写求两个整数的最大公约数过程,在主程序中调用该过程求两个数的最大公约数,并根据最大公约数求最小公倍数。例6-4分别用传地址方式和传值方式编写交换两个整数的过程并调用。例6-5编写求一组整数平均值的过程,并在主程序中调用。例6-6编写能获得一组整数的平均值、最大值和最小值的过程并调用。例6-7求组合数的值,设m=6,n=10。例6-8窗体级变量的作用范围示例例6-9变量的作用范围综合示
2、例。例6-10编程对键盘上输入的任意个数排序。例6-11判断一个整数是否是回文数。所谓回文数是这样的数,将这个数从左向右读和从右向左读值相等。如121就是回文数,345就不是回文数。例6-12设计一个数值转换函数,能够将十进制整数转换成16进制以内的任意进制数。例6-13利用递归调用计算n!第二部分:课后习题1 自定义一个与VB内部函数Abs功能完全相同的函数过程MyAbs,要求函数过程中不能调用VB内部函数Abs。运行结果如下所示:代码录入如下:Private Sub Command1_Click() Dim a! a = InputBox(请输入函数值) Print myabs(a)End
3、 SubFunction myabs!(ByVal x!) If x = 0 Then x = x Else x = -x End Ifmyabs = xEnd Function3编写函数过程Gdc求两个数的最大公约数。调用此函数试求1260、198、72三个数的最大公约数。运行结果如下所示:代码录入如下:Private Sub Command1_Click() Dim x%, y%, z% x = Val(InputBox(输入第一个数x为:) y = Val(InputBox(输入第二个数y为:) z = Val(InputBox(输入第三个数z为:) z = gys(gys(x, y),
4、 z) Print 三个数的最大公约数为: & zEnd SubFunction gys%(ByVal m%, ByVal n%) Dim r% Do r = m Mod n If r = 0 Then Exit Do Else m = n: n = r End If Loopgys = nEnd Function7编程输出1000099999之间的全部回文式素数。运行结果如下:代码录入如下:Private Sub Command1_Click() Dim i&, n&, x# x = Timer For i = 10000 To 99999 If hws(i) = True Then If
5、ss(i) = True Then Print i; n = n + 1 If n Mod 5 = 0 Then Print End If End If Next i Print x = Timer - x Print 过程所需时间为: & Format(x, 0.0000) & 秒End SubFunction ss(x&) As Boolean Dim i& a = Int(Sqr(x) For i = 2 To a If x / i = x i Then Exit For Next iss = i = a + 1End FunctionFunction hws(m&) As Boolea
6、n If Left(m, 1) = Right(m, 1) And Mid(m, 2, 1) = Mid(m, 4, 1) Thenhws = True Elsehws = False End IfEnd Function9思考将本章所有Sub过程用Funtion过程如何实现,而Function过程又如何用Sub过程实现呢?运行结果如下:代码录入如下:Private Sub Command1_Click() Dim i% For i = 1 To 20 Print Tab(i - 1) Mod 5) * 6); dg(i); Next i Print Print 第20个数是 & dg(20)
7、End SubFunction dg#(ByVal m%) If m = 3 Thendg = dg(m - 1) + dg(m - 2) Elsedg = 1 End IfEnd Function第三部分:简答题1. Sub过程和Function过程的异同点是什么?答:过程是一个具有某种功能的独立程序段,可供程序多次调用。对于一个具体问题,既可以使用Function过程,也可以使用Sub过程。但Sub过程与Function过程还是有区别的,Sub过程的过程名仅标识过程本身;Function过程的过程名除了标识过程本身以外,还有返回值的作用,因此,若过程有一个返回值时,则习惯使用Functio
8、n过程,并通过函数名返回函数值;若过程不需要返回值或返回多个值时,则使用Sub过程;返回值通过实参与形参的结合带回,当然也可通过Function过程名带回一个结果,其余通过实参与形参的结合带回。2. 值传递与地址传递特点是什么?如何选择?答:VB中形参与实参的结合有传值和传地址两种方式。数据传递按照地址方式传递。传值方式只能从调用程序向过程传入初值,但不能将结果传出;而地址传递即可传入又可传出。 实现传值和传地址对形参和实参的要求。在定义过程时在形参前加ByVal关键字或过程调用时变量加圆括号,数据传递按照传值方式;如果在形参前加ByRef关键字或省略(默认)或实参是数组、自定义类型、对象变量
9、等,参数传递只能是地址传递。3. 在VB中,形参若是数组,问在过程体内如何表示其数组的上、下界?答:传地址是VB默认的参数传递方式。在这种方式下,实参传给形参的是存储地址,使得形参与实参共用同一存储单元,因此,在过程中对形参的任何操作实质都是对相应实参的操作。参数传递时,当实参为变量时,把实参的地址传递给形参,使实参与形参共享同一存储单元段;当实参为数组时,把实参数组的存储地址传递给形参数组,使实参数组与形参数组共享同一存储区域。4. 在Form1窗体通用声明部分声明的变量,可否在Form2窗体中的过程被访问?答:不可以。窗体(模块)级变量的作用域限制在声明它的窗体(模块)中,该窗体(模块)中的所有过程均可访问该变量,其它窗体(模块)则不能。5. 为了使某变量在所有的窗体中都能使用,应在何处声明该变量?答:public6. 在同一模块、不同过程中声明的相同变量名,两者是否表示一个变量?有没有联系?答:不表示。当变量名相同而作用域不同时,将优先访问作用域小的变量。三实习中遇到的问题传值与传地址的区别及各种情况下的选择。四信心指数
限制150内