二、教科书中的练习题参考答案
习题三,参考答案
一、VB定义了哪几种数据类型?各自有什么特点?变量有哪几种类型?常量有哪几种类型?
答:在Visual Basic中,数据类型分为三大类:基本数据类型、用户自定义数据类型、枚举类型。基本数据类型是系统定义的一些类型,用户自定义数据类型和枚举类型时用户根据实际情况可以自己定义的类型,并且类型中可以混合基本数据类型。
变量有整型、长整型、单精度浮点型、双精度浮点型、货币型、字节型、字符串型、布尔型、日期型、对象型、变体型数据,还可以使用户自定义类型和枚举类型。
常量有整型、长整型、单精度浮点型、双精度浮点型、货币型、字符串型、布尔型、日期型。
二、说明下列哪些是Visual Basic合法的直接常量,并分别指出它们的类型。 100.0 0 123D3 0100 “ASDF” ”1234.5” #2006/6/1# 100# &H123 True
答:合法的直接常量有:100.0、123D3、0100、“ASDF”、”1234.5”、 #2006/6/1#、100#、&H123、True、
其中整型数据有:0100、&H123 单精度数据有: 100.0
双精度数据有:123D3、100#
字符型数据有:“ASDF”、”1234.5” 日期型数据有:#2006/6/1# 布尔型数据有:True
三、下列数据哪些是变量,哪些是常量?是什么类型的常量?
Name ”name” False ff ”11/16/99” 答:变量有:Name、ff、
常量有:”name”、 False、”11/16/99”
其中”name”、 ”11/16/99”是字符串型,False是布尔型
四、下列符号中,哪些可以是Visual Basic的合法变量名?
Sum33 x45_0 450_x Single XYZ False
答:上面合法的变量名有:Sum33、x45_0、XYZ。
五、把下列数学表达式写成Visual Basic表达式:
56|x?y|?z(1?xy)(1) (2)
10x?3yxy(3)
答:(1)Abs(x+y)+z^5 (2) (1+x*y)^6 (3)(10*x+Sqr(3*y))/(x*y)
六、计算下列函数的值:
(1) Int(-3.14159) (2) Sqr(Sqr(81)) (3) Int(Abs(99-100)/2) (4) Sgn(7*3+2-10) 答:
(1) -4 (2) 3 (3) 0 (4) 1
七、写出下列表达式的值:
(1) (2^4+8*3 Mod 5)/2 (2) 4^3\\7+8-(6>3 or 5<34 and 8<>7) 答: (1) 10 (2) 18
八、设X=8,Y=4,Z=5,求下列表达式的值(实数保留三位小数): (1) X+4*Z (2) X^3/7
答:(1) 28 (2) 73.143
习题四,参考答案 4.1 略。 4.2 略。 4.3 略。
4.4 自由落体位移公式为:S=v0t+0.5gt2
其中v0为初速度,g为重力加速度,t为经历的时间,编写程序,求位移量S。设v0=5m/s,t=10s,g=9.8 m/s2,在程序中,把g定义为常量,用InputBox()函数输入v0、t两个变量,求位移量S。
【分析】v0为初速以及经历的时间t由InputBox函数输入,套用公式计算即可。 【源程序代码如下】
Private Sub Cmd1_Click()
Dim v0 As Single, t As Integer, s As Single Const g As Single = 9.8
v0 = InputBox(\请输入初速度:\
t = InputBox(\请输入经历时间(秒):\ s = v0 * t + 0.5 * g * t ^ 2
Print \所经历的位移为:\米。\End Sub
程序运行界面如图4.1所示。
图4.1 程序运行界面
4.5编写程序,用InputBox()函数输入四个整数,计算并输出这四个数的和及其平均值,把结果在窗体上显示出来。 【源程序代码如下】
Private Sub Cmd1_Click()
Dim a As Integer, b As Integer, c As Integer, d As Integer Dim s As Integer, p As Single
a = Val(InputBox(\请输入第一个整数:\ b = Val(InputBox(\请输入第二个整数:\
c = Val(InputBox(\请输入第三个整数:\ d = Val(InputBox(\请输入第四个整数:\ s = a + b + c + d p = s / 4
Print \和为:\平均值为:\End Sub
4.6在窗体上画两个命令按钮,分别编写如下事件过程: Private Sub Command1_Click()
a = InputBox(\请输入第一个整数\ b = InputBox(\请输入第二个整数\ Print a + b End Sub
Private Sub Command2_Click()
a = Val(InputBox(\请输入第一个整数\ b = Val(InputBox(\请输入第二个整数\ Print a + b End Sub
程序运行后,分别单击两个命令按钮,先后在两个输入对话框内分别输入456和123,输出结果是什么,为什么?
【分析】单击第1个按钮分别输入456和123后,输出的结果为456123。单击第2个按钮分别输入456和123后,输出的结果为579。原因是用InputBox函数输入的数为字符,通过第1个按钮事件输入后的两个数作为两个字符的连接(这里“+”为字符运算符),故输出为456123。而第2个按钮事件输入的字符经过Val函数,将字符转换为数字,故为两个数相加,结果为579。
4.7 编写程序,要求从文本框内输入三种商品的单价、购买数量,在标签上显示所用的总金额。
【分析】每种商品需要单价、购买数量两个文本框进行数据的输入,数据处理为一简单的赋值语句,数据的输出利用标签的标题(Caption)属性。 【源程序代码如下】
Private Sub Cmd1_Click()
Dim d1 As Single, s1 As Integer Dim d2 As Single, s2 As Integer Dim d3 As Single, s3 As Integer Dim t As Single d1 = Text1.Text s1 = Text2.Text d2 = Text3.Text s2 = Text4.Text d3 = Text5.Text s3 = Text6.Text
t = d1 * s1 + d2 * s2 + d3 * s3
Label7.Caption = \总价格为:\End Sub
图4.2 程序运行界面
4.8 略。
2
4.9 求解一元二次方程ax+bx+c=0的根。
【分析】a、b、c三个系数由文本框输入;根有三种形式(用情况语句或者并行ElseIf语句实现)。
【源程序代码如下】
Private Sub Cmd1_Click()
Dim a As Single, b As Single, c As Single, pbs As Single a = Text1.Text b = Text2.Text c = Text3.Text
pbs = b ^ 2 - 4 * a * c Select Case pbs Case Is > 0
Label4.Caption = \ Label5.Caption = \ Case Is = 0
Label4.Caption = \ Case Is < 0
Label4.Caption = \该方程无实数解。\ End Select End Sub
程序运行界面如图4.3所示。
图4.3 程序运行界面
4.10 假设有以下每周工作安排:
周一、周三:高等数学课 周二、周四:程序设计课 周五:外语课 周六:政治课
编写程序,对以上工作日程进行检索,程序运行后,要求输入一周中的某一天,程序将输出这一天的工作安排,0~6分别代表星期日到星期六,如果输入0~6以外的数,则提示输入错误。
【源程序代码如下】
Private Sub Cmd1_Click() Dim a As String
a = InputBox(\请输入0~6\ Select Case a Case 0
MsgBox \星期日,休息!\ Case 1
MsgBox \星期一,高等数学!\ Case 2
MsgBox \星期二,程序设计!\ Case 3
MsgBox \星期三,高等数学!\ Case 4
MsgBox \星期四,程序设计!\ Case 5
MsgBox \星期五,外语!\ Case 6
MsgBox \星期六,政治!\ Case Else
MsgBox \输入信息错误!\ End Select End Sub
运行界面如图4.4所示。
图4.4 程序运行界面