VB实习五 过程.docx

上传人:b****2 文档编号:16848980 上传时间:2023-07-19 格式:DOCX 页数:33 大小:341.87KB
下载 相关 举报
VB实习五 过程.docx_第1页
第1页 / 共33页
VB实习五 过程.docx_第2页
第2页 / 共33页
VB实习五 过程.docx_第3页
第3页 / 共33页
VB实习五 过程.docx_第4页
第4页 / 共33页
VB实习五 过程.docx_第5页
第5页 / 共33页
VB实习五 过程.docx_第6页
第6页 / 共33页
VB实习五 过程.docx_第7页
第7页 / 共33页
VB实习五 过程.docx_第8页
第8页 / 共33页
VB实习五 过程.docx_第9页
第9页 / 共33页
VB实习五 过程.docx_第10页
第10页 / 共33页
VB实习五 过程.docx_第11页
第11页 / 共33页
VB实习五 过程.docx_第12页
第12页 / 共33页
VB实习五 过程.docx_第13页
第13页 / 共33页
VB实习五 过程.docx_第14页
第14页 / 共33页
VB实习五 过程.docx_第15页
第15页 / 共33页
VB实习五 过程.docx_第16页
第16页 / 共33页
VB实习五 过程.docx_第17页
第17页 / 共33页
VB实习五 过程.docx_第18页
第18页 / 共33页
VB实习五 过程.docx_第19页
第19页 / 共33页
VB实习五 过程.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VB实习五 过程.docx

《VB实习五 过程.docx》由会员分享,可在线阅读,更多相关《VB实习五 过程.docx(33页珍藏版)》请在冰点文库上搜索。

VB实习五 过程.docx

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

Print

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

Print

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

Ifmax

Ifmin>a(i)Thenmin=a(i)

Next

EndSub

PrivateSubCommand1_Click()

Dimx()AsSingle

DimmaxAsSingle,minAsSingle

m=Val(Text1.Text)

ReDimx(1Tom)AsSingle

Fori=1Tom

x(i)=Int(Rnd*100)

Next

MValuex(),max,min

Label1.Caption="最大数为:

"&max&",最小数为:

"&min

EndSub

习题3、

界面设置:

属性结果:

代码编写:

FunctionisSXS(xAsInteger)AsBoolean

tmp=x^2

rs=Val(Right(tmp,Len(Trim(x))))'取出平方数右边和x相同位数的数

Ifrs=xThen'若两个相等则是守形数

isSXS=True

Else

rs=False

EndIf

EndFunction

PrivateSubCommand1_Click()

DimiAsInteger

n=0'用了计数,已经有多少个守形数

Fori=1To2000

IfisSXS(i)Then

Picture1.PrintTab((nMod5)*10);i;

n=n+1

EndIf

Next

EndSub

习题4、

界面设置:

属性结果:

代码编写:

FunctionGdc(ByValm%,ByValn%)

Dimr%

fontsie=20

Do

r=mModn

Ifr=0ThenExitDo

m=n

n=r

Loop

Gdc=n

EndFunction

PrivateSubCommand1_Click()

PrintTab(13);Gdc(1260,Gdc(198,72))

EndSub

习题5、

界面设置:

属性结果:

代码编写:

PrivateSubCommand1_Click()

DimintFAsLong,intLAsLong,intNAsInteger,intMAsInteger

DimvarTmpAsVariant

varTmp=InputBox("请输入随机数的范围,上界和下界用空格隔开!

"&vbCr&"注意:

我将不做正确检查.","输入","110")

intN=InputBox("请输入产生随机数的个数","个数",5)

intF=Split(varTmp,"")(0)

intL=Split(varTmp,"")

(1)

ForintM=1TointN

Randomize

n=n+1

IfnMod7=0ThenPrint

PrintCInt(Rnd*(intL-intF+1))+intF;

Next

EndSub

习题6、

界面设计:

属性结果:

代码编写:

Functionsum(a()AsSingle,nAsInteger)

sum=0

Fori=1Ton

sum=sum+a(i,i)+a(i,n-i+1)

Next

EndFunction

PrivateSubCommand1_Click()

Dimx!

(),nAsInteger

n=Val(Text1.Text)

ReDimx(1Ton,1Ton)

Picture1.Cls

Fori=1Ton

Forj=1Ton

x(i,j)=Int(Rnd*101)

Picture1.PrintTab((j-1)*8);x(i,j);

Next

Next

Picture1.Print

Picture1.Print"两条对角线之和为:

";sum(x(),n)

EndSub

习题7、

界面设计:

属性结果:

代码编写:

Functionss(ByValm%)AsBoolean

Dimk%,i%

k=Sqr(m)

Fori=2Tok

Ifm/i=m\iThenExitFor

Nexti

ss=IIf(i=k+1,True,False)

EndFunction

PrivateSubCommand1_Click()

Dimm%,n%

Form=100To200

Ifss(m)=TrueThen

PrintTab((nMod8)*6+1);m;

n=n+1

EndIf

Nextm

EndSub

习题8、

界面设计:

属性结果:

代码编写:

Functionss(ByValm&)AsBoolean

Dimk%,i%

k=Sqr(m)

Fori=2Tok

Ifm/i=m\iThenExitFor

Nexti

ss=IIf(i=k+1,True,False)

EndFunction

Functionhw(ByValm&)AsBoolean

IfLeft(m,1)=Right(m,1)AndMid(m,2,1)=Mid(m,4,1)Then

hw=True

Else

hw=False

EndIf

EndFunction

PrivateSubCommand1_Click()

Dimm&,n%

Form=10000To99999

Ifhw(m)Then

Ifss(m)Then'这里两个函数调用的先后对程序的运行速度影响较大,实习时可以将范围再扩大后调试,比如100000-999999之间。

PrintTab((nMod8)*8+1);m;

n=n+1

EndIf

EndIf

Nextm

EndSub

习题9、

界面设计:

属性结果:

代码编写:

习题10、

界面设计:

属性结果:

代码编写;PrivateSubCommand1_Click()

Picture1.PrintTab(8);sl(20)

EndSub

PrivateFunctionsl(i%)

Ifi<3Then

sl=1

Else

sl=sl(i-1)+sl(i-2)

EndIf

EndFunction

PrivateSubCommand2_Click()

End

EndSub

习题11

界面设计:

属性结果:

代码编写:

PrivateSubCommand1_Click()

n=Val(Text1.Text)

s1=s(n)

Ifs1=0Then

Label1.Caption="输入数太大!

"

Else

Label1.Caption=Round(s1,5)

EndIf

EndSub

Functions(ByValn

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2