- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《过程程序设计2)
实验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字符串,然后再返回判断
文档评论(0)