VisualBasic程序设计教程第版实验答案Word格式.docx
《VisualBasic程序设计教程第版实验答案Word格式.docx》由会员分享,可在线阅读,更多相关《VisualBasic程序设计教程第版实验答案Word格式.docx(72页珍藏版)》请在冰豆网上搜索。
实验1-2
模仿教学篇例1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。
各个控件及属性窗口的设置见表2.1.2,背景图形文件可以选择自己喜欢的,按钮上的图标可通过Windows搜索功能查找。
以“学号-1-2”为项目名保存。
表2.1.2属性设置
Form1
实验1.2"
Picture:
选择自己喜欢的图片
我开始学习程序设计"
FontSize=36;
BackStyle=0
Style=1;
Picture="
clock02.ico"
ToolTipText="
自动"
Command2
key04.ico"
手动"
Timer1
Interval=0
注:
因为印刷错误,例题1.1中两个命令按钮的图形与事件过程代码不一致,需要调整。
自定义事件过程MyMove代码应调整为,可实现文字移动方向的改变
SubMyMove()
Label1.MoveLabel1.Left-50,Label1.Top
IfLabel1.Left<
0ThenLabel1.Left=Form1.Width
Timer1.Interval=200
PrivateSubCommand2_Click()
Timer1.Interval=0
CallMyMove
PrivateSubForm_Load()
PrivateSubTimer1_Timer()
实验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
Text1.Text="
实验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"
PrivateSubForm_DblClick()
Cls
双击窗体"
\p3.jpg"
结束使用VB"
装入窗体"
\p1.jpg"
装入图片"
实验1-5
命令按钮、字号、内容和格式的复制练习,效果如下图所示。
有关控件及属性参见下表。
以“学号-1-5”为项目名保存。
图2.1.3实验1.5运行界面
表2.1.3属性设置
实验1.5"
输入文本复制文本"
VB功能强大,但要下功夫学习才能学好"
MultiLine=True;
ScrollBar=2
Text2
MultiLine=True
隶书25磅"
复制=>
(1)Command1:
使得Text1的字体和字号根据命令按钮显示的要求改变
(2)Command2:
要求将Text1选中的内容及其格式复制到Text2。
选中的内容通过Text1的SelText属性获得
为使Text2文本框保持Text1中的字符格式,通过Text2.FontSize=Text1.FontSize和Text2.FontName=Text1.FontName实现
Text1.FontName="
隶书"
Text1.FontSize=25
Text2=Text1.SelText
Text2.FontName=Text1.FontName
Text2.FontSize=Text1.FontSize
实验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%
Image1.Width=Image1.Width*0.5
Image1.Height=Image1.Height*0.5
Image1.Width=w
Image1.Height=h
w=Image1.Width
h=Image1.Height
实验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"
)。
Text1.Text=Int(Rnd*9+1)
Text2.Text=Int(Rnd*90+10)
Text3.Text=Int(Rnd*900+100)
Text4.Text=Format((Val(Text1.Text)+Val(Text2.Text)+Val(Text3.Text))/3,"
0.00"
PrivateSubCommand3_Click()
Text2.Text="
Text3.Text="
Text4.Text="
实验2-2
我国有13亿人口,假定按人口年增长0.8%计算,多少年后我国人口超过26亿。
(1)已知年增长率r=0.8%,求人数超过26亿的年数n公式为:
其中:
Log(x)为对数函数,Log
(2)缘由Log(13/26),0.8%需写成0.008
(2)该题目的界面设计由读者自行设计。
n=Int(Log
(2)/Log(1+0.008)+1)
Text1=n&
"
年后人口超过26亿"
实验2-3
输入一个合法的3位正整数,测试其数值合法性后,逆序输出并显示。
例如,输入“734”,输出是“437”
(2)利用“MOD”和“\”运算符将一个3位数分离出3个1位数,然后利用乘法和加法运算将3个1位数连接成一个逆序的3位数。
图2.2.2实验2.3运行界面图2.2.3出错信息
Dimx%,x1%,x2%,x3%
x=Val(Text1)
x1=xMod10
x2=(xMod100)\10
x3=x\100
Label2=x1*100+x2*10+x3
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
IfNotIsNumeric(Text1.Text)Then
EndIf
PrivateSubText1_LostFocus()
MsgBox"
输入非数值数据,请重新输入"
,"
数据检验"
Text1.SetFocus
实验2-4
图2.2.4实验2.4运行界面
事件过程可以在Form_Click中编码,输出控件可以使用标签控件。
Label1=UCase(Text1.Text)
Label2=Len(Text1.Text)
Label3=Left(Text1,11)
Label4=Mid(Text1,12,6)
Label5=Right(Text1,5)
实验2-5
图2.2.5实验2.5运行界面
Label2="
Val函数的结果"
Text2=Val(Text1.Text)
Str函数的结果"
Text2=Str(Text1.Text)
Chr函数的结果"
Text2=Chr(Text1.Text)
PrivateSubCommand4_Click()
Asc函数的结果"
Text2=Asc(Text1.Text)
实验2-6
“清屏”按钮后,清除窗体所显示的图形。
利用循环语句和String函数。
读者也可以发挥自己的想像力,设计更美观的图形。
图2.2.6实验2.6运行界面图2.2.7进一步要求运行界面
Print
Fori=1To5
PrintTab(15-i*2);
String(2*i-1,"
★"
);
String(10-(2*i-1),"
☆"
Nexti
实验2-7
用InputBox输入一个正实数,用Print方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。
PrivateSubcommand1_Click()
x=Val(InputBox("
输入一个正实数"
"
计算"
0))
pf=Format(x*x,"
0.000"
pfg=Format(Sqr(x),"
lf=Format(x*x*x,"
lfg=Format(x^(1/3),"
平方为:
;
pf;
Space(3);
平方根为:
pfg;
立方为:
lf;
立方根为:
lfg
实验3-1
在购买某物品时,若所标明的价钱x在下述范围内,所付钱y按对应折扣支付:
提示:
此例用多分支结构实现,注意计算公式和条件表达式的正确书写。
Dimx!
y!
输入x的值"
))
Ifx<
1000Then
y=x
ElseIfx<
2000Then
y=0.9*x
3000Then
y=0.8*x
Else
y=0.7*x
Printy
实验3-2
编一个程序输入上网的时间并计算上网费用,计算方法如下:
同时为了鼓励多上网,每月收费最多不超过150元。
首先利用多分支If语句根据3个时间段算出费用,然后再用单分支If语句对超过150元的费用设置为150元。
输入上网时间"
10Then
y=30
50Then
y=30+2.5*(x-10)
y=30+2.5*40+2*(x-50)
Ify>
150Then
y=150
实验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‘用”&
”字符串连接符
若要按从小到大的次序显示,程序将如何修改?
z!
x=InputBox("
inputx"
y=InputBox("
inputy"
z=InputBox("
inputz"
xyz"
排序前"
x;
y;
z
yThent=x:
x=y:
y=t
zThent=x:
x=z:
z=t
Ify<
zThent=y:
y=z:
排序后"
实验3-4
图2.3.2实验3.4运行界面
对于存放操作符的文本框Text3,利用SelectCase语句实现相应的运算。
PrivateSubText3_LostFocus()
SelectCaseTrim(Text3)
Case"
+"
Text4=Val(Text1)+Val(Text2)
-"
Text4=Val(Text1)-Val(Text2)
*"
Text4=Val(Text1)*Val(Text2)
/"
IfVal(Text2)=0Then
分母为零,重新输入"
Text2="
Text2.SetFocus
Text4=Val(Text1)/Val(Text2)
EndSelect
实验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("
脚数必须是偶数"
y=N/2-M
IfN>
4*MOrN<
2*MThen
出现荒唐解,请重新输入"
Label2=M-y
Label3=y
实验3-6
输入一元二次方程的ax2+bx+c=0的
图2.3.4实验3.6运行界面
要考虑实根,要求判断b^2-4*a*c>
=0。
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,"
Text5=Format(-b/t,"
ElseIfde>
Text4=Format((-b+Sqr(de))/t,"
Text5=Format((-b-Sqr(de))/t,"
)&
&
Format(Sqr(Abs(de))/t,"
i"
Private