VisualBasic程序设计教程第版实验答案.docx

上传人:b****2 文档编号:1345210 上传时间:2023-04-30 格式:DOCX 页数:80 大小:70.01KB
下载 相关 举报
VisualBasic程序设计教程第版实验答案.docx_第1页
第1页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第2页
第2页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第3页
第3页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第4页
第4页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第5页
第5页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第6页
第6页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第7页
第7页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第8页
第8页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第9页
第9页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第10页
第10页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第11页
第11页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第12页
第12页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第13页
第13页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第14页
第14页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第15页
第15页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第16页
第16页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第17页
第17页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第18页
第18页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第19页
第19页 / 共80页
VisualBasic程序设计教程第版实验答案.docx_第20页
第20页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VisualBasic程序设计教程第版实验答案.docx

《VisualBasic程序设计教程第版实验答案.docx》由会员分享,可在线阅读,更多相关《VisualBasic程序设计教程第版实验答案.docx(80页珍藏版)》请在冰点文库上搜索。

VisualBasic程序设计教程第版实验答案.docx

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()

Print

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

Private

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2