第六章实习报告
第一部分:书上例题运行结果展示
例6-1求组合数Cnmn!的值,设m=6,n=10。
m!(nm)!
例6-2一个数组有10个整数元素,将第一个元素与最后一个元素对调,第二个与倒数第二个对调……,输出对调前后数组各元素的值。
例6-3编写求两个整数的最大公约数过程,在主程序中调用该过程求两个数的最大公约数,并根据最大公约数求最小公倍数。
例6-4分别用传地址方式和传值方式编写交换两个整数的过程并调用。
例6-5编写求一组整数平均值的过程,并在主程序中调用。
例6-6编写能获得一组整数的平均值、最大值和最小值的过程并调用。
例6-7求组合数Cnmn!的值,设m=6,n=10。
m!(nm)!
例6-8窗体级变量的作用范围示例
例6-9变量的作用范围综合示例。
例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 Sub Function myabs!(ByVal x!)
If x >= 0 Then
x = x
Else
x = -x
End If myabs = x End Function 3.编写函数过程Gdc求两个数的最大公约数。调用此函数试求1260、19
8、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), z)
Print \"三个数的最大公约数为:\" & z End Sub Function 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
Loop gys = n End Function 7.编程输出10000~99999之间的全部回文式素数。 运行结果如下:
代码录入如下:
Private Sub Command1_Click()
Dim i&, n&, x#
x = Timer
For i = 10000 To 99999
If hws(i) = True Then
If (i) = True Then
Print i;
n = n + 1
If n Mod 5 = 0 Then Print
End If
End If
Next i
x = Timer1) Mod 5) * 6); dg(i);
Next i
Print \"第20个数是\" & dg(20) End Sub Function dg#(ByVal m%)
If m >= 3 Then dg = dg(m2)
Else dg = 1
End If End Function 第三部分:简答题
1.Sub过程和Function过程的异同点是什么?
答:过程是一个具有某种功能的独立程序段,可供程序多次调用。对于一个具体问题,既可以使用Function过程,也可以使用Sub过程。但Sub过程与Function过程还是有区别的,Sub过程的过程名仅标识过程本身;Function过程的过程名除了标识过程本身以外,还有返回值的作用,因此,若过程有一个返回值时,则习惯使用Function过程,并通过函数名返回函数值;若过程不需要返回值或返回多个值时,则使用Sub过程;返回值通过实参与形参的结合带回,当然也可通过Function过程名带回一个结果,其余通过实参与形参的结合带回。
2.值传递与地址传递特点是什么?如何选择?
答:VB中形参与实参的结合有传值和传地址两种方式。数据传递按照地址方式传递。传值方式只能从调用程序向过程传入初值,但不能将结果传出;而地址传递即可传入又可传出。 实现传值和传地址对形参和实参的要求。在定义过程时在形参前加ByVal关键字或过程调用时变量加圆括号,数据传递按照传值方式;如果在形参前加ByRef关键字或省略(默认)或实参是数组、自定义类型、对象变量等,参数传递只能是地址传递。
3.在VB中,形参若是数组,问在过程体内如何表示其数组的上、下界?
答:传地址是VB默认的参数传递方式。在这种方式下,实参传给形参的是存储地址,使得形参与实参共用同一存储单元,因此,在过程中对形参的任何操作实质都是对相应实参的操作。参数传递时,当实参为变量时,把实参的地址传递给形参,使实参与形参共享同一存储单元段;当实参为数组时,把实参数组的存储地址传递给形参数组,使实参数组与形参数组共享同一存储区域。
4.在Form1窗体通用声明部分声明的变量,可否在Form2窗体中的过程被访问? 答:不可以。窗体(模块)级变量的作用域限制在声明它的窗体(模块)中,该窗体(模块)中的所有过程均可访问该变量,其它窗体(模块)则不能。
5.为了使某变量在所有的窗体中都能使用,应在何处声明该变量? 答:public 6.在同一模块、不同过程中声明的相同变量名,两者是否表示一个变量?有没有联系? 答:不表示。当变量名相同而作用域不同时,将优先访问作用域小的变量。
三.实习中遇到的问题 传值与传地址的区别及各种情况下的选择。
四.信心指数
★★★★