VB上机试验.docx
《VB上机试验.docx》由会员分享,可在线阅读,更多相关《VB上机试验.docx(21页珍藏版)》请在冰豆网上搜索。
VB上机试验
上机试验一
1.中英文切换程序。
鼠标单击“中文”命令按钮后,在标签中显示中文“谢谢光临!
”;如果单击“英文“命令按钮后,在标签中显示英文“Thanksforyourattendance!
”,如图所示。
窗体文件名为SY1-2,工程文件名也为SY1-2。
上机试验二
1.在窗口中添加一个标签,设置BorderStyle属性为有边框,编写程序代码实现:
单击窗体后,标签上显示如图所示的信息,标签文字字体设置为隶书,文字大小20,加粗,倾斜,下画线。
完成后保存文件,窗体文件名为SY2-1,工程文件名也为SY2-1。
2.在窗体上,按下鼠标右键拖动,在窗体的标题栏中显示鼠标指针的坐标位置。
完成后保存文件,窗体文件名为SY2-2,工程文件名也为SY2-2。
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then
Form1.Caption=X&","&Y
EndIf
EndSub
3.在窗体上,按下鼠标左键,窗体的背景色变为绿色,并显示“按下鼠标键,触发MouseDown事件”;松开鼠标左键,窗体的背景色变为红色,并显示“松开鼠标键,触发MouseUp事件”。
完成后保存文件,窗体文件名为SY2-3,工程文件名也为SY2-3。
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=1Then
Me.BackColor=vbGreen
Me.Print"按下鼠标键,触发MouseDown事件"
EndIf
EndSub
PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Cls
IfButton=1Then
Me.BackColor=vbRed
Me.Print"松开鼠标键,触发MouseUp事件"
EndIf
EndSub
4.运行程序时,按下某个键,在窗体上显示其Ascii值和对应的按下的键名。
如在键盘上依次按下“A”、“Y”、“7”、“,”和“<”键的运行结果如图。
窗体文件名为SY2-4,工程文件名为SY2-4。
PrivateSubForm_Activate()
PrintTab
(1);"keyascii值";Tab(15);"对应的按下的键名"
EndSub
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
PrintKeyAscii;Tab(15);Chr(KeyAscii)
EndSub
上机试验三
1.在两文本框中输入数据,单击等号命令按钮,结果显示在标签中,如图所示。
完成后保存文件,窗体文件名为SY3-2,工程文件名也为SY3-2。
2.编写程序实现窗体一出现时(Load事件过程),用Print语句在窗体第六行20列处开始打印显示“Hello,World!
”。
完成后保存文件,窗体文件名为SY3-3,工程文件名也为SY3-3。
(1.注意在开头加上Form1.AutoRedraw=True!
PrivateSubForm_Load()
Form1.AutoRedraw=True
Show
Fori=1To6
Ifi=6Then
PrintTab(20);"hello,world!
"
Else
Print""
EndSub
3.编写程序实现窗体一出现时(Load事件过程),用Print方法在窗体上显示计算机系统当前的日期和时间,要求字体加粗、倾斜、下画线,字的颜色为红色。
窗体文件名为SY3-4,工程文件名也为SY3-4。
PrivateSubForm_Load()
Show
Form1.FontBold=True
Form1.ForeColor=vbRed
Form1.FontUnderline=True
Form1.FontItalic=True
Print"系统当前的日期和时间;"&Now
EndSub
上机试验四
1.
如图所示,编写程序代码实现单击命令按钮两文本框中内容的互换。
工程文件名:
sy4-1;窗体文件名:
sy4-1
PrivateSubCommand1_Click()
t=Text1.Text
Text1.Text=Text2.Text
Text2.Text=t
EndSub
2.
添加2标签和2文本框,运行时在第一个文本框中输入一个字符,然后按回车键,对应字符的ASCII编码值显示在第二个文本框中。
工程文件名:
sy4-2;窗体文件名:
sy4-2
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
KeyAscii=13
Text2.Text=Asc("text1.text")
EndSub
提示:
用KeyPress事件,回车键ASCII值为13
3.编写程序,调用InputBox函数输入存款的本金X和存款年限N,计算若干年后本金和利息的总和是多少?
假设年利率固定为4%,计算公式为:
总计=本金*(1+4%)N,计算的结果通过调用MsgBox函数显示。
工程文件名:
sy4-3;窗体文件名:
sy4-3
PrivateSubForm_Click()
Dimx%,n%,s&
x=InputBox("请输入本金")
n=InputBox("请输入年限")
s=x*(1+0.04)*n
MsgBox"本金与利息总和为:
"&s
EndSub
4.编写程序,单击命令按钮显示一个[100,300]之间的随机整数和一个随机大写英文字母。
在显示这些信息之前,清除掉旧信息。
工程文件名:
sy4-4;窗体文件名:
sy4-4
PrivateSubCommand1_Click()
Dimx%,y
Cls
x=Int(Rnd*201+100)
y=Chr(65+Int(Rnd*26))
Printx;y
EndSub
上机试验五
1.运行时单击窗口,调用Inputbox函数输入一个数,判断其是否为正整数,如果为正整数判断其奇偶性,把结果信息显示在MsgBox对话框上,保存窗体sy5-1,工程sy5-1。
2.运行时单击窗口,随机产生一个1000-9999间的整数,判断其是否是6的倍数。
用Print方法把产生的随奇数和判断结果显示在窗口上。
保存窗体sy5-2,工程sy5-2。
3.设银行的定期存款利率为:
一年期2.52%,二年期3.06%,三年期3.69%,五年期4.14%。
请输入存款金额,并选择存款年限,编程计算到期利息。
保存窗体sy5-3,工程sy5-3。
上机试验六
1.利用两种循环语句计算1+2+3+……+100的结果。
保存窗体sy6-1,工程sy6-1
PrivateSubForm_Click()
Dims%,i%
s=0
Fori=1To10
s=s+i
Nexti
Prints
EndSub
2.利用一种循环语句计算12的阶乘。
保存窗体sy6-2,工程sy6-2。
PrivateSubForm_Click()
Dims&,i%
s=1
Fori=1To12
s=s*i
Nexti
Prints
EndSub
3.利用Inpubox函数输入2个正整数,求其最小公倍数,结果用Msgbox函数显示。
保存窗体sy6-3,工程sy6-3。
PrivateSubForm_Click()
Dimr%,m%,n%,s%,i%
m=Val(InputBox("请输入一个正整数"))
n=Val(InputBox("请输入一个正整数"))
Ifmt=m:
m=n:
n=t
EndIf
s=m*n
Do
r=mModn
m=n
n=r
LoopUntilr=0
i=s/m
MsgBox"最小公倍数"&i
EndSub
4.利用Inpubox函数输入1个正整数,判断其是否为质数(素数),结果用Msgbox函数显示。
保存窗体sy6-4,工程sy6-4。
PrivateSubForm_Click()
Dimx%,r%,i%
x=Val(InputBox("请输入一个整数"))
Fori=2Tox/2
r=xModi
Nexti
Ifi=0Then
MsgBox"该数为质数"
Else
MsgBox"该数不为质数"
EndIf
EndSub
5.
利用循环语句和Print方法,产生如图所示的星号图形。
保存窗体分别为sy6-5、sy6-6、sy6-7,工程sy6-5、sy6-6、sy6-7。
第一题
PrivateSubForm_Click()
Dimi%,k%
Fori=1To9
PrintTab(i);
Fork=1To8
Print"*";
Nextk
Nexti
EndSub
第二题
PrivateSubForm_Click()
Dimi%,k%
Fori=1To9
PrintTab(i*2-1)
Fork=1To17-(i-1)*2
Print"*";
Nextk
Nexti
EndSub
上机试验七
1.随机产生12个两位整数,放在数组中,用Print方法显示出每个元素的值;同时计算这些随机数的平均值,用Print方法显示出来。
与第三题同理
2.随机产生8个三位整数,放在数组中,用Print方法显示出每个元素的值;同时找出这些随机数中的最小数,用Print方法显示出来。
PrivateSubForm_Click()
Dima(1To12)AsInteger,i%
Fori=1To12
a(i)=Int(Rnd*90+10)
Printa(i);
Nexti
Min=a
(1)
Fori=2To12
Ifa(i)Nexti
PrintMin
EndSub
3.随机产生10个三位整数,放在数组中,用Print方法显示出每个元素的值;同时对这些随机数按从小到大的顺序排序,排序后用Print方法显示出来这些随机数。
PrivateSubForm_Click()
Dima(1To10)AsInteger,i%,k%
Fori=1To10
a(i)=Int(Rnd*900+100)
Printa(i);
Nexti
Fori=1To9
Min=a(i)
Fork=i+1To10
Ifa(k)t=a(i)
a(i)=a(k)
a(k)=t
EndIf
Nextk
Nexti
Print"排序"
Fori=1To10
Printa(i);
Nexti
EndSub
上机试验八
1.输入一个整数,编写一函数判断该数是否是偶数
2.输入一个整数,编写一函数判断该数是否同时是2和7的倍数
PrivateSubForm_Click()
Dimx%,r1%,r2%
x=Int(InputBox("请输入一个整数"))
r1=xMod2
r2=xMod7
Ifr1=0Andr2=0Then
Print"该数是2和7的倍数"
Else
Print"该数不是2和7的倍数"
EndIf
EndSub
3.输入一个整数,编写一函数判断该数是否是素数(书上101页见照片)
4.随机产生10个3位整数存放在一数组中,编写一过程对该数组排序(与实验七第三题一样)
上机试验九
1、画出如图所示的图形,保存窗体sy9-1,工程sy9-1
PrivateSubForm_Click()
Form1.Scale(-100,50)-(100,-50)
Line(-100,0)-(100,0)
Line(0,50)-(0,-50)
Fori=1To9
Line(-90+(i-1)*10,45-(i-1)*5)-(90-(i-1)*10,-45+(i-1)*5),,B
Nexti
EndSub
2、画出如图所示的图形,保存窗体sy9-2,工程sy9-2
PrivateSubForm_Click()
Dimx!
y!
Form1.Scale(-6.28,2)-(6.28,-2)
Line(-6.28,0)-(6.28,0)
Line(0,2)-(0,-2)
Form1.CurrentX=-6.28
Form1.CurrentY=0
Forx=-6.28To6.28Step0.01
y=Sin(x)
Line-(x,y)
Nextx
EndSub
3、画出如图所示的图形,保存窗体sy9-3,工程sy9-3
PrivateSubForm_Click()
Dimi%
Form1.Scale(0,0)-(800,200)
Fori=0To7
Form1.Circle(50+i*100,100),50,vbBlack
FillStyle=i
Nexti
EndSub
上机试验十
1.拖动滚动条改变标签字体大小
PrivateSubForm_Load()
Label1.Caption="重庆"
Label1.Alignment=2
Label1.BorderStyle=1
HScroll1.Min=0
HScroll1.Max=26
HScroll1.SmallChange=2
HScroll1.LargeChange=5
EndSub
PrivateSubHScroll1_Change()
Label1.FontSize=HScroll1.Value
EndSub
2.滚动条控制图片框的背景色
3.实时显示计算机系统时间
PrivateSubForm_Click()
Label1.Caption=Now
EndSub
4.用时钟控件控制标签在窗口中左右来回移动.
Dimdx
PrivateSubForm_Load()
Label1.Caption="重庆"
Timer1.Interval=1
dx=200
EndSub
PrivateSubTimer1_Timer()
Label1.MoveLabel1.Left+dx
IfLabel1.Left>=Form1.ScaleWidthThen
dx=-dx
ElseIfLabel1.Left<=0Then
dx=-dx
EndIf
EndSub
其他
1.
在输入框中输入正整数n,计算:
将结果显示在Label1中。
PrivateSubform_Click()
n=Val(InputBox(“输入一个正整数”))
Sum=0
Prod=1
Fork=1Ton
Prod=Prod*k
Sum=Sum+1/prod
Nextk
Printsum
EndSub
2.通过键盘输入n(<15)求'S=1!
+3!
+5!
+……+(2*n-1)!
的值
PrivateSubForm_Click()
Dims#,i%,j%,x%
x=InputBox("请输入小于15的数")
Sum=0
Fori=1Tox
s=1
Forj=1To2*i-1
s=s*j
Nextj
Sum=Sum+s
Nexti
PrintSum
EndSub
3.在窗体上画圆:
在窗体上按鼠标左键,以按键处为圆心,画出半径为200-500线条颜色为红色的圆。
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Randomize
IfButton=1Then
r=Int(Rnd*301+200)
Circle(X,Y),r,vbRed
EndIf
EndSub
4.
用Line方法在图片框Picture1中画出下图所示的矩形波(要求画出9个周期)。
PrivateSubForm_Load()
Picture1.ScaleMode=3
Picture1.ScaleWidth=200
Picture1.ScaleHeight=50
EndSub
PrivateSubForm_Click()
Picture1.PSet(10,40)
Fori=1To9
Picture1.Line-Step(0,-30)
Picture1.Line-Step(10,0)
Picture1.Line-Step(0,30)
Picture1.Line-Step(10,0)
Nexti
EndSub
5.在窗体上矩形:
在窗体上按鼠标右键,以按键处矩形的左上角,矩形的边长为200-300间的随机数
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then
X1=Int(Rnd*201+300)
Y1=Int(Rnd*201+300)
Line(X,Y)-Step(X1,Y1),,B
EndIf
EndSub
定义一个5×5的二维数组,其对角线元素为2。
,其余元素为5
PrivateSubForm_Click()
DimiAsInteger,jAsInteger,a(1To5,1To5)AsInteger
Fori=1To5
Forj=1To5
Ifi=jOri+j=6Then
a(i,j)=2
Else:
a(i,j)=5
EndIf
PrintTab(3*j-1);a(i,j);
Nextj
Nexti
EndSub
倒计时系统
Dimt%
PrivateSubCommand1_Click()
t=60*Val(Text1)
Timer1.Enabled=True
EndSub
PrivateSubForm_Load()
Timer1.Enabled=False
Timer1.Interval=1000
EndSub
PrivateSubTimer1_Timer()
Dims%,m%
t=t-1
m=t\60
s=tMod60
Label1=m&"分"&s&"秒"
Ift=0Then
Timer1.Enabled=False
MsgBox"时间到!
"
EndIf
EndSub
DimRAsInteger,GAsInteger,BAsInteger
PrivateSubForm_Load()
VScroll1.Min=0
VScroll1.Max=255
VScroll2.Min=0
VScroll2.Max=255
VScroll3.Min=0
VScroll3.Max=255
VScroll1.LargeChange=20
VScroll1.SmallChange=5
VScroll2.LargeChange=20
VScroll2.SmallChange=5
VScroll3.LargeChange=20
VScroll3.SmallChange=5
EndSub
PrivateSubVScroll1_Change()
Picture1.BackColor=RGB(VScroll1.Value,VScroll2.Value,VScroll3.Value)
EndSub
PrivateSubVScroll2_Change()
Picture1.BackColor=RGB(VScroll1.Value,VScroll2.Value,VScroll3.Value)
EndSub
PrivateSubVScroll3_Change()
Picture1.BackColor=RGB(VScroll1.Value,VScroll2.Value,VScroll3.Value)
EndSub
DimtiAsSingle,xAsInteger,jAsSingle
PrivateSubForm_Click()
j=1:
ti=0
Forx=1To11111Step1
j=j*x
ti=1/j+ti
If(1/j)<(10^-7)ThenExitFor
Nextx
ti=ti+1
Printti
EndSub