《VB程序设计》实验报告.docx
《《VB程序设计》实验报告.docx》由会员分享,可在线阅读,更多相关《《VB程序设计》实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
《VB程序设计》实验报告
(此文档为word格式,下载后您可任意编辑修改!
)
台州学院
《VB程序设计》实验报告
实验1.1设计一个程序,程序运行的初始界面如图1-1所示。
当单击“显示”按钮时,在文本框中显示“欢迎使用VB!
”(图1-1);当单击“清除”按钮时,清除文本框内的文本;当单击“退出”按钮时,结束程序运行。
PrivateSubCommand1_Click()
Text1.Text="欢迎使用VB!
"
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
EndSub
PrivateSubCommand3_Click()
End
EndSub
实验1.2设计一个程序,程序运行的初始界面如图1-3所示,其中“显示”按钮为不可用。
同时要求:
(1)当单击“改变文字”按钮时,在左边标签文字内容改为“你好,张三!
”,同时“改变文字”按钮变为不可用(图1-4);
(2)当单击“隐藏”按钮时,将左边标签设为不可见,同时“隐藏”按钮变为不可用,“显示”按钮变为可用(图1-5);
(3)当单击“显示”按钮时,重新显示左边标签,同时“隐藏”按钮变为可用,“显示”
PrivateSubCommand1_Click()
Label1.Caption="你好,张三!
"
Command1.Enabled=False
EndSub
PrivateSubCommand2_Click()
Label1.Visible=False
Command3.Enabled=True
Command2.Enabled=False
EndSub
PrivateSubCommand3_Click()
Label1.Visible=True
Command2.Enabled=True
Command3.Enabled=False
EndSub
实验2.1设计一个程序,运行时界面如图2-1所示。
当单击“左”、“右”、“上”、“下”按钮时,标签分别向左、右、上、下移动。
PrivateSubCommand1_Click()
Label1.Left=Label1.Left-100
EndSub
PrivateSubCommand2_Click()
Label1.Left=Label1.Left+100
EndSub
PrivateSubCommand3_Click()
Label1.Top=Label1.Top-100
EndSub
PrivateSubCommand4_Click()
Label1.Top=Label1.Top+100
EndSub
实验2.2设计一个程序,在文本框中输入一个3位整数,单击按钮后,在标签上输出该数的百位数、十位数和个位数,运行界面如图2-2所示。
PrivateSubCommand1_Click()
Label1.Caption="百位数:
"+Left(Text1.Text,1)+"十位数:
"+Mid(Text1.Text,2,1)+"个位数:
"+Right(Text1.Text,1)
EndSub
实验2.3设计一个程序,实现简单计算的功能、
PrivateSubCommand1_Click()
DimaAsSingle,bAsSingle,cAsSingle
a=Text1.Text
b=Text2.Text
c=a+b
Label1.Caption="+"
Text3.Text=c
EndSub
PrivateSubCommand2_Click()
DimaAsSingle,bAsSingle,cAsSingle
a=Text1.Text
b=Text2.Text
c=a-b
Label1.Caption="-"
Text3.Text=c
EndSub
PrivateSubCommand3_Click()
DimaAsSingle,bAsSingle,cAsSingle
a=Text1.Text
b=Text2.Text
c=a*b
Label1.Caption="*"
Text3.Text=c
EndSub
PrivateSubCommand4_Click()
DimaAsSingle,bAsSingle,cAsSingle
a=Text1.Text
b=Text2.Text
c=ab
Label1.Caption=""
Text3.Text=c
EndSub
PrivateSubCommand5_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
EndSub
PrivateSubCommand6_Click()
End
EndSub
实验2.4设计一个程序,单击“输入”按钮可弹出一个输入对话框,提示用户输入带区号的电话号码,区号为4为,号码为8位,比如输入“7”,然后将区号和电话号码在消息对话框中显示出来,运行界面如图2-4所示。
PrivateSubCommand1_Click()
DimcAsString
c=InputBox("输入带区号的电话号码,区号为4为,号码为8位,比如输入“7”:
")
MsgBox("区号:
"+Left(c,4)+Chr(13)+Chr(10)+"号码:
"+Right(c,8))
EndSub
实验3.1在两个文本框中输入实数,单击按钮,显示“较小值是xxx”。
PrivateSubCommand1_Click()
DimaAsSingle,bAsSingle,mAsSingle
a=Text1.Text
b=Text2.Text
Ifam=a
Else
m=b
EndIf
MsgBox"较小值是"&m
EndSub
实验3.2输入三个实数,计算其中的最大值,运行界面如图3-1所示。
采用变量m来存放中间过程和结果
PrivateSubCommand1_Click()
DimaAsSingle,bAsSingle,cAsSingle,mAsSingle
a=Text1.Text
b=Text2.Text
c=Text3.Text
Ifa>bThen'将a,b的较大值存入m
m=a
Else
m=b
EndIf
Ifc>mThenm=c'再将m与c比较,得到最大值
Text4.Text=m
EndSub
注:
比较a,b部分可以写成单行If结构:
Ifa>bThenm=aElsem=b
实验3.3用输入对话框输入x,根据下式计算对应的y,并在窗体上输出y的值。
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=InputBox("请输入x的值:
",0)
Ifx>10Then
y=Sqr(x)+Sin(x)
ElseIfx<10Then
y=2*x^3+6'注意:
乘号不能省略
Else
y=0
EndIf
Print"y的值是"&y
EndSub
实验3.4由键盘输入(1~7)范围内的整数,试编程将其转换为中文表示的星期几,运行界面如图3-2所示。
PrivateSubCommand1_Click()
DimnAsInteger,wAsString'注意:
w的类型必须为String
n=Text1.Text
Ifn=1Then
w="星期一"
ElseIfn=2Then
w="星期二"
ElseIfn=3Then
w="星期三"
ElseIfn=4Then
w="星期四"
ElseIfn=5Then
w="星期五"
ElseIfn=6Then
w="星期六"
ElseIfn=7Then
w="星期日"
Else
w="错误的输入"
EndIf
Text2.Text=w
EndSub
实验3.5(选做)由键盘输入3个数,试编程将它们的中间数打印出来
PrivateSubCommand1_Click()
DimaAsSingle,bAsSingle,cAsSingle,mAsSingle
a=Text1.Text
b=Text2.Text
c=Text3.Text
Ifa>=bAndb>=cThen
m=b
ElseIfa>=cAndc>=bThen
m=c
ElseIfb>=aAnda>=cThen
m=a
ElseIfb>=cAndc>=aThen
m=c
ElseIfc>=aAnda>=bThen
m=a
Else
m=b
EndIf
Text4.Text=m
EndSub
实验4.1编写过程Commandl_Click,显示对话框输入n(n>0),循环n次,每次随机产生一个两位数,求出其中的偶数之和,并在标签框Label1上显示。
PrivateSubCommand1_Click()
DimnAsInteger,iAsInteger,aAsInteger,sAsInteger
Randomize'初始化随机数
n=InputBox("请输入n:
")
Fori=1Ton
a=Int(Rnd*90)+10'随机生成一个两位数存于变量a中
Printa;'显示在屏幕上,以便校对(实际编程可以省略)
IfaMod2=0Thens=s+a'判断是否为偶数
Nexti
Label1.Caption=s
EndSub
说明:
随机生成两位数也可以用a=(Int(Rnd*9)+1)*10+Int(Rnd*10)
实验4.2编写过程Commandl_Click,用InputBox函数输入10个学生的成绩,统计后依次用标签控件Labell~Labe13显示优秀(85-100)、通过(60-84)和未通过(小于60)的人数。
PrivateSubCommand1_Click()
Dimn1AsInteger,n2AsInteger,n3AsInteger,CJAsInteger
Fori=1To10
CJ=InputBox("请输入成绩(一共10个成绩):
")
IfCJ>=85AndCJ<=100Then
n1=n1+1
ElseIfCJ>=60AndCJ<=84Then
n2=n2+1
ElseIfCJ<60Then
n3=n3+1
EndIf
Nexti
Label1.Caption=n1
Label2.Caption=n2
Label3.Caption=n3
EndSub
实验4.3编制事件程序Command1_Click,执行该过程时输入n,并计算下列表达式的值,然后将计算结果在文本框控件Text1中显示。
PrivateSubCommand1_Click()
DimnAsInteger,iAsInteger,sAsSingle
n=InputBox("请输入n:
")
s=1
Fori=2Ton
s=s+i((i+1)*(i+2))
Nexti
Text1.Text=s
EndSub
实验4.4打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数。
例如,153是一水仙花数,因为
程序1:
用3个数字组合成百位数的办法,生成所有的三位数进行判断。
DimaAsInteger,bAsInteger,cAsInteger'a代表百位数字,b十位,c各位
DimsAsInteger's存放组合成的三位数
Fora=1To9'百位数字取值范围是1-9
Forb=0To9'十位数字取值范围是0-9
Forc=0To9'个位数字取值范围是0-9
s=a*100+b*10+c'组合成的三位数
Ifs=a*a*a+b*b*b+c*c*cThen'判断是否水仙花数
Prints
EndIf
Nextc
Nextb
Nexta
---
程序2:
将百位数拆分出每一位,来判断是否水仙花数。
DimiAsInteger'存放循环取值的三位数
DimaAsInteger,bAsInteger,cAsInteger'a存放百位数字,b十位,c各位
Fori=100To999
a=Int(i100)
b=Int((i-a*100)10)
c=iMod10
Ifi=a*a*a+b*b*b+c*c*cThen'判断是否水仙花数
Printi
EndIf
Nexti
实验4.5用近似公式求值,当时不再累加。
PrivateSubCommand1_Click()
DimiAsInteger,sAsSingle,tAsSingle
t=1
Do
i=i+1
s=s+1i^2
LoopUntil1i^2<10^-5
PrintSqr(6*s)
EndSub
实验4.6(选做)一个两位数的正整数,如果将其个位数与十位数对调所生成的数称为对调数,如28是82的对调数。
现给定一个两位的正整数,请找到另一个两位的正整数,使这两个数之和等于它们各自的对调数之和,如56+32=65+23。
PrivateSubForm_Click()
DimiAsInteger,jAsInteger,mAsInteger,nAsInteger
m=InputBox("")
n=(mMod10)*10+m\10
Fori=10To99
j=(iMod10)*10+i\10
Ifi+m=j+nThen
Printm,i
ExitFor
EndIf
Nexti
EndSub
实验5.1输入10个数给x数组,找出其中值为最大的元素并将其与第一个元素互换,找出值最小的元素并将其与最后一个元素互换,其他元素不动。
如
原来:
8,7,9,15,0,3,-8,19,31,5
输出:
31,7,9,15,0,3,5,19,8,-8
PrivateSubForm_Click()
Dimx(10)AsInteger,iAsInteger
DimMaxAsInteger,mAsInteger,MinAsInteger,nAsInteger'Max、m存最大值和最大值位置;Min、n存最小值和最小值位置
Fori=1To10
x(i)=InputBox("请输入第"&i&"个数:
")
Printx(i);'显示在窗体上
Nexti
Print'显示换行
Max=x
(1)
Min=x
(1)
m=1
n=1
Fori=1To10
IfMaxMax=x(i)
m=i'记录最大值位置
EndIf
IfMin>x(i)Then
Min=x(i)
n=i'记录最小值位置
EndIf
Nexti
Ifm>1Then'如果最大元素不是第一个,则与第一个交换
x(m)=x
(1)
x
(1)=Max
EndIf
Ifn<10Then'如果最小元素不是第10个,则与第10个交换
x(n)=x(10)
x(10)=Min
EndIf
Fori=1To10'在窗体上显示结果
Printx(i);
Nexti
EndSub
注意:
如果第一个为最小元素,则结果出错,因为最小值被最大值调换了。
可以这么改:
在最后一个If前添加一行“Ifn=1Thenn=m”可以设定新的最小值所在位置。
====================
实验5.2编写事件过程Command1_Click,完成下列运算:
(1)输入10个数到整型数组a;
(2)将a
(1)各位数字和赋值到b
(1)、a
(2)各位数字和赋值到b
(2)、...、a(10)各位数字和赋值到b(10);
(3)在窗体上以一行输出a数组各元素值(保持原输入值不变);
(4)在窗体上以一行输出b数组各元素值。
PrivateSubCommand1_Click()
Dima(10)AsInteger,b(10)AsInteger,iAsInteger
'下面完成
(1):
Fori=1To10
a(i)=InputBox("请输入第"&i&"个数:
")
Nexti
'
(1)完成,下面完成
(2):
Fori=1To10
t=a(i)'取元素
Whilet>0'分解t的每一位,并加入到b(i)中
b(i)=b(i)+(tMod10)'取出t的个位数,加入b(i)中
t=t\10’t缩小十倍,去掉原来的个位
Wend
Nexti
'
(2)完成,下面完成(3):
Fori=1To10
Printa(i);
Nexti
Print
'(3)完成,下面完成(4):
Fori=1To10
Printb(i);
Nexti
EndSub
====================
实验5.3利用随机函数产生30个不同的三位正整数,打印出这30个数,然后将它们按从大到小的次序排序,并打印出排序后的结果。
(完全可以参照:
书上实例,可以用冒泡排序法,也可以用选择排序法)
====================
实验5.4(选做)输入n后,再输入n个数a1,a2,…,an,按照下列公式计算s的值并显示。
公式1:
v=(a1+a2+...+an)n
公式2:
s=Sqr((a1-v)^2+(a2-v)^2+...+(an-v)^2))n
PrivateSubForm_Click()
Dima()AsSingle,nAsInteger,iAsInteger
DimsumAsSingle,vAsSingle,sAsSingle
n=InputBox("请输入元素个数:
")
ReDima(n)
Fori=1Ton
a(i)=InputBox("请输入第"&i&"个数:
")
Printa(i);'显示在窗体上
Nexti
Print'显示换行
'求出v:
Fori=1Ton
sum=sum+a(i)
Nexti
v=sumn
'求出s:
sum=0
Fori=1To10
sum=sum+(a(i)-v)^2
Nexti
s=Sqr(sum)n
'显示结果:
Printv,s
EndSub
====================
实验6.1编写一个求三个数最大值的函数max(x,y,z),然后调用此函数求下列表达式的值,首先在文本框中输入a,b,c三个数,然后单击“计算”按钮,在文本框中输出表达式的值m。
表达式为:
'功能:
返回x,y,z的最大值
Functionmax(ByValxAsSingle,ByValyAsSingle,ByValzAsSingle)AsSingle
max=x
IfmaxIfmaxEndFunction
PrivateSubCommand1_Click()
DimaAsSingle,bAsSingle,cAsSingle,mAsSingle
a=Text1.Text
b=Text2.Text
c=Text3.Text
m=max(a,b,c)(max(a+b,b,c)*max(a,b,b+c))
Text4.Text=m
EndSub
====================
实验6.2编一求素数的函数过程Prime(x),若x是素数返回True,否则返回False。
主调程序调用Prime(x)函数输出100之内的所有素数。
'功能:
判断整数x是否素数,如果是返回True,否则返回False
FunctionPrime(ByValxAsInteger)AsBoolean
DimiAsInteger
Ifx<2ThenExitFunction'当x<2返回False
Fori=2ToSqr(x)
IfxModi=0ThenExitFunction'如果x被i整除,说明x不是素数,立刻返回
Nexti
Prime=True'x是素数
EndFunction
PrivateSubForm_Click()
DimiAsInteger
Fori=1To100
IfPrime(i)Th