VisualBasic程序设计教程第版实验答案.docx
- 文档编号:7036703
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:72
- 大小:70.02KB
VisualBasic程序设计教程第版实验答案.docx
《VisualBasic程序设计教程第版实验答案.docx》由会员分享,可在线阅读,更多相关《VisualBasic程序设计教程第版实验答案.docx(72页珍藏版)》请在冰豆网上搜索。
VisualBasic程序设计教程第版实验答案
※声明:
1.实验所属课本原件为《VisualBasic程序设计教程(第4版)(□主编龚沛曾□编者杨志强陆慰民谢步瀛)》;
2.实验答案代码采用红色字体突出;
3.仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故不作;
4.教学平台上机实验、课本篇后实验,两者题目操作略有差异,作业以前者要求为准,故以下答案代码为前者代码,如对后者代码有所需求请私信;
5.本文为作者原创,复制转载请注明出处;
6.如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私信;
7.浏览、复制、下载后请给作者一个合理的评价,感激不尽。
实验1-1
编制简单的欢迎界面程序。
要求:
在屏幕上显示“欢迎学习VisualBasic”;在文本框Text1中输入姓名;单击命令按钮“你输入的姓名是”,在Label3标签显示在文本框中输入的姓名。
“学号-1-1.frm”和“学号-1-1.vbp”文件名保存。
以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”“”和“”)
图2.1.1实验1.1运行界面
提示:
表2.1.1属性设置
控件名
属性
Label1
Caption="欢迎学习VisualBasic";Font属性:
字号为二号,字体为隶书,Aligment=2(居中)
Label2
Caption="请输入你的姓名";Font属性:
字体为楷体,有下划线
Label3
Caption="",BorderStyle=1
Text1
Text=""
Command1
Caption="你输入的姓名是"
(2)“欢迎学习VisualBasic”要在两行显示,只要将Label1控件的宽度缩小一些。
PrivateSubCommand1_Click()
Label3.Caption=Text1.Text
EndSub
实验1-2
模仿教学篇例1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。
各个控件及属性窗口的设置见表2.1.2,背景图形文件可以选择自己喜欢的,按钮上的图标可通过Windows搜索功能查找。
以“学号-1-2”为项目名保存。
表2.1.2属性设置
控件名
属性
Form1
Caption="实验1.2";Picture:
选择自己喜欢的图片
Label1
Caption="我开始学习程序设计";FontSize=36;BackStyle=0
Command1
Caption="";Style=1;Picture="clock02.ico";ToolTipText="自动"
Command2
Caption="";Style=1;Picture="key04.ico";ToolTipText="手动"
Timer1
Interval=0
注:
因为印刷错误,例题1.1中两个命令按钮的图形与事件过程代码不一致,需要调整。
提示:
自定义事件过程MyMove代码应调整为,可实现文字移动方向的改变
SubMyMove()
Label1.MoveLabel1.Left-50,Label1.Top
IfLabel1.Left<0ThenLabel1.Left=Form1.Width
EndSub
SubMyMove()
Label1.MoveLabel1.Left-50,Label1.Top
IfLabel1.Left<0ThenLabel1.Left=Form1.Width
EndSub
PrivateSubCommand1_Click()
Timer1.Interval=200
EndSub
PrivateSubCommand2_Click()
Timer1.Interval=0
CallMyMove
EndSub
PrivateSubForm_Load()
Timer1.Interval=0
EndSub
PrivateSubTimer1_Timer()
CallMyMove
EndSub
实验1-3
“学号-1-3”为项目名保存。
图2.1.2实验1.3运行界面
提示:
(1)对窗体编写两个事件:
Form_Load事件中对文本框置初值为空;Form_Click事件对鼠标单击文本框计数。
(2)对鼠标单击文本框计数计算为:
Text1.Text=Val(Text1.Text)+1
PrivateSubForm_click()
Text1.Text=Val(Text1.Text)+1
EndSub
PrivateSubForm_Load()
Text1.Text=""
EndSub
实验1-4
按照教学篇例2.2对窗体三个事件过程(Load、Click、DblClick)编程,在3个事件中装入不同的图片(自己选择);在属性窗口练习鼠标指针改变:
MousePointer(值为99,用户自定义)、MouseIcon为Key04.ico图标文件,练习窗体图标(Icon)、边框线类型(BorderStyle)、最大化按钮和最小化按钮的改变,运行观察其效果。
以“学号-1-4”为项目名保存。
提示:
例题中Form_Resize事件可以不考虑,Picture属性设置中注意图片文件有后缀名,运行测试前需要先保存项目名,保证图片文件和程序文件在同一个文件夹下,否则会出现图片找不到的错误提示。
PrivateSubForm_Click()
Caption="单击窗体"
Picture=LoadPicture(App.Path+"\p2.jpg")
Print"欢迎使用VB"
EndSub
PrivateSubForm_DblClick()
Cls
Caption="双击窗体"
Picture=LoadPicture(App.Path+"\p3.jpg")
Print"结束使用VB"
EndSub
PrivateSubForm_Load()
Caption="装入窗体"
Picture=LoadPicture(App.Path+"\p1.jpg")
Print"装入图片"
EndSub
实验1-5
命令按钮、字号、内容和格式的复制练习,效果如下图所示。
有关控件及属性参见下表。
以“学号-1-5”为项目名保存。
图2.1.3实验1.5运行界面
表2.1.3属性设置
控件名
属性
Form1
Caption="实验1.5"
Label1
Caption="输入文本复制文本"
Text1
Text="VB功能强大,但要下功夫学习才能学好";MultiLine=True;ScrollBar=2
Text2
Text="";MultiLine=True
Command1
Caption="隶书25磅"
Command2
Caption="复制=>"
要求:
(1)Command1:
使得Text1的字体和字号根据命令按钮显示的要求改变
(2)Command2:
要求将Text1选中的内容及其格式复制到Text2。
选中的内容通过Text1的SelText属性获得
提示:
为使Text2文本框保持Text1中的字符格式,通过Text2.FontSize=Text1.FontSize和Text2.FontName=Text1.FontName实现
PrivateSubCommand1_Click()
Text1.FontName="隶书"
Text1.FontSize=25
EndSub
PrivateSubCommand2_Click()
Text2=Text1.SelText
Text2.FontName=Text1.FontName
Text2.FontSize=Text1.FontSize
EndSub
实验1-6
图片缩小、还原的设置。
“学号-1-6”为项目名保存。
图2.1.4实验1.6运行界面
要求:
(1)单击“缩小一半”按钮,图片纵、横均缩小一半。
(2)单击“还原”按钮,图片与初始装入时同大。
提示:
为了实现还原效果,要做以下3件事。
(1)必须在事件过程外,即程序代码最上方声明窗体级变量:
Dimh%,w%‘用户输入的变量声明语句
(2)在Form1_Load事件中保存图像控件的初始值:
w=Image1.Width
h=Image1.Height
(3)在Command2_Click事件中还原为初始值:
Image1.Width=w
Image1.Height=h
缩小一半Command1_Click事件请读者自行完成。
思考:
若要设置图片放大效果,如何修改代码?
Dimh%,w%
PrivateSubCommand1_Click()
Image1.Width=Image1.Width*0.5
Image1.Height=Image1.Height*0.5
EndSub
PrivateSubCommand2_Click()
Image1.Width=w
Image1.Height=h
EndSub
PrivateSubForm_Load()
w=Image1.Width
h=Image1.Height
EndSub
实验2-1
图2.2.1实验2.1运行界面
提示:
(1)随机数生成某范围内的正整数公式为
Int(Rnd*范围+基数)
其中范围=数的上限-下限+1,基数=数的下限。
例如,要生成2位数,语句为
Int(Rnd*(99-10+1)+10)=Int(Rnd*90+10)
(2)保留两位小数,利用Format函数,形式为Format(要显示的数值,"0.00")。
PrivateSubCommand1_Click()
Text1.Text=Int(Rnd*9+1)
Text2.Text=Int(Rnd*90+10)
Text3.Text=Int(Rnd*900+100)
EndSub
PrivateSubCommand2_Click()
Text4.Text=Format((Val(Text1.Text)+Val(Text2.Text)+Val(Text3.Text))/3,"0.00")
EndSub
PrivateSubCommand3_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
EndSub
实验2-2
我国有13亿人口,假定按人口年增长0.8%计算,多少年后我国人口超过26亿。
提示:
(1)已知年增长率r=0.8%,求人数超过26亿的年数n公式为:
其中:
Log(x)为对数函数,Log
(2)缘由Log(13/26),0.8%需写成0.008
(2)该题目的界面设计由读者自行设计。
PrivateSubCommand1_Click()
n=Int(Log
(2)/Log(1+0.008)+1)
Text1=n&"年后人口超过26亿"
EndSub
实验2-3
输入一个合法的3位正整数,测试其数值合法性后,逆序输出并显示。
例如,输入“734”,输出是“437”
提示:
(2)利用“MOD”和“\”运算符将一个3位数分离出3个1位数,然后利用乘法和加法运算将3个1位数连接成一个逆序的3位数。
图2.2.2实验2.3运行界面图2.2.3出错信息
PrivateSubCommand1_Click()
Dimx%,x1%,x2%,x3%
x=Val(Text1)
x1=xMod10
x2=(xMod100)\10
x3=x\100
Label2=x1*100+x2*10+x3
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
IfNotIsNumeric(Text1.Text)Then
Text1.Text=""
EndIf
EndIf
EndSub
PrivateSubText1_LostFocus()
IfNotIsNumeric(Text1.Text)Then
MsgBox"输入非数值数据,请重新输入",,"数据检验"
Text1.Text=""
Text1.SetFocus
EndIf
EndSub
实验2-4
图2.2.4实验2.4运行界面
提示:
事件过程可以在Form_Click中编码,输出控件可以使用标签控件。
PrivateSubForm_click()
Label1=UCase(Text1.Text)
Label2=Len(Text1.Text)
Label3=Left(Text1,11)
Label4=Mid(Text1,12,6)
Label5=Right(Text1,5)
EndSub
实验2-5
图2.2.5实验2.5运行界面
PrivateSubCommand1_Click()
Label2="Val函数的结果"
Text2=Val(Text1.Text)
EndSub
PrivateSubCommand2_Click()
Label2="Str函数的结果"
Text2=Str(Text1.Text)
EndSub
PrivateSubCommand3_Click()
Label2="Chr函数的结果"
Text2=Chr(Text1.Text)
EndSub
PrivateSubCommand4_Click()
Label2="Asc函数的结果"
Text2=Asc(Text1.Text)
EndSub
实验2-6
“清屏”按钮后,清除窗体所显示的图形。
提示:
利用循环语句和String函数。
读者也可以发挥自己的想像力,设计更美观的图形。
图2.2.6实验2.6运行界面图2.2.7进一步要求运行界面
PrivateSubCommand1_Click()
Fori=1To5
PrintTab(15-i*2);String(2*i-1,"★");String(10-(2*i-1),"☆");String(2*i-1,"★")
Nexti
EndSub
PrivateSubCommand2_Click()
Cls
EndSub
实验2-7
用InputBox输入一个正实数,用Print方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。
PrivateSubcommand1_Click()
x=Val(InputBox("输入一个正实数","计算",0))
pf=Format(x*x,"0.000")
pfg=Format(Sqr(x),"0.000")
lf=Format(x*x*x,"0.000")
lfg=Format(x^(1/3),"0.000")
Print"平方为:
";pf;Space(3);"平方根为:
";pfg;Space(3);"立方为:
";lf;Space(3);"立方根为:
";lfg
EndSub
实验3-1
在购买某物品时,若所标明的价钱x在下述范围内,所付钱y按对应折扣支付:
提示:
此例用多分支结构实现,注意计算公式和条件表达式的正确书写。
PrivateSubForm_Click()
Dimx!
y!
x=Val(InputBox("输入x的值"))
Ifx<1000Then
y=x
ElseIfx<2000Then
y=0.9*x
ElseIfx<3000Then
y=0.8*x
Else
y=0.7*x
EndIf
Printy
EndSub
实验3-2
编一个程序输入上网的时间并计算上网费用,计算方法如下:
同时为了鼓励多上网,每月收费最多不超过150元。
提示:
首先利用多分支If语句根据3个时间段算出费用,然后再用单分支If语句对超过150元的费用设置为150元。
PrivateSubForm_Click()
Dimx!
y!
x=Val(InputBox("输入上网时间"))
Ifx<10Then
y=30
ElseIfx<50Then
y=30+2.5*(x-10)
Else
y=30+2.5*40+2*(x-50)
EndIf
Ify>150Then
y=150
EndIf
Printy
EndSub
实验3-3
输入x,y,z
图2.3.1实验3.3运行界面
提示:
①利用InputBox函数输入3个数,存放到数值型变量中,然后对其进行比较;若放在字符串变量中,有时会得到不正确的结果(因为字符串是从左到右的规则比较,例如会出现“34”>“2345”>“126789”的情况)。
②对三个数进行排序,只能通过两两比较,一般可用三条单分支if语句来实现。
方法如下:
先将x与y比较,使得x>y;然后将x与z比较,使得x>z,此时x最大;最后将y与z比较,使得y>z。
③要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接符将多个变量连接显示。
例如要输出x、y、z:
Print”排序后”;x;””;y;””;z‘用分号将多个变量显示
也可
Print”排序后”&x&””&y&””&z‘用”&”字符串连接符
思考:
若要按从小到大的次序显示,程序将如何修改?
PrivateSubCommand1_Click()
Dimx!
y!
z!
x=InputBox("inputx")
y=InputBox("inputy")
z=InputBox("inputz")
Print"xyz"
Print"排序前";x;"";y;"";z
Ifx x=y: y=t Ifx x=z: z=t Ify y=z: z=t Print"排序后";x;"";y;"";z EndSub 实验3-4 图2.3.2实验3.4运行界面 提示: 对于存放操作符的文本框Text3,利用SelectCase语句实现相应的运算。 PrivateSubCommand2_Click() Text1.Text="" Text2.Text="" Text3.Text="" Text4.Text="" EndSub PrivateSubText3_LostFocus() SelectCaseTrim(Text3) Case"+" Text4=Val(Text1)+Val(Text2) Case"-" Text4=Val(Text1)-Val(Text2) Case"*" Text4=Val(Text1)*Val(Text2) Case"/" IfVal(Text2)=0Then MsgBox"分母为零,重新输入" Text2="" Text2.SetFocus Else Text4=Val(Text1)/Val(Text2) EndIf EndSelect EndSub 实验3-5 利用计算机解决古代数学问题”鸡兔同笼问题”。 即已知在同一个笼子里有总数为M只鸡和兔,鸡和兔的总脚数为N只,求鸡和兔各有多少只? 提示: 鸡、兔的只数通过已知输入的M,N列出方程可解,设鸡为x只,兔为y只,则计算公式为: 但不要求出荒唐的解(如3.5只鸡、4.5只兔,或者求得的只数为负数)。 因此,在Text2_LostFocus事件中要考虑下面两个条件: ①输入的总脚数N必须是偶数,否则提示数据错误的原因,要求重新输入数据。 (使用求余方法判断,即NMod2<>0) 图2.3.3 实验3.5运行界面 ② PrivateSubText2_LostFocus() DimM%,N%,y% M=Val(Text1) N=Val(Text2) IfNMod2<>0Then MsgBox("脚数必须是偶数") Text2="" Text2.SetFocus Else y=N/2-M IfN>4*MOrN<2*MThen MsgBox("出现荒唐解,请重新输入") Text2="" Text2.SetFocus Else y=N/2-M Label2=M-y Label3=y EndIf EndIf EndSub 实验3-6 输入一元二次方程的ax2+bx+c=0的 图2.3.4实验3.6运行界面 提示: 要考虑实根,要求判断b^2-4*a*c>=0。 PrivateSubCommand1_Click() Dima! b! c! x1! x2! de! a=Text1 b=Text2 c=Text3 de=b*b-4*a*c t=2*a Ifde=0Then Text4=Format(-b/t,"0.00") Text5=Format(-b/t,"0.00") ElseIfde>0Then Text4=Format((-b+Sqr(de))/t,"0.00") Text5=Format((-b-Sqr(de))/t,"0.00") Else Text4=Format(-b/t,"0.00")&"+"&Format(Sqr(Abs(de))/t,"0.00")&"i" Text5=Format(-b/t,"0.00")&"-"&Format(Sqr(Abs(de))/t,"0.00")&"i" EndIf EndSub PrivateSubCom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualBasic 程序设计 教程 实验 答案