VB实习五 过程.docx
- 文档编号:28585682
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:33
- 大小:341.87KB
VB实习五 过程.docx
《VB实习五 过程.docx》由会员分享,可在线阅读,更多相关《VB实习五 过程.docx(33页珍藏版)》请在冰豆网上搜索。
VB实习五过程
实习五过程
一、实习目的
1.通过实习理解过程基本概念;
2.掌握创建过程的方法和过程调用方法,理解Sub过程和Function过程的异同;
3.掌握Sub过程和Function过程程序设计方法;
4.掌握过程调用时参数传递的两种方式及特点;
5.理解过程、变量的作用域;
6.理解递归的概念及编程方法特点。
二、实习内容
1.掌握Function过程的定义、设计和调用方法;
2.掌握Sub过程的定义、设计和调用方法;
3.理解并掌握参数传递的两种方式;
4.完成课后编程习题;
5.理解递归的编程方法。
三、编程题程序算法及代码
例题验证:
例题6-1
属性结果:
代码编写:
Subfact(xAsInteger,fAsDouble)
DimiAsInteger
f=1
Fori=1Tox
f=f*i
Nexti
EndSub
PrivateSubCommand1_Click()
DimmAsInteger,nAsInteger,sAsDouble,yAsDouble
n=10:
Callfact(n,y)
s=y
m=6:
Callfact(m,y)
s=s/y
Callfact(n-m,y)
s=s/y
Print"CMN="&s
EndSub
例题6-2
属性结果:
代码编写:
OptionBase1
Subparray(a()AsInteger)
Dimp
ForEachpIna
Printp;
Nextp
EndSub
PrivateSubCommand1_Click()
Dimx(1To10)AsInteger,i%,t%
Fori=1To10
x(i)=Int(Rnd*100)
Nexti
Print"交换前个元素值:
";
Callparray(x)
Fori=1To5
t=x(i):
x(i)=x(10-i+1):
x(10-i+1)=t
Nexti
Print"交换后个元素值:
";
Callparray(x)
EndSub
例题6-3
属性结果:
代码:
Subgys(mAsInteger,nAsInteger,tAsInteger)
DimrAsInteger
Do
r=mModn
Ifr=0ThenExitDo
m=n
n=r
Loop
t=n
EndSub
PrivateSubcommand1_click()
DimaAsInteger,bAsInteger,xAsInteger,yAsInteger
a=16:
b=12
Callgys(a,b,x)
y=a*b/x
Print"最大公约数为:
"&x
Print"最小公倍数为:
"&y
EndSub
例题6-4
属性结果:
代码:
Subswap1(ByValxAsInteger,ByValyAsInteger)
DimtAsInteger
t=x:
x=y:
y=t
EndSub
Subswap2(xAsInteger,yAsInteger)
DimtAsInteger
t=x:
x=y:
y=t
EndSub
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=3:
b=4
swap1a,b
Print"a="&a&",b="&b
a=5:
b=6
swap2a,b
Print"a="&a&",b="&b
EndSub
例题6-5
属性结果:
代码编写:
Subtj(x()AsInteger,AVERAsSingle)
DimmAsInteger,nAsInteger,iAsInteger,sAsInteger
m=LBound(x)
n=UBound(x)
Fori=mTon
s=s+x(i)
Nexti
AVER=s/(n-m+1)
EndSub
PrivateSubCommand1_Click()
Dima%(1To10),i%,AVER!
Fori=1To10
a(i)=Int(Rnd()*10)
Printa(i)
Nexti
Calltj(a,AVER)
Print"这些数的平均值为:
"&AVER
EndSub
例题6-6
属性结果:
代码:
Subtj(x%(),max%,min%,aver!
)
Dimm%,n%,i%,s%
m=LBound(x)
n=UBound(x)
max=x(m):
min=x(m):
s=x(m)
Fori=m+1Ton
Ifmax Ifmin>x(i)Thenmin=x(i) s=s+x(i) Nexti aver=s/(n-m+1) EndSub PrivateSubCommand1_Click() Dima%(1To10),i%,x%,y%,z! Fori=1To10 a(i)=Int(Rnd()*10) Printa(i) Nexti Print Calltj(a,x,y,z) Print"这组数的最大值为: "&x Print"这组数的最小值为: "&y Print"这组数的平均值为: "&z EndSub 例题6-7 属性结果: 代码: Functionfact(ByValnAsInteger)AsDouble DimiAsInteger,fAsDouble f=1 Fori=1Ton f=f*i Nexti fact=f EndFunction PrivateSubCommand1_Click() DimsAsDouble s=fact(10)/fact(6)/fact(4) Print"CMN="&s EndSub 例题6-8 属性结果: 代码编写: DimaAsInteger,bAsInteger,cAsInteger Subprod() c=a*b Print"prod子程序",a,b,c EndSub Subsum() c=a+b Print"sum子程序",a,b,c EndSub PrivateSubForm_click() a=5: b=3 PrintTab(16);"a";Tab(30);"b";Tab(42);"c=a*b" Print"调用prod前",a,b,c Callprod Print"调用prod后",a,b,c PrintTab(16);"a";Tab(30);"b";Tab(42);"c=a+b" Print"调用sum前",a,b,c Callsum Print"调用sum后",a,b,c Callsum EndSub 例题6-9 属性结果: 代码编写: PublicttAsInteger PrivateSubtest1() tt=tt+10 Printtt EndSub PrivateSubtest2() DimttAsInteger tt=tt+20 Printtt EndSub PrivateSubForm_Click() tt=100 Printtt Calltest1 Printtt Calltest2 Printtt EndSub 例题6-10 属性结果: 代码编写: Subparray(x$()) Dimi% Fori=LBound(x)ToUBound(x) Picture1.Printx(i);""; Nexti Picture1.Print EndSub Subsort(y$(),ByValp%) Dimi%,j%,k%,t% Fori=LBound(y)ToUBound(y)-1 k=i Forj=i+1ToUBound(y) Ifp=0Then IfVal(y(k))>Val(y(j))Thenk=j Else IfVal(y(k)) EndIf Nextj t=y(k): y(k)=y(i): y(i)=t Nexti EndSub PrivateSubForm_Load() Text1="" Frame1.Caption="排序选择" Option1(0).Caption="升序" Option1(0).Value=True Option2 (1).Caption="降序" EndSub PrivateSubOption1_DblClick()'indexAsInteger Dima()AsString a=Split(Text1.Text,",") Picture1.Print Callparray(a()) Callsort(a(),index) Picture1.PrintOption1(index).Caption&"排序后的数据" Callparray(a()) EndSub 例题6-11 属性及结果: 代码编写: Functionhw(ByValxAsString)AsBoolean Dimn%,i% n=Len(x) Fori=1Ton\2 IfMid(x,i,1)<>Mid(x,n-i+1)Then hw=False ExitFunction EndIf Nexti hw=True EndFunction PrivateSubCommand1_Click() Dimx$ x=InputBox("请输入一个整数") Ifhw(x)Then MsgBoxx&"是回文数" Else MsgBoxx&"非回文数" EndIf EndSub 例题6-12 属性及结果: 代码编写: Functiondecton(ByValx%,ByValn%)AsString Dimp()AsString,y$,r% p=Split("0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F",",") Ifn>16Then decton="" ExitFunction EndIf y="" Do r=xModn x=x\n y=p(r)&y LoopUntilx=0 decton=y EndFunction PrivateSubCommand1_Click() Dimx%,n%,y$ x=InputBox("请输入待转换的十进制整数! ","数值转换",0) n=InputBox("请输入需要的进制,注意不要大于16","数值转换",2) y=decton(x,n) Ify<>""Then MsgBox"转换结果: "&decton(x,n) Else MsgBox"对不起! 本程序不能转换超过16的禁止! " EndIf EndSub 例题6-13 属性及结果: 代码编写: Functionfact(n)AsDouble Ifn>0Then fact=n*fact(n-1) Else fact=1 EndIf EndFunction PrivateSubCommand1_Click() DimnAsInteger,mAsDouble n=Val(Text1.Text) Ifn<0Orn>20Then MsgBox"非法数据",0,"请输入0-20之间的整数" ExitSub EndIf m=fact(n) Label1.Caption=m EndSub 例题6-14 代码编写: Functiongys%(ByValm%,ByValn%) Dimr% r=mModn Ifr=0Then gys=n Else gys=gys(n,r) EndIf EndFunction 课后习题: 习题1、界面设置: 属性结果: 代码编写: Functionmyabs(ByValx) myabs=IIf(x<0,-x,x) EndFunction PrivateSubCommand1_Click() DimmyabsAsLong x=InputBox("请输入值") a=IIf(x<0,-x,x) PrintTab(10);a EndSub 习题2 界面设置: 属性结果: 代码编写: SubMValue(a()AsSingle,ByRefmaxAsSingle,ByRefminAsSingle) 'a()是待查找的数组,一位数组 'max,min分别为待求的最大数和最小数,我们通过地址传递的方法,将找到的结果传回主程序 l=LBound(a) u=UBound(a) max=a(l) min=a(l) Fori=lTou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 实习五 过程 实习