【实验要求】
1. 单击窗体后在窗体上打印出杨辉三角形。
2. 分别将“杨辉三角形”打印成图4-4(a)和图4-4(b)两种形式。
图4-4(a) 杨辉三角形 图4-4(b) 金字塔的状的杨辉三角形
【实验步骤】
1.在窗体的Click事件过程中编写代码。 2.运行程序。 提示: 1.算法分析。
把杨辉三角形看成是一个二维数组a(10,10),其中:第一列与对角线上的元素都为1,即a(i,1)、a(i,i)均为1;其余元素正好等于它上一行的同一列与前一列元素之和,即:
a(i,j)=a(i-1,j-1)+a(i-1,j)
注意:使用该公式求元素值时,凡是a(i,i)右边的部分可以认为它们都等于0。 2.把“杨辉三角形”打印成金字塔的形状时,要注意如下两点:
①在每一行输出之前可使用Spc()函数或Tab()函数进行定位,每一行打印的起始列号与行号成反比,例如,可使用定位语句:
Print Tab(15-行号);
②为控制元素之间的距离,可使用以下格式输出语句打印元素:
Print Format(a(i, j), \ \
实验4.5 设计一个如图4-5所示的算术表达式生成器。 【实验要求】
1.将界面上的所有按钮设计成一个控件数组。
2.单击每一个命令按钮都能够将该按钮的Caption属性值添加到文本框中,成为表达式的一个组成部份。
【实验步骤】 1.界面设计。
(1)创建一个标签与文本框,如图4-5所示。
(2)建立控件数组:在窗体中添加一个名为Command1的命令按钮首控件,把其Index属性值设置为0。选中该控件,进行控件的“复制”和“粘贴””操作。依次把各控件的Caption属性值设置为“0”、“1”、“2”、…,“/” 等,并把它们的位置按图4-5的形式排列好。
- 16 -
2.在命令按钮控件数组的Click事件过程中编写代码。 3.运行程序。
提示:要实现本题所要求的功能只需编写如下代码: Private Sub Command1_Click(Index As Integer) Text1 = Text1 & Command1(Index).Caption End Sub
图4-5 实验4.5运行界面
实验4.6 建立一个学生信息管理程序,如图4-6所示。 【实验要求】
1.利用自定义数据类型及其数组模拟学生信息库。
2.通过三个文本框输入一条学生记录,包括学号、姓名与成绩,然后点击“新增记录”命令按钮后,将输入的学生记录在一个图形框中输出。
3.点击“求平均分”按钮后,在图形框中输出所有学生的平均成绩
图4-6 实验4.6运行界面
【实验步骤】
1.界面设计如图4-6所示。
2.分别在两个命令按钮的Click事件过程中编写相应的功能代码。
- 17 -
3.运行程序,分别在文本框中输入若干条记录。 提示:
1.自定义数据类型的定义应在窗体的通用模块或在一个标准模块中进行,例如:
Private Type student num As String * 10 name As String score As Integer End Type
2.学生记录数组的定义应在窗体的通用模块中进行,以便能在多个过程中使用,例如: Dim stu(10) As String As student,sp As Integer
其中,sp为记录数组的下标变量,其初值为0或1,每新增一条记录后对其加1。 实验4.7 对一个整型数组(假定有10整数)按从小到大进行排序,并将一个整数插入到该数组中,使该数组仍然有序,如图4-7所示。
【实验要求】
1. 定义一个数组,使用InputBox()函数输入10个整数,并在图形框Picture1中输出。 2. 对输入的10个整数进行从小到大排序,在图形框Picture2中输出排序结果。 3. 把指定的整数插入到合适的位置,在图形框Picture3中输出插入后的整数。 4. 先使用静态数组编写代码,运行成功后,再用动态数组修改代码。
图4-7 实验4.7运行界面
【实验步骤】
1.在窗体中添加三个图形框Picture1~Picture3,三个命令按钮Command1~Command3,一个文本框Text1,以及四个标签。
2.在三个命令按钮中分别编写相应的功能代码。 提示:
1.将n个数排序可以采用选择法或冒泡法。具体步骤参见课本4.2.1例4.3。 2.有两种插入算法:
(1)首先要找到插入的位置k(1≤k≤n),然后从n到k逐一往后移动一个位置,将
- 18 -
第k个元素的位置腾出,最后将数据插入。
(2)首先用插入的数x与最后一个元素a(n)比较,如果x>a(n),则将x插入到a(n+1)中。否则将a(n)移到a(n+1)中,再用x与a(n-1)比较,若x>a(n-1),则将x插入到a(n)中,否则将a(n-1)移到a(n)中,重复上述操作,直到把x插入到合适的位置为止。
实验五 过程
一、实验目的
1.掌握自定义函数过程和子过程的定义和调用方法。 2.掌握形参和实参的对应关系。 3.掌握值传递和地址传递的传递方式。 4.掌握变量、函数和过程的作用域。 5.掌握递归概念和使用方法。 6.熟悉程序设计中的常用算法。
二、实验内容
实验5.1 编写一个子过程,求任意三个正整数之和。 【实验要求】
1.A,B,C分别为所给出的三个数,这三个数由三个Text文本框任意给出。 2.求和过程为Sum,其形式为: Sub Sum(a%,b%,c%,sansum%)
在主调程序中输出所求的和,并放置在第四个文本框中。运行界面如图5-1所示。 3.想一想,参数a,b,c,sansum是用值传递还是地址传递呢?
图5-1 实验5.1的运行界面
【实验步骤】
1.按图5-1设计用户界面,将七个标签分别放置在窗体中的适当位置,并分别修改它们的Caption属性,再将四个文本框和一个按钮放置到窗体中。
- 19 -
2.在代码窗口中编写Sum(a%,b%,c%,sansum%)过程。
3.在命令按钮的Click事件过程中调用Sum(a,b,c,sansam)过程,并将参数Sansam的值赋给Text4.text。
实验5.2 编写一个函数,判断输入的整数是偶数还是奇数并输出结果。
图5-2 实验5.2的运行界面
【实验要求】
1.编一个函数过程Isou(n),对于已知正整数n,判断该数是否是偶数,函数的返回值类型为Boolean,即其格式为:
Function Isou(n As Integer) As Boolean
2.用户在文本框中每输入一个数并按下回车后,调用Isou函数过程,然后在图形框中显示输入的数,对于是偶数的在其后面显示一个“★”,如图5-2所示运行界面。
【实验步骤】
1.按图5-2设计用户界面,包括两个标签、一个文本框和一个图形框。 2. 在代码窗口中编写函数Isou(n As Integer)。
3.用文本框的Keypress事件过程作为主调程序,每次回车都调用Isou函数过程,并用Print方法将结果显示在图形框中。
提示:判断一个数是否为偶数的方法是将该数与2相除取余,若余数为0则这个数是偶数,否则是奇数。
实验5.3 编一过程,求一维数组a中的最大值。 【实验要求】
1.子过程名为Promax,其形式为:
Sub ProMax(a() As Integer,Max As Integer)
2.主调程序随机产生10 个300~400之间(包括300和400)的整数,要求每次执行时所产生的随机数序列不相同,然后调用ProMax子过程,显示数组元素及其最大值,如图5-3所示。
图5-3 实验5.3的运行界面
- 20 -