文档库 最新最全的文档下载
当前位置:文档库 › VisualBasic程序设计教程第版实验答案

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

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

※声明:

1.实验所属课本原件为《Visual Basic程序设计教程(第4版)(□

主编龚沛曾□编者杨志强陆慰民谢步瀛)》;

2.实验答案代码采用红色字体突出;

3.仅提供课本前七个实验的代码,之后的实验上课考试均不涉及故

不作;

4.教学平台上机实验、课本篇后实验,两者题目操作略有差异,作

业以前者要求为准,故以下答案代码为前者代码,如对后者代码有所需求请私信;

5.本文为作者原创,复制转载请注明出处;

6.如果对代码有所疑问,或者略感繁琐想直接要已完成实验,请私

信;

7.浏览、复制、下载后请给作者一个合理的评价,感激不尽。实验1-1

编制简单的欢迎界面程序。

要求:在屏幕上显示“欢迎学习Visual Basic”;在文本框

Text1中输入姓名;单击命令按钮“你输入的姓名是”,在

Label3标签显示在文本框中输入的姓名。

“学号-1-1.frm”和“学号-1-1.vbp”文件名保存。以后每个实验项目的命名规则都是如此,即“学号-实验号-实验题目”“”和“”)

Private Sub Command1_Click()

Label3.Caption = Text1.Text

End Sub

实验1-2

模仿教学篇例1.1,将事件过程中的自上而下移动改为自右向左移动,同时考虑文字超出窗体边界的情况。各个控件及

End Sub

Sub MyMove()

Label1.Move Label1.Left - 50, Label1.Top

If Label1.Left < 0 Then Label1.Left = Form1.Width End Sub

Private Sub Command1_Click()

Timer1.Interval = 200

End Sub

Private Sub Command2_Click()

Timer1.Interval = 0

Call MyMove

End Sub

Private Sub Form_Load()

Timer1.Interval = 0

End Sub

Private Sub Timer1_Timer()

Call MyMove

End Sub

实验1-3

“学号-1-3”为项目名保存。

图2.1.2 实验1.3运行界面

提示:

(1) 对窗体编写两个事件:Form_Load 事件中对文本框置初

值为空;Form_Click事件对鼠标单击文本框计数。

(2) 对鼠标单击文本框计数计算为:

Text1.Text=Val(Text1.Text)+1

Private Sub Form_click()

Text1.Text = Val(Text1.Text) + 1

End Sub

Private Sub Form_Load()

Text1.Text = ""

End Sub

实验1-4

按照教学篇例2.2对窗体三个事件过程(Load、Click、

DblClick)编程,在3个事件中装入不同的图片(自己选择);

在属性窗口练习鼠标指针改变:MousePointer(值为99,用户自定义)、MouseIcon为Key04.ico图标文件,练习窗体图标(Icon)、边框线类型(BorderStyle)、最大化按钮和最小化按钮的改变,运行观察其效果。以“学号-1-4”为项目名保存。

提示:

例题中Form_Resize事件可以不考虑,Picture属性设置中注意图片文件有后缀名,运行测试前需要先保存项目名,保证图片文件和程序文件在同一个文件夹下,否则会出现图片找不到的错误提示。

Private Sub Form_Click()

Caption = "单击窗体"

Picture = LoadPicture(App.Path + "\p2.jpg")

Print "欢迎使用VB"

End Sub

Private Sub Form_DblClick()

Cls

Caption = "双击窗体"

Picture = LoadPicture(App.Path + "\p3.jpg")

Print "结束使用VB"

End Sub

Private Sub Form_Load()

Caption = "装入窗体"

Picture = LoadPicture(App.Path + "\p1.jpg")

Print "装入图片"

End Sub

实验1-5

Text2.FontName=Text1.FontName实现

Private Sub Command1_Click()

Text1.FontName = "隶书"

Text1.FontSize = 25

End Sub

Private Sub Command2_Click()

Text2 = Text1.SelText

Text2.FontName = Text1.FontName

Text2.FontSize = Text1.FontSize

End Sub

实验1-6

图片缩小、还原的设置。

“学号-1-6”为项目名保存。

图2.1.4 实验1.6运行界面

要求:

(1)单击“缩小一半”按钮,图片纵、横均缩小一半。

(2)单击“还原”按钮,图片与初始装入时同大。

提示:为了实现还原效果,要做以下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()

Image1.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

图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 ")。

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.Text = 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)该题目的界面设计由读者自行设计。

Private Sub Command1_Click()

n = Int(Log(2) / Log(1 + 0.008) + 1)

Text1 = n & "年后人口超过26亿"

End Sub

实验2-3

输入一个合法的3位正整数,测试其数值合法性后,逆序输

出并显示。例如,输入“734”,输出是“437”

提示:

(2)利用“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 Not 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

图2.2.4 实验2.4运行界面

提示:

事件过程可以在Form_Click中编码,输出控件可以使用标签控件。

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.2.5 实验2.5运行界面

Private Sub Command1_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

“清屏”按钮后,清除窗体所显示的图形。

提示:

利用循环语句和String函数。读者也可以发挥自己的想像

力,设计更美观的图形。

图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 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); "平方根为:"; 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

编一个程序输入上网的时间并计算上网费用,计算方法如下:

同时为了鼓励多上网,每月

收费最多不超过150元。

提示:

首先利用多分支If语句根据3个时间段算出费用,然后再用单分支If语句对超过150元的费用设置为150元。Private Sub Form_Click()

Dim x!, y!

x = Val(InputBox("输入上网时间"))

If x < 10 Then

y = 30

ElseIf x < 50 Then

y = 30 + 2.5 * (x - 10)

Else

y = 30 + 2.5 * 40 + 2 * (x - 50)

End If

If y > 150 Then

y = 150

End If

Print y

End Sub

实验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 ‘用”&”字符串连接符

思考:若要按从小到大的次序显示,程序将如何修改?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

图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) - Val(Text2)

Case "*"

相关文档