2024年2月8日发(作者:)
上 机 报 告
课程名称 计算机程序设计基础(VB)
专业班级
姓 名
学 号
上机题目
同组人数
成 绩
Function过程和Sub过程实验 实 验 室 机房
1
实验时间
指导教师
年 月 日
一、实验目的
1.掌握Function过程的定义和调用方法以及变量做函数参数的数据传递。
2.掌握子过程的定义和调用方法以及数组做函数参数的数据传递。
3. 掌握静态局部变量、局部变量、全局变量的定义和编程技巧。
二、实验内容(均要求给出运行结果)
(一)程序改错
第一题
【实验要求】
求s=2!+4!+6!+8!,阶乘的计算用Function过程fact实现。设计界面如图5-9(a)所示,单击窗体显示运行结果如图5-9(b)所示,将所给程序段中的错误修改正确并运行该程序。
图5-9(a) 运行初始界面 图5-9(b) 单击窗体运行结果界面
【实验步骤】
1. 编写事件代码:
Option Explicit
Private Sub Form_Click()
Dim i As Integer, s As Long
'**********FOUND**********
For i = 2 To 8
s = s + fact(i)
Next i
Print "2!+4!+6!+8!=";
Print s
End Sub
'**********FOUND**********
Public Function fact()
Dim t As Long
Dim i As Integer
t = 1
For i = 1 To n
t = t * i
Next i
'**********FOUND**********
fact = i
End Function
运行界面及程序清单:
第二题
【实验要求】
在下列程序段中,过程fb可以显示某个数字范围以内的菲波那契数列,现要求通过消息框输入一数字,利用该过程显示不超过该指定数字大小的菲波那契数列原素,运行界面如图5-10所示窗体,将所给程序段中的错误修改正确并运行该程序。
图5-10(a) 运行界面 图5-10(b) 数据输入窗口
【实验步骤】
1. 编写事件代码:
Option Explicit
Public Sub fb(x As Integer)
Dim i&, j%, k%
j = 1 :i = 1
Print i; j;
k = i + j
'**********FOUND**********
Do While k > x
Print k;
i = j:j = k
'**********FOUND**********
k = i - j
Loop
End Sub
Private Sub Form_Click()
Dim x As Integer
Cls
x = Val(InputBox("请指定显示范围"))
'**********FOUND**********
call fb y
End Sub
运行界面及程序清单:
(二)程序填空
第一题
【实验要求】
设计如图5-4(a)所示的窗体,程序运行时在5个文本框中输入5个整数后,单击“求最大值”按钮,求这5个数的最大值并显示如图5-11(b)所示,要求调用求3个数最大值的函数max,将所给程序段的【?】处填写完整并运行该程序。
图5-11(a) 设计界面 图5-11(b) 运行界面
【实验步骤】
1.界面设计
在窗体上添加5个文本框,Text1„ „ Text5,添加1个命令按钮Command1,各控件大小及位置关系如图5-11(a)所示。控件属性见表5-6。
表5-6 对象属性设置
对 象
Text1、Text2、Text3、
Text4、Text5
Command
属 性
Text
Alignment
TabIndex
Caption
TabIndex
属 性 值
空
1-Right Justfy
1、2、3、4、5
求最大值
6
2.编写事件代码:
'下面过程max()用于求3个数中最大值
Option Explicit
Public Function max(ByVal a%, ByVal b%, ByVal c%)
'**********SPACE**********
If 【?】 Then
m = a
Else
m = b
End If
'**********SPACE**********
If 【?】 Then
max = m
Else
max = c
End If
End Function
,利用max函数过程求5个数中最大值。
Private Sub Command1_Click()
Dim a%, b%, c%, d%, e%, max1%
a = Val()
b = Val()
c = Val()
d = Val()
e = Val()
max1 = max(a, b, c)
'**********SPACE**********
max1 =【?】
Print "5个数的最大值是:"; max1
End Sub
运行界面及程序清单:
第二题
【实验要求】
本程序利用二分法查找某数字n是否在已排序的数列当中,若在其中则输出其在数列中的位置,否则输出-1。程序运行结果如图5-12所示。根据程序功能将所给程序段的【?】处填写完整并运行该程序。
图5-12 二分法查找数据运行界面
【实验步骤】
1.界面设计
在窗体上添加1个标签控件Label1,1个文本框控件Text1,text属性值默认为空,1个命令按钮Command1,大小及位置关系如图5-12所示。
2.编写事件代码
Option Base 1
Sub birsearch(a(), ByVal low%, ByVal high%, ByVal key, index%)
Dim mid As Integer
mid = (low + high) 2
If a(mid) = key Then
'**********SPACE**********
【?】
Exit Sub
ElseIf low > high Then
index = -1
Exit Sub
End If
If key < a(mid) Then
'**********SPACE**********
high = 【?】
Else
low = mid + 1
End If
'**********SPACE**********
Call birsearch(a(), low, high, 【?】, index)
End Sub
Private Sub Command1_Click()
Dim b() As Variant, index As Integer
b = Array(5, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92)
Cls
Print "原数组:";
For i = LBound(b) To UBound(b)
Print b(i);
Next i
n = Val(Text1)
Call birsearch(b, LBound(b), UBound(b), n, index)
Print index
End Sub
运行界面及程序清单:
(三)编程题
第一题
【实验要求】
已知猴子吃一堆桃子,每天吃桃子总数的一半多一个。到第n天时,猴子发现只剩下一个桃子可吃。编写函数fun,根据n值求这堆桃子的数量,例如:n为7时,单击“求这堆桃子总数”按钮,窗体显示"190"如下图5-13(b)所示,要求使用 Loop语句来实现。
图5-13(a) 设计界面 图5-13(b) 运行界面
【实验步骤】
1.界面设计
在窗体上添加1个标签Label1,1个命令按钮Command1,其大小及位置关系如图5-13(a)所示。
2. 编写事件代码:
Option Explicit
Private Function fun(n As Long) As String
'**********Program**********
'********** End **********
End Function
Private Sub Command1_Click()
Print fun(7)
End Sub
第二题
【实验要求】
过程suixian可以判断某个数字是否是水仙花数,单击窗口利用该过程找出所有水仙花数。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。运行界面如图5-11所示。
图5-14(a)设计界面图 5-14(b)水仙花数运行结果界面
【实验步骤】
1.编写事件代码
Private Sub Form_Click()
Dim i As Integer
For i = 100 To 999
Call suixian(i)
Next i
End Sub
Public Sub suixian(x As Integer)
Dim i%, j%, k%
'**********Program**********
'********** End **********
If i * i * i + j * j * j + k * k * k = x Then Print x
End Sub
发布者:admin,转转请注明出处:http://www.yc00.com/web/1707385539a1500404.html
评论列表(0条)