2024年VB实验四 实验报告 -_第1页
2024年VB实验四 实验报告 -_第2页
2024年VB实验四 实验报告 -_第3页
2024年VB实验四 实验报告 -_第4页
2024年VB实验四 实验报告 -_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告四課程VB程序设计试验项目VB過程与函数设计(6課時)成绩专业班级姓名學号试验曰期试验目的(1)掌握Function過程和Sub過程的定义与调用(2)理解参数按址传递和按值传递的本质(3)理解变量和過程的作用域(4)能纯熟运用Function過程和Sub過程处理实际問題、简化程序试验内容【试验1】编写Sub子程序实現计算n!。程序界面如下图所示。(5分)掌握Sub過程的定义及使用试验成果:【试验1代码】DimnAsInteger,sAsLongPrivateSubCommand1_Click()n=Val(Text1.Text)Callf(s,n)Text2.Text=sEndSubSubf(mAsLong,nAsInteger)DimiAsIntegerm=1Fori=2Tonm=m*iNextiEndSubPrivateSubCommand3_Click()EndEndSub【试验1經典成果】【试验2】编写Function函数過程实現计算n!。程序界面如下图所示。(5分)掌握Function過程的定义及使用试验成果:【试验2代码】DimnAsInteger,sAsLongPrivateSubCommand1_Click()n=Val(Text1.Text)s=f(n)Text2.Text=sEndSubFunctionf(nAsInteger)DimiAsIntegerm=1Fori=2Tonm=m*iNextif=mEndFunctionPrivateSubCommand2_Click()EndEndSub【试验2經典成果】【试验3】分别编写按地址传递互换、按值传递互换两個数的過程子程序代码swap1()和swap2()。程序界面设计如下图所示。(10分)掌握Sub過程参数传递措施试验成果:【试验3代码】SubSwap1(x%,y%)t=x:x=y:y=tEndSubSubSwap2(ByValx%,ByValy%)t=x:x=y:y=tEndSubPrivateSubCommand1_Click()Dima%,b%a=10:b=20Print"按地址互换前的各值為:";"a=";a;"b=";bSwap1a,b'传址Print"按地址互换後的各值為:";"a=";a;"b=";bEndSubPrivateSubCommand2_Click()Dima%,b%a=10:b=20Print"按值互换前的各值為:";"a=";a;"b=";bSwap2a,b'传值Print"按值互换後的各值為:";"a=";a;"b=";bEndSub【试验3經典成果】【试验4】中国好声音歌手大赛共n名选手参与决赛,m位评委参与评分,评分原则:去掉两個最高分和两個最低分後来取平均分。编写程序实現如下规定:(10分)①每位选手演唱完毕,當場显示参赛选手的编号及各位评委的评分和最终得分。②决赛結束後,显示各参赛选手的名次、编号和成绩。③用子程序sub過程实現。程序界面设计如下图所示。掌握Sub過程中数组作為参数传递的措施试验成果:【试验4代码】OptionBase1Dimp()AsSingle,x()AsString,a()AsSinglePrivateSubCommand1_Click()DimbAsSingle,mAsInteger,spAsStringn=Val(InputBox("输入参与比赛歌手人数:"))m=Val(InputBox("输入评委人数:"))ReDimp(m),x(n),a(n)Fori=1Tonx(i)=Val(InputBox("输入选手编号:"))sp=""Forj=1Tomp(j)=Val(InputBox("输入选手得分:"))sp=sp&p(j)&""NextjLabel2.Caption=""&x(i)Label4.Caption=""&spCallmean(p(),b,m)a(i)=bLabel6.Caption=""&a(i)NextiFori=1Ton-1k=iForj=i+1TonIfa(k)<a(j)Thenk=jNextjt=a(i):a(i)=a(k):a(k)=tt=x(i):x(i)=x(k):x(k)=tNextiPicture1.Print"名次编号成绩"Fori=1TonPicture1.PrintTab(3);i,x(i),a(i)NextiEndSubPrivateSubmean(p()AsSingle,bAsSingle,mAsInteger)Fori=1Tom-1Forj=i+1TomIfp(i)<p(j)Thent=p(i):p(i)=p(j):p(j)=tEndIfNextjNextis=0Fori=3Tom-2s=s+p(i)Nextib=s/(m-4)EndSub【试验4經典成果】【试验5】编写一种Function函数過程,求出数组中的最大值。已知数组中的数据為(101,52,38,96,182,100,25,78,66,89),程序界面设计如下图所示。掌握Function過程中数组作為参数传递的措施试验成果:【试验5代码】PrivateFunctionFindMax(a()AsInteger)DimStartAsInteger,FinishAsInteger,iAsIntegerStart=LBound(a)Finish=UBound(a)Max=a(Start)Fori=StartToFinishIfa(i)>MaxThenMax=a(i)NextiFindMax=MaxEndFunctionPrivateSubCommand1_Click()ClsDimb(1To10)AsIntegerb(1)=101:b(2)=52:b(3)=38:b(4)=96:b(5)=82:b(6)=100:b(7)=25:b(8)=78:b(9)=66:b(10)=89Print"数组中的数据為:101,52,38,96,82,100,25,78,66,89"c=FindMax(b())Text1.Text=cEndSubPrivateSubForm_Load()EndSub【试验5經典成果】【试验5問題】通過和上一題對比,請總結一下哪些状况使用Function過程愈加合适。【试验6】编写计算n!的函数過程,调用该過程,计算1!+2!+3!+……+10!之和(10分)掌握使用Function過程简化多重循环的措施,即把具有單一功能的内循环放到函数内部函数的作用是简化程序,不要把双重循环都放到函数内试验成果:【试验6代码】PrivateSubForm_Click()DimiAsIntegerFori=1To10Callf(m,i)s=s+mNextiPrint"s=",sEndSubFunctionf(m,nAsInteger)AsLongDimiAsIntegerm=1Fori=2Tonm=m*iNextiEndFunction【试验6經典成果】【试验7】编写计算n!的子過程,调用该過程,计算1!+2!+3!+……+10!之和(10分)掌握使用Sub過程简化多重循环的措施,即把具有單一功能的内循环放到函数内部函数的作用是简化程序,不要把双重循环都放到函数内试验成果:【试验7代码】PrivateSubForm_Click()DimiAsIntegerFori=1To10m=f(i)s=s+mNextiPrint"s=",sEndSubSubf(nAsInteger)DimiAsIntegerm=1Fori=2Tonm=m*iNextif=mEndSub【试验7經典成果】【试验8】编写计算n!的函数過程,调用该過程,计算ex的近似值(10分)ex=1+x/1!+x2/2!+x3/3!+……+xn/n!规定:1)x的值用InputBox函数输入2)规定精度:xn/n!<0.000001掌握使用函数過程简化多重循环的措施试验成果:【试验8代码】PrivateSubForm_Click()x=Val(InputBox("請输入x的值"))f1=jishu1(x,0.000001)Printf1EndSubFunctionjishu1(x,eps#)AsDoubleDimn%,s#,t#n=1:s=0:t=1DoWhile(Abs(t)>=eps)s=s+tt=t*x/nn=n+1Loopjishu1=sEndFunction【试验8經典成果】【试验9】编写程序输出200~300之间的素数。(10分)规定:1)运用函数過程判断每個数与否是素数,是素数则返回1,否则返回02)将素数输出到列表框掌握使用函数過程简化多重循环的措施试验成果:【试验9代码】PrivateFunctiongdbh(nAsInteger)gdbh=1Fori=2ToInt(Sqr(n))IfnModi=0Thengdbh=0NextiEndFunctionPrivateSubCommand1_Click()DimiAsIntegerFori=201To300Step2y=gdbh(i)Ify=0ThenList1.AddItemiNextiEndSub【试验9經典成果】【试验10】编写程序验证100以内数的哥德巴赫猜测(任意一种不小于6的偶数可以表到达两個素数之和),规定素数判断用函数過程实現。(10分)掌握使用函数過程简化多重循环的措施试验成果:【试验10代码】PrivateSubCommand1_Click()Dimm,m1,m2,n,f,pForm=6To100Step2p=""m1=1aa:m1=m1+1Callgdbh(m1,f)Iff=1ThenGoToaam2=m-m1Callgdbh(m2,f)Iff=1ThenGoToaap=p&m&"="&m1&"+"&m2List1.AddItempNextmEndSubPrivateSubgdbh(n,f)f=0Ifn=2Thenf=0Fori=2ToSqr(n)IfnModi=0Thenf=1NextiEndSubPrivateSubForm_Load()EndSub【试验10經典成果】【选做1】编写程序,运用Sub子程序递归调用方式计算两個数M、N的最大公约数,其中M>N,且N≠0。程序界面如下图所示。(+5分,總分最高100)掌握Sub過程的递归调用试验成果:【选做1代码】【选做1經典成果】【选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论