(完整word版)Visual-Basic程序设计教程(第4版)实验答案[2]模板.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(完整word版)Visual-Basic程序设计教程(第4版)实验答案[2]模板.pdf》由会员分享,可在线阅读,更多相关《(完整word版)Visual-Basic程序设计教程(第4版)实验答案[2]模板.pdf(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、声明:1.实验所属课本原件为 Visual Basic 程序设计教程(第 4 版)(主编 龚沛曾 编者 杨志强 陆慰民 谢步瀛);2.实验答案代码采用红色字体突出;3.仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故不作;4.教学平台上机实验、课本篇后实验,两者题目操作略有差异,作业以前者要求为准,故以下答案代码为前者代码,如对后者代码有所需求请私信;5.本文为作者原创,复制转载请注明出处;6.如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私信;7.浏览、复制、下载后请给作者一个合理的评价,感激不尽。实验 1-1 编制简单的欢迎界面程序。要求:在屏幕上显示“欢迎学习 Visua
2、l Basic”;在文本框Text1 中输入姓名;单击命令按钮“你输入的姓名是”,在Label3 标签显示在文本框中输入的姓名。程序运行效果如图 2.1.1 所示。程序以“学号-1-1.frm”和“学号-1-1.vbp”文件名保存。以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”。(如某同学的学号为 A10414001,所完成的是实验 2 的第 3 题,那么程序文件名为“A10414001-2-3.frm”和“A10414001-2-3.vbp”)图 2.1.1 实验 1.1 运行界面 提示:(1)实验所用到的控件及属性设置见表 2.1.1。表 2.1.1 属 性 设 置 控件
3、名 属 性 Label1 Caption=欢迎学习 Visual Basic;Font 属性:字号为二号,字体为隶书,Aligment=2(居中)Label2 Caption=请输入你的姓名;Font 属性:字体为楷体,有下划线 Label3 Caption=,BorderStyle=1 Text1 Text=Command1 Caption=你输入的姓名是(2)“欢迎学习 Visual Basic”要在两行显示,只要将 Label1控件的宽度缩小一些。Private Sub Command1_Click()Label3.Caption=Text1.Text End Sub 实验 1-2 模仿
4、教学篇例 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自动 Com
5、mand2 Caption=;Style=1;Picture=key04.ico;ToolTipText手动 Timer1 Interval=0 注:因为印刷错误,例题 1.1 中两个命令按钮的图形与事件过程代码不一致,需要调整。提示:自定义事件过程 MyMove 代码应调整为,可实现文字移动方向的改变 Sub MyMove()Label1.Move Label1.Left-50,Label1.Top If Label1.Left 0 Then Label1.Left=Form1.Width End Sub Sub MyMove()Label1.Move Label1.Left-50,Labe
6、l1.Top If Label1.Left 要求:(1)Command1:使得 Text1 的字体和字号根据命令按钮显示的要求改变(2)Command2:要求将 Text1 选中的内容及其格式复制到Text2。选中的内容通过 Text1 的 SelText 属性获得 提示:为使 Text2 文本框保持 Text1 中的字符格式,通过Text2.FontSize=Text1.FontSize 和Text2.FontName=Text1.FontName 实现 Private Sub Command1_Click()Text1.FontName=隶书 Text1.FontSize=25 End S
7、ub Private Sub Command2_Click()Text2=Text1.SelText Text2.FontName=Text1.FontName Text2.FontSize=Text1.FontSize End Sub 实验 1-6 图片缩小、还原的设置。窗体上放置一个 Image 图像控件和两个命令按钮。Image 图像控件装入自己喜欢的图片,设置 Stretch 属性为 True,使得图片随着图像控件的大小而变,如图 2.1.4 所示。以“学号-1-6”为项目名保存。图 2.1.4 实验 1.6 运行界面 要求:(1)单击“缩小一半”按钮,图片纵、横均缩小一半。(2)单击
8、“还原”按钮,图片与初始装入时同大。提示:为了实现还原效果,要做以下 3 件事。(1)必须在事件过程外,即程序代码最上方声明窗体级变量:Dim h%,w%用户输入的变量声明语句(2)在 Form1_Load 事件中保存图像控件的初始值:w=Image1.Width h=Image1.Height(3)在 Command2_Click 事件中还原为初始值:Image1.Width=w Image1.Height=h 缩小一半 Command1_Click 事件请读者自行完成。思考:若要设置图片放大效果,如何修改代码?Dim h%,w%Private Sub Command1_Click()Ima
9、ge1.Width=Image1.Width*0.5 Image1.Height=Image1.Height*0.5 End Sub Private Sub Command2_Click()Image1.Width=w Image1.Height=h End Sub Private Sub Form_Load()w=Image1.Width h=Image1.Height End Sub 实验 2-1 随机生成 3 个正整数,其中一个 1 位数,1 个 2 位数,1 个 3位数,计算它们的平均值,保留两位小数,运行界面如图2.2.1 所示。图 2.2.1 实验 2.1 运行界面 提示:(1)随
10、机数生成某范围内的正整数公式为 Int(Rnd*范围+基数)其中范围=数的上限-下限+1,基数=数的下限。例如,要生成 2 位数,语句为 Int(Rnd*(99-10+1)+10)=Int(Rnd*90+10)(2)保留两位小数,利用 Format 函数,形式为 Format(要显示的数值,0.00)。Private Sub Command1_Click()Text1.Text=Int(Rnd*9+1)Text2.Text=Int(Rnd*90+10)Text3.Text=Int(Rnd*900+100)End Sub Private Sub Command2_Click()Text4.Tex
11、t=Format(Val(Text1.Text)+Val(Text2.Text)+Val(Text3.Text)/3,0.00)End Sub Private Sub Command3_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=End Sub 实验 2-2 我国有 13 亿人口,假定按人口年增长 0.8%计算,多少年后我国人口超过 26 亿。提示:(1)已知年增长率 r=0.8%,求人数超过 26 亿的年数 n公式为:其中:Log(x)为对数函数,Log(2)缘由 Log(13/26),0.8%需写成 0.008(2)该题目的界面设计
12、 由读者自行设计。Private Sub Command1_Click()n=Int(Log(2)/Log(1+0.008)+1)Text1=n&年后人口超过 26 亿 End Sub 实验 2-3 输入一个合法的 3 位正整数,测试其数值合法性后,逆序输出并显示。例如,输入“734”,输出是“437”,如图 2.2.2所示。提示:(1)利用 Text1_LostFocus 事件,输入数据合法性检查调用 IsNumeric 函数,参阅教学篇例 2.5;若有错利用 MsgBox显示出错信息,如图 2.2.3 所示;清除文本框内输入的非法数据,通过 SetFocus 定位于文本框处,重新输入。(2
13、)利用“MOD”和“”运算符将一个 3 位数分离出 3 个 1位数,然后利用乘法和加法运算将 3 个 1 位数连接成一个逆序的 3 位数。图 2.2.2 实验 2.3 运行界面 图 2.2.3 出错信息 Private Sub Command1_Click()Dim x%,x1%,x2%,x3%x=Val(Text1)x1=x Mod 10 x2=(x Mod 100)10 x3=x 100 Label2=x1*100+x2*10+x3 End Sub Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=13 Then If N
14、ot IsNumeric(Text1.Text)Then Text1.Text=End If End If End Sub Private Sub Text1_LostFocus()If Not IsNumeric(Text1.Text)Then MsgBox 输入非数值数据,请重新输入,数据检验 Text1.Text=Text1.SetFocus End If End Sub 实验 2-4 输入一个字符串,分别调用 UCase、Len、Mid、Left、Right函数,显示如图 2.2.4 所示的效果。图 2.2.4 实验 2.4 运行界面 提示:事件过程可以在 Form_Click 中编码
15、,输出控件可以使用标签控件。Private Sub Form_click()Label1=UCase(Text1.Text)Label2=Len(Text1.Text)Label3=Left(Text1,11)Label4=Mid(Text1,12,6)Label5=Right(Text1,5)End Sub 实验 2-5 效仿实验 2.4,验证转换函数的使用,Text1 文本框输入字符串,Text2 文本框显示调用所选函数的结果,4 个命令按钮为转换函数,Label2 显示对应的函数名,运行效果如图2.2.5 所示。图 2.2.5 实验 2.5 运行界面 Private Sub Comman
16、d1_Click()Label2=Val 函数的结果 Text2=Val(Text1.Text)End Sub Private Sub Command2_Click()Label2=Str 函数的结果 Text2=Str(Text1.Text)End Sub Private Sub Command3_Click()Label2=Chr 函数的结果 Text2=Chr(Text1.Text)End Sub Private Sub Command4_Click()Label2=Asc 函数的结果 Text2=Asc(Text1.Text)End Sub 实验 2-6 Print 方法练习,显示字符
17、图形。参考教学篇例 4.4 输出简单图形,如图 2.2.6 所示。要求窗体不可改变大小,当单击“清屏”按钮后,清除窗体所显示的图形。提示:利用循环语句和 String 函数。读者也可以发挥自己的想像力,设计更美观的图形。进一步要求:若要显示如图 2.2.7 所示的图形,程序要如何修改?图 2.2.6 实验 2.6 运行界面 图 2.2.7 进一步要求运行界面 Private Sub Command1_Click()Print For i=1 To 5 Print Tab(15-i*2);String(2*i-1,);String(10-(2*i-1),);String(2*i-1,)Next
18、i End Sub Private Sub Command2_Click()Cls End Sub 实验 2-7 用 InputBox 输入一个正实数,用 Print 方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,其间有间隔。Private Sub command1_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);平方根为:
19、;pfg;Space(3);立方为:;lf;Space(3);立方根为:;lfg End Sub 实验 3-1 在购买某物品时,若所标明的价钱 x 在下述范围内,所付钱y 按对应折扣支付:提示:此例用多分支结构实现,注意计算公式和条件表达式的正确书写。Private Sub Form_Click()Dim x!,y!x=Val(InputBox(输入 x 的值)If x 1000 Then y=x ElseIf x 2000 Then y=0.9*x ElseIf x 3000 Then y=0.8*x Else y=0.7*x End If Print y End Sub 实验 3-2 编一
20、个程序输入上网的时间并计算上网费用,计算方法如下:同时为了鼓励多上网,每月收费最多不超过 150 元。提示:首先利用多分支 If 语句根据 3 个时间段算出费用,然后再用单分支 If 语句对超过 150 元的费用设置为 150 元。Private Sub Form_Click()Dim x!,y!x=Val(InputBox(输入上网时间)If x 10 Then y=30 ElseIf x 150 Then y=150 End If Print y End Sub 实验 3-3 输入 x,y,z 三个数,按从大到小的次序显示,如图 2.3.1 所示。图 2.3.1 实验 3.3 运行界面 提
21、示:利用 InputBox 函数输入 3 个数,存放到数值型变量中,然后对其进行比较;若放在字符串变量中,有时会得到不正确的结果(因为字符串是从左到右的规则比较,例如会出现“34”“2345”“126789”的情况)。对三个数进行排序,只能通过两两比较,一般可用三条单分支 if 语句来实现。方法如下:先将 x 与 y 比较,使得 xy;然后将 x 与 z 比较,使得 xz,此时 x 最大;最后将 y 与 z 比较,使得 yz。要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接符将多个变量连接显示。例如要输出 x、y、z:Print”排序后”;x;”;y;”;z 用分号将多个变量显示
22、 也可 Print”排序后”&x&”&y&”&z 用”&”字符串连接符 思考:若要按从小到大的次序显示,程序将如何修改?Private Sub Command1_Click()Dim x!,y!,z!x=InputBox(input x)y=InputBox(input y)z=InputBox(input z)Print x y z Print 排序前;x;y;z If x y Then t=x:x=y:y=t If x z Then t=x:x=z:z=t If y z Then t=y:y=z:z=t Print 排序后;x;y;z End Sub 实验 3-4 编一模拟袖珍计算器的完整
23、程序,界面如图 2.3.2 所示。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。图 2.3.2 实验 3.4 运行界面 提示:对于存放操作符的文本框 Text3,利用 Select Case 语句实现相应的运算。Private Sub Command2_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=End Sub Private Sub Text3_LostFocus()Select Case Trim(Text3)Case+Text4=Val(Text1)+Val(Text2)Case-Text4=Val(Text1)-V
24、al(Text2)Case*Text4=Val(Text1)*Val(Text2)Case/If Val(Text2)=0 Then MsgBox 分母为零,重新输入 Text2=Text2.SetFocus Else Text4=Val(Text1)/Val(Text2)End If End Select End Sub 实验 3-5 利用计算机解决古代数学问题”鸡兔同笼问题”。即已知在同一个笼子里有总数为 M 只鸡和兔,鸡和兔的总脚数为 N 只,求鸡和兔各有多少只?提示:鸡、兔的只数通过已知输入的 M,N 列出方程可解,设鸡为 x只,兔为 y 只,则计算公式为:但不要求出荒唐的解(如 3.
25、5 只鸡、4.5 只兔,或者求得的只数为负数)。因此,在 Text2_LostFocus 事件中要考虑下面两个条件:输入的总脚数 N 必须是偶数,否则提示数据错误的原因,要求重新输入数据。(使用求余方法判断,即 N Mod 20)图 2.3.3 实验 3.5 运行界面 若求出的只数为负数,提示数据错误的原因,如图 2.3.3所示,重新输入数据。(使用总只数和总脚数的关系,即 N4*M Or N2*M)Private Sub Text2_LostFocus()Dim M%,N%,y%M=Val(Text1)N=Val(Text2)If N Mod 2 0 Then MsgBox(脚数必须是偶数)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word Visual Basic 程序设计 教程 实验 答案 模板
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内