VB 过程.docx
《VB 过程.docx》由会员分享,可在线阅读,更多相关《VB 过程.docx(14页珍藏版)》请在冰点文库上搜索。
VB过程
实验6过程
2014年月日
姓名:
金梦仙
学号:
136330862
班级:
法政2班
短号:
658399
一、实验目的:
1.掌握自定义函数过程和子过程定义和调用方法。
2.掌握形参和实参的对应关系。
3.掌握值传递和地址传递的传递方式。
4.掌握变量、函数和过程的作用域。
5.掌握递归概念和使用方法。
6.熟悉程序设计中的常用算法。
二、实验内容:
请在窗体的合适位置写上你的姓名和学号(以后所有实验均有此要求)
1.完成实践教材实验6“三、实验内容”的题。
2.进入10.22.98.189\edu课程网站,并将此实验报告和代码文件一起打包压缩交到课程作业相应处,请务必在作业有效期内上交。
附部分原代码
P81
PrivateSubButton1_Click(…)HandlesButton1.Click
Dimx%,y%,z%
x=TextBox1.Text
y=TextBox2.Text
Callproc(x,y,z)
TextBox3.Text&=x&"和"&y&"的最大公约数是"&z&vbCrLf
EndSub
Subproc(ByVala%,ByValb%,ByRefs%)
‘请编写过程
EndSub
P82
Subproc(ByValsAsString)
s=s&InputBox("请输入你的姓名:
")
Label1.Text&="过程调用时,变量s的值为:
"&s&vbCrLf
EndSub
Subproc1(ByRefs1AsString)
s1=s1&InputBox("请输入你的姓名:
")
Label1.Text&="过程调用时,变量s1的值为:
"&s1&vbCrLf
EndSub
三、实验步骤及结果:
(实验结果截图,代码拷贝过来。
)
1/容易题1
PublicClassForm1
Subproc(ByVala%,ByValb%,ByRefs%)
Do
s=aModb
a=b
b=s
LoopWhiles<>0Andb<>0
s=a
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
End
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dimx%,y%,z%,x0%,y0%
x0=Val(TextBox1.Text)
y0=Val(TextBox2.Text)
x=x0
y=y0
Callproc(x,y,z)
TextBox3.Text&=x0&"和"&y0&"的最大公约数是"&z&vbCrLf
EndSub
EndClass
2/容易题2
PublicClassForm1
Functionjudge(ByValx%)AsString
IfxMod2=0Then
judge="True"
Else
judge="False"
EndIf
EndFunction
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
TextBox1.Text=""
TextBox2.Text=""
TextBox1.Focus()
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dimx%
x=Val(TextBox1.Text)
TextBox2.Text=judge(x)
EndSub
EndClass中等题1
PublicClassForm1
Functionf%(ByValn%)
Dimi%
f=1
Fori=1Ton
f*=i
Next
EndFunction
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dimx%,y%,s%
x=Val(TextBox1.Text)
Fory=1Tox
s=s+f(y)
Next
Label2.Text="S=1!
+2!
+3!
+……+"&x&"!
="
TextBox2.Text=s
EndSub
EndClass
中等题2
PublicClassForm1
Dimmax%
Subprocmax(ByRefs()AsInteger,ByRefmaxs%,ByRefx%)
Dimi%
maxs=1
Fori=0Tox
Randomize()
s(i)=Int(Rnd()*(99-1+1)+1)
TextBox1.Text&=s(i)&Space
(2)
Ifs(i)>maxsThenmaxs=s(i)
Next
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dima(9)AsInteger
Callprocmax(a,max,9)
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
TextBox2.Text=max
EndSub
EndClass
中等题3
PublicClassForm1
Functionprime(ByValm%)AsString
Dimi%
DimtagAsBoolean
Tag=True
Fori=2Tom-1
If(mModi)=0Then
tag=False
ExitFor
EndIf
Next
Iftag=TrueThen
Returnm&"是素数"
Else
Returnm&"不是素数"
EndIf
EndFunction
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dimx%
x=Val(TextBox1.Text)
TextBox2.Text=prime(x)
EndSub
EndClass
中等题4
PublicClassForm1
Subproc(ByValsAsString)'按值传递
s=s&InputBox("请输入你的姓名:
")
Label1.Text&="过程调用时,变量s的值为:
"&s&vbCrLf
EndSub
Subproc1(ByRefs1AsString)'按地址
s1=s1&InputBox("请输入你的姓名:
")
Label1.Text&="过程调用时,变量s1的值为:
"&s1&vbCrLf
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimaAsString
a="你好"
Label1.Text&="传值调用:
"&vbCrLf
Label1.Text&="过程调用前,变量s的值为:
"&a&vbCrLf
Callproc(a)
Label1.Text&="过程调用后,变量s的值为:
"&a&vbCrLf&vbCrLf
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Dima1AsString
a1="你好"
Label1.Text&="传地址调用:
"&vbCrLf
Label1.Text&="过程调用前,变量s1的值为:
"&a1&vbCrLf
Callproc1(a1)
Label1.Text&="过程调用后,变量s1的值为:
"&a1&vbCrLf&vbCrLf
EndSub
EndClass
难题1
PublicClassForm1
Functionprime(ByValm%)AsBoolean
Dimx%
Forx=2Tom-1
IfmModx=0Then
ExitFor
EndIf
Next
Ifx=mThen
prime=True
EndIf
EndFunction
PrivateSubListBox1_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesListBox1.SelectedIndexChanged
ListBox1.Text=""
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dima%,j%,k%
Fora=6To100Step2
Forj=3Toa/2
Ifprime(j)=TrueThen
Ifprime(a-j)=TrueThen
k=k+1
ListBox1.Items.Add(a&"="&j&"+"&(a-j))
EndIf
EndIf
Next
Next
Label1.Text="6到之间有"&k&"对素数和"
EndSub
EndClass
四、实验心得:
1/定义数组
PublicClassForm1
Dimmax%
Subprocmax(ByRefs()AsInteger,ByRefmaxs%,ByRefx%)
Dimi%
maxs=1
Fori=0Tox
Randomize()
s(i)=Int(Rnd()*(99-1+1)+1)
TextBox1.Text&=s(i)&Space
(2)
Ifs(i)>maxsThenmaxs=s(i)
Next
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dima(9)AsInteger
Callprocmax(a,max,9)x=9“要求出10个元素
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
TextBox2.Text=max
EndSub
EndClass
难题1验证歌德巴赫猜想
PublicClassForm1
Functionprime(ByValm%)AsBoolean
Dimx%
Forx=2Tom-1
IfmModx=0Then
ExitFor
EndIf
Next
Ifx=mThen
prime=True
EndIf
EndFunction
PrivateSubListBox1_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesListBox1.SelectedIndexChanged
ListBox1.Text=""
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Dima%,j%,k%
Fora=6To100Step2
Forj=3Toa/2
Ifprime(j)=TrueThen
Ifprime(a-j)=TrueThen
k=k+1
ListBox1.Items.Add(a&"="&j&"+"&(a-j))
EndIf
EndIf
Next
Next
Label1.Text="6到之间有"&k&"对素数和"
EndSub
EndClass
教师评语: