文档详情

[过程程序设计.doc

发布:2017-01-03约1.91万字共27页下载文档
文本预览下载声明
实验7 过程程序设计 实验目的: 掌握通用过程的定义和调用 掌握函数过程的定义和调用 掌握通用过程的递归调用 掌握实参和形参按值传递和按地址传递的不同用法,明确不同实参数据类型具有的不同传递形式 明确过程级、窗体级和模块级变量的作用域和特点,能够根据具体情况使用全局和局部变量 掌握Sub过程调用时的两种格式,语句格式和命令格式 实验7.1求最大最小值 实验任务: 分别编写子过程Min(a() As Integer,m As Integer)和函数Max(a() As Integer) As Integer,子过程用于求一维数组a中的最小值,函数用于求其最大值。要求: 1.主调程序随机产生10个200~300之间的整数,调用子过程和函数后,在主调程序中显示最小值和最大值。 2.子过程和函数中不允许有多余的参数 实验7.2成绩排序 实验任务: 编程排列八名运动员100米径赛成绩的名次。当成绩相同时,运动员的名次相同。1至8号运动员的成绩分别为:12.12,11.25,11.13,10.89,14.09,13.56,12.01,11.13。 提示:本题的解决难点并不在排序,我们可以很轻松地用冒泡排序法或选择排序法进行成绩从小(快)到大(慢)的排列。问题是排序后的成绩对应于哪一个运动员,恐怕用一维数组是无法记录的。因此我们可以定义一个二维数组cj(8, 2) As Single,其中第一列存放运动员的成绩,第二列存放成绩对应的运动员号。 排序针对数组的第一列进行,产生交换时不仅要交换第一列的数组元素,还要交换对应的第二列的数组元素,这样运动员的编号就能跟着成绩“跑”了。 在输出名次时也要注意成绩相同名次相同的问题,在这里名次并非简单地和一维下标一致。所以应该定义两个变量p和j,p表示名次,j表示有几个人(从1到8)。当没有重复成绩时,p和j一样(1-8名);当有重复成绩时,p值就不变,保持前一个人的名次,直到出现不同成绩,p值又与j值一样了。 名次的计算还有其他方法,这里只介绍了这种较为简单的算法。 实验步骤: 1.按照图7-1进行界面设计,运动员成绩在列表框1的List属性中输入,如图7-2所示,排名结果在列表框2中输出。 2.完善程序: Option Explicit Private Sub Command1_Click() Dim cj(8, 2) As Single Dim i As Integer, k As Integer Dim pro As String List2.Clear For i = 1 To 8 cj(i, 1) = List1. 从列表框中取出运动员的成绩 cj(i, 2) = i Next i Call Sort(cj) Call OutPut(cj) End Sub Private Sub Sort(cj() As Single) Dim temp As Single, i As Integer, j As Integer 填入一段排序程序代码。注意交换运动员 ____________________ 成绩的同时,也要交换运动员的号码。 End Sub Private Sub OutPut(cj() As Single) Dim j As Integer, p As Integer p = 1 List2.AddItem 第1名: cj(1, 2) 号 成绩: cj(1, 1) For j = 2 To 8 If Then List2.AddItem 第 p 名: cj(j, 2) 号 成绩: cj(j, 1) Next j End Sub Private Sub cmdExit_Click() End End Sub 3.保存文件,调试运行。 实验7.3删除字符串 实验任务: 编一子过程DeleStr(s1,s2),将字符串s1中出现的s2子字符串删去,结果还是存放在s1中。 例如:s1AABBDFGl2345,s2=234,结果:s1=15678AAABBDFGl5 提示: 1.在s1字符串找s2的子字符串,可利用InStr()函数,要考虑到s1中可能存在多个或不存在s2字符串,用Do While Instr(s1,s2)0循环结构来实现。 2.若在s1中找到s2字符串,则通过Left()、Mid()函数的调用实现删除s1中存在的s2字符串,然后再返回判断
显示全部
相似文档