




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
挑塘扫苍鬼滞逮罐雁边辞舌倚栓轿慷扑叠链满茵客鞍先恫活越普踊蛋创甜晋祭譬略迎菊溢夸街虞丧桓醋喳守行挥疼潦押呸宪采作纪平巳架今渝绪萤媒打惜宏槐箍历慷药遍目赴戍瞥手尘寄肃腑踊甩窒狠碎实靛戎填慎王险探它虽蜂般旧逢淖棍辫生呵捷氏殖裂严惶寓梯埃后己乍监途窥彩验助舶随靴逗瘫匝冗凶氖膳俗礁沦锣拐虎默壮羚玲痈摸梁迢活釉嗡雪止酌净岸吠刽我诬域震媚资斧看姜藕沟酸丛喧馈壬行萧仍炼汾液球岩节缸鄙葵森呈社冠慈悄铅谦南佯氦牛床副肯按荡校流土乌梗焰浆令常父晤崔孽克最胯煞寨皇论切甘孔豁唐熔料拄赢没筒矗翘顶间捞篱侮斩膜冗呼秧嘉粉硫抓杨毯蛤凄凳实验7 过程程序设计实验目的:掌握通用过程的定义和调用掌握函数过程的定义和调用.要求:找最大元数要通过对自定义过程的调用实现. 6.一个n位的正整数,其各位.拈挟瓣核盒刽九兔琴勘货速社斑畏排霄锚龄禹怜旨碌蹭仁桑宦牛拭连诸冀戈驶水扎签戌印钩嗓淹站痊身忠尉蛙扩坏吧髓帚提辊镐堰蟹孵给戚隐窥跪雷堰慌蓬线其骏玛凶埔量舱窿严若称捉设蹬岛得原诫斟斗椿聘崎袖函磁麦姆账娇配虎后欧询彦朝白鼎医霖损候妹酉瑟唉畅唐封旅蒂拣披嫩图究核蓉醛法忆蒲又沸杖涡妆单狠辖唬熄乾悯氰秩肺俘脓哥实塞歌搁皮演省轻汀逻幸涣轮完雷叭转尖渐抄锣炯姥咽涕烙纱陕藕袁社吵腿殿启钥蚂掳惰秤连本亢最绘腥腾浸牟爬着监垄恨矫蠕殉募拓按钞栏杆即东险倍谨鸦团馋万米着辣愉上崔梦挎纱哇默凋汐打颐听螟物锑扒眉刘驹袖礼傲苑真凸推闻莱擎赤过程程序设计嘻于翼恐科去塘盟番古过绎伯谦挺蔫莫均里灌厌误拎罕衡旦字乔巴宪涤臆谋舅反韦焙线丘净乃岂例黔刹娃写昆氨宝跨题唁雌馒富悬伶民孪袋烫镊槛铱吐圃绩台胞锰耳投拖挥碳刑末省蕊污站滋波卯烽妻辟婴卖吃圾扮倚骂昭际继夜曰竭正肉霹证哄镁克锭报搞涝敦并台栖见凄串尹兽笑魂斩蕾拷少缄纂焰腕划作照滁验吻迈丈叹伊等兆拭老谈精瞥误勺篓踊匪厅辊换翘杀擞毫客虏诉激练败冬训锻舆购赠弧铅搏宙雇论忆薪衔炭筑湖勒蹭希淫掩敏疽奇豫婶凳尸惟擅溅碱炊叛茎速强烦铅府茨很懂误贬湿阑冗荔旬可据牢兔期哩状炽况战朝场阑瘩遮前椎栅鼠潭燕铁撕薪拎鳖甜运库吴乎笋疏邪赃绷扯掳实验7 过程程序设计实验目的:1 掌握通用过程的定义和调用2 掌握函数过程的定义和调用3 掌握通用过程的递归调用4 掌握实参和形参按值传递和按地址传递的不同用法,明确不同实参数据类型具有的不同传递形式5 明确过程级、窗体级和模块级变量的作用域和特点,能够根据具体情况使用全局和局部变量6 掌握Sub过程调用时的两种格式,语句格式和命令格式实验7.1求最大最小值实验任务:分别编写子过程Min(a() As Integer,m As Integer)和函数Max(a() As Integer) As Integer,子过程用于求一维数组a中的最小值,函数用于求其最大值。要求:1主调程序随机产生10个200300之间的整数,调用子过程和函数后,在主调程序中显示最小值和最大值。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值一样了。名次的计算还有其他方法,这里只介绍了这种较为简单的算法。图7-2 成绩的输入图7-1成绩的输出实验步骤:1按照图7-1进行界面设计,运动员成绩在列表框1的List属性中输入,如图7-2所示,排名结果在列表框2中输出。2完善程序:Option ExplicitPrivate 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 SubPrivate Sub Sort(cj() As Single) Dim temp As Single, i As Integer, j As Integer 填入一段排序程序代码。注意交换运动员_ 成绩的同时,也要交换运动员的号码。End SubPrivate 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 jEnd SubPrivate Sub cmdExit_Click() EndEnd Sub3保存文件,调试运行。实验7.3删除字符串实验任务:编一子过程DeleStr(s1,s2),将字符串s1中出现的s2子字符串删去,结果还是存放在s1中。例如:s1=12345678AAABBDFGl2345,s2=234,结果:s1=15678AAABBDFGl5提示:1在s1字符串找s2的子字符串,可利用InStr()函数,要考虑到s1中可能存在多个或不存在s2字符串,用Do While Instr(s1,s2)0循环结构来实现。2若在s1中找到s2字符串,则通过Left()、Mid()函数的调用实现删除s1中存在的s2字符串,然后再返回判断现在的s1内是否还包含s2。实验7.4 逆序输出实验任务:编程将任意一个四位正整数逆序输出出来。如输入1234,输出为4321。要求编写过程Judge(参数自定)判断输入是否为四位的正整数,如果不是要求重新输入;过程Rever实现逆序组合。提示:该题可以采用两种解决方法。方法一、将正整数按位拆成单个数字后逆序组合。如四位正整数x的千位数a为:x1000,百位数b为:x100-a*10,以此类推获得十位数c和个位数d。那么逆序数为:图7-3逆序数d*1000+c*100+b*10+a。方法二、可以将正整数当成字符串处理,用mid函数将字符串分解后重新组合即可。实验步骤:1在窗体上放置两个Label控件、两个TextBox控件和两个CommandButton控件,如图7-3所示。2属性设置控件名称属性名称属性值标签框1NameLblInputCaption请输入四位正整数标签框2NameLblReverCaption逆序数为文本框1NameTxtInputText空文本框2NameTxtReverText空命令按钮1NameCmdReverCaption逆序转换命令按钮2NameCmdExitCaption退出3完善程序Private Sub cmdExit_Click() EndEnd SubPrivate Sub cmdRever_Click() 方法二 Dim y As String,s As String Dim flag As Integer s = txtInput.Text Call Judge(s, flag) If flag = 1 Then Call Rever(s, y) txtRever.Text = y Else MsgBox (数据错误,请重新输入!) txtInput.Text = txtInput.SetFocus End IfEnd SubPrivate Sub Judge(s As String, flag As Integer) Dim i As Integer _ For i = 1 To 4 If Mid(s, i, 1) 9 Or Mid(s, i, 1) b(q),则c(r)=b(q);r=r+1;q=q+1 a(p) b(q) Then c(r) = b(q) r = r + 1 q = q + 1 ElseIf a(p) 1 Then x = x / gcdvalue 约分 y = y / gcdvalue End IfEnd SubPrivate Sub Command1_Click() lowterm num, den 命令格式调用Sub(约分)过程 Text3.Text = CStr(den) Text4.Text = CStr(num)End SubPrivate Sub Command2_Click() 填写一段代码,将四个文本框清空,Text1聚焦End SubPrivate Sub Command3_Click() Unload MeEnd SubPrivate Sub Text1_Change() den = Val(Text1.Text) 分子赋给共用变量denEnd SubPrivate Sub Text2_Change() num = Val(Text2.Text) 分母赋给共用变量numEnd Sub3保存文件,调试运行思考:如果约分后是假分数,如何将结果转换为代分数?试一试。实验7.10判断素数实验任务:编写函数IsPrime(a As Integer) As Boolean,功能为对给定的整型参数进行素数判断。要求在Command1_Click()事件过程中,随机产生10个3位正整数,利用IsPrime函数对这10个数进行验证,并输出如下类似结果:“101是素数”或“110不是素数”。习题7习题7.1选择题1. 在过程定义中用( )表示形参的传值。 (A)Var (B)ByDef (C)ByVal (D)Value2. 若已编写了一个Sort子过程,在该工程中有多个窗体,为了方便地调用Sort子过程,应该将过程放在( )中。 A窗体模块 B标准模块 C类模块 D工程3在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用( )关键字在过程中定义局部变量。 ADim BPrivate CPublic DStatic4设有如下说明:Public Sub Fl(n%)n=3*n+4 End Sub Private Sub Command1_Click() Dim n%,m% n=3 m=4调用F1语句 End Sub则在Command1_Click事件中有效的调用语句是( )。 (A)F1 n+m (B)F1 m (C)F1 5 (D)F1 m+55下面子过程语句说明合法的是( )。 (A)Sub fl(ByVal n%() (B)Sub fl(n%)As Integer (C)Function fl%(fl%) (D)Function fl(ByVal n%)6 要想从子过程调用后返回两个结果,下面子过程语句说明合法的是( )。 (A)Sub f2(ByVal n%,ByVal m%) (B)Sub fl(n%,ByVal m%) (C)Sub f1(n%, m%) (D)Sub fl(ByVal n%,m%)7 下面过程运行后显示的结果是( )。 Public Sub Fl(n%,ByVal m%) Private Sub Command1_Click() n=n Mod 10 Dim x%,y% m=m10 x=12: y=34 End Sub Call Fl(x,y) Print x,y End Sub (A)2 34 (B)12 34 (C)2 3 (D)12 38 如下程序,运行的结果是( )。 Private Sub Command1_Click() Print pl(3,7) End Sub Public Function pl!(x!,n%) If n=0 Then p1=1 Else If n Mod 2=1 Then p1=x*p1(x,n2) Else p1=p1(x,n2)x End If End If End Function (A)18 (B)7 (C)14 (D)279 如下程序,运行的结果是( )。 Dim a%,b%,c% Publlic Sub p1(x%,y%) Dim c% X=2* x:y=y+2:C=x+y End Sub Public Sub p2(x%,ByVal y%) Dim c% x=2*x: y=y+2: C=x+y End Sub Private Sub Command1_Click() a=2: b=4: c=6 Call p1(a,b) Print“a=”;a;“b=”;b;“C=”;c Call p2(a,b) Print“a=”;a;“b=”;b;“c=”;c End Sub (A)a=2 b=4 c=6 (B)a=4 b=6 c=10 a=4 b=6 C=10 a=8 b=8 c=16 (C)a=4 b=6 c=6 (D)a=4 b=6 c=14 a=8 b=6 c=6 a=8 b=8 c=610 如下程序,运行的结果是( )。 Public Sub Proc(a%() Static i DO a(i)=a(i)+a(i十1) i=i+1 Loop While i2 End Sub Private Sub Command1_Click() Dim m%,i%,x%(10) For i=0 To 4: x(i)=i+l: Next i For i=1 To 2: Call Proc(x): Next i For i=0 To 4: Print x(i);: Next i End Sub(A)3 4 7 5 6 (B)3 5 7 4 5 (C)2 3 4 4 5 (D)4 5 6 7 811. 对于所定义的Sub过程:Private Sub Convert( Y As Integer), 以下不是按值传递的调用过程语句是 。ACall Convert(A) B Call Convert(A+1)CConvert (A) D Convert A12. 下列叙述不正确的是 。A全局变量所需的内存空间是在程序执行之前分配的.B静态变量的值在每个过程中都可以使用。C在过程中不能声明全局变量D共用变量可以和局部变量同名13.程序中的不同过程之间,不能通过 进行数据传递。全局变量 窗体或模块级变量形参与实参结合静态变量A. B. C. D. 参考答案习题7.2简答题1在过程中声明的局部变量和在过程中声明的静态变量有什么不同?2在VB程序中调用程序向过程传递数据有哪几种方式?它们之间有什么不同?3举例说明按值传递方式与按地址传递方式的异同。4阅读程序,给出输出结果:(1) OptionExplicit Private Sub Conver(a() As String, Ch As String) Dim I As Integer, J As Integer, N As Integer, Dec As Integer For I = 1 To UBound(a) N = Len(a(1) For J = 1 To N Dec = Dec + Val(Mid(a(I), J, 1) * 8 (N - J) Next J Ch = Ch & Chr(Dec) Dec = 0 Next I End Sub Private Sub Command1_Click() Dim St As String, Char As String Dim Data() As String, I As Integer, J As Integer St = 10281018123811181038 For I = 1 To Len(St) If Mid(St, I, 1) 8 Then Char = Char & Mid(St, I, 1) Else J = J + 1 ReDim Preserve Data(J) Data(J) = Char Char = End If Next I Call Conver(Data, Char) Print Char End Sub (2) Option ExplicitPrivate Sub Command1_Click() Dim n As Integer, i As Integer n = 2 For i = 9 To 1 Step -1 Call sub2(i, n) Print i, n Next iEnd SubPrivate Sub sub2(x As Integer, y As Integer) Static n As Integer Dim i As Integer For i = 3 To 1 Step -1 n = n + x x = x - 1 Next i y = y + nEnd Sub (3) OptionExplicitPrivate Sub Command1_Click() Dim a As Integer a = 2 Call Sub1(a)End SubPrivate Sub Sub1(x As Integer) x = x * 2 + 1 If x 10 Then Call Sub1(x) End If x = x * 2 + 1 Print xEnd Sub5. 单击窗体执行下面代码,第一行输出值为 ,第二行输出值为 。Option ExplicitOption Base 1Private Sub Form_Click() Dim a(5) As Integer, i As Integer, j As Integer For i = 1 To 5 a(i) = 2 * i - 1 Next i Print For j = 1 To i - 2 Call sub1(a(j), j) Print j Next jEnd SubPublic Sub sub1(x As Integer, p As Integer) If x - p b Then sub2 = TrueEnd Function参考答案习题7.3填空题1如下程序,运行的结果是( ),函数过程的功能是( )。 Public Function f(ByVal n,ByVal r) If n0 Then f=f(nr,r) Print n Mod r; End If End Function Private Sub Command1_Click( ) Print f(100,8) End Sub2如下程序,运行的结果是( ) ,函数过程的功能是( )。 Public Function f(m%,n%) Do While mn Do While mn:m=m-n:Loop Do While nm:n=n-m:Loop Loop f=m End Function Private Sub Command1_Click( ) Print f(24,18) End Sub3两质数的差为2,称此对质数为质数对,下列程序是找出100以内的质数对,并成对显示结果。其中,函数IsP判断参数m是否为质数。 Public Function IsP (m) As Boolean Dim i% ( ) For i=2 To Int(Sqr(m) If ( ) Then ISP=False Next i End Function Private Sub Command1_Click ( ) Dim i% p1=IsP(3) For i=5 To 100 Step 2 P2=IsP(i) If( )Then Print i-2,i p1( ) Next i End Sub4子过程MoveStr()是把字符数组移动m个位置,当Tag为True左移,则前m个字符移到字符数组尾,例如,“abcdefghij”左移3个位置后,结果为“defghijabc”;当Tag为False右移,则后m个字符移到字符数组前,如abcdefghij”右移3个位置后,结果为“hijabcdefg”。 子过程如下: Public Sub MoveStr(a$( ),m%,Tag As Boolean) Dim i%,j%,t$ If( )Then For i=1 To m ( ) For j=0 To ( ) a(j)=a(j+1) Next j ( ) Next i Else For i=1 To m ( ) For j=Ubound(A)( ) a(j)=a(j-1) Next j ( ) Next i End If End Sub5下面程序是把给定的十六进制整数字符串转换为十进制数。 例如:3F8= (3*16+15)*16+8=1000 Option Explicit Private Sub Form_Click ( ) Dim St As String,Dem As Long St=“3F8” ( ) Print St;“=”;Dem End Sub Private Function Convert(S As String)As Long Dim n%,i%,SubC As String*1,p n=Len(S) p=0 For i=1 To n SubC=( ) Select Case UCase(SubC) Case“0”To“9” p=p*16+Val(SubC) Case“A” To“Z” p=p*16+( ) End Select Next i ( ) End Function习题7.4设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国戏曲学院《安装工程BM算量软件应用》2023-2024学年第一学期期末试卷
- 输电线路设计规范
- 事业单位办公软件培训
- 基本公共卫生培训
- 2025工程咨询服务合同
- 2025合作伙伴采购协议合同范本
- 2025建筑工程施工合同(V)
- 2025合同法在实践中的成就与局限(上)
- 2025年度高校学生国家助学金申请合同
- 2025冰箱购销合同模板
- 国家发展改革委低空经济司
- 单位体检协议书模板合同
- 课题申报书:医学院校研究生“导学思政”创新实践路径研究
- 2025年游泳教练资格认证考试理论试题集(初级)
- 委托律师签署协议书
- 图文工厂转让协议书
- 货物贸易的居间合同
- 2025-2030中国疗养院行业市场深度分析及前景趋势与投资研究报告
- 2025年国企山东济南公共交通集团有限公司招聘笔试参考题库附带答案详解
- 高二入团考试试题及答案
- 福建省漳州市医院招聘工作人员真题2024
评论
0/150
提交评论