实验 5 顺序结构 一 实验目的 1. 熟悉常用的输入和输出的方法 2. 掌握 InputBox 函数和 MsgBox 函数的用法 3. 掌握编写顺序结构程序的一般步骤 二 实验内容 1. 设计一个计算圆面积的程序 要求 : 利用 InputBox 函数输入圆的半径, 利用 MsgBox 显示最后的计算结果 2. 设计一个简单的水果商店结算程序 要求 : 利用文本框输入香蕉 梨子 苹果三类水果的单价和重量, 自动计算最后的总金额, 顾客付款后自动计算应得的找零 程序运行界面如图 5-1 所示 图 5-1 程序运行界面 3. 编写程序将一个 4 位整数反序输出 要求 : 采用 InputBox 函数输入这个 4 位整数, 反序后的结果显示在窗体上 三 实验指导 1. 设计一个计算圆面积的程序 思路 此题要求利用 InputBox 函数输入圆的半径, 在单击窗体的事件中定义一个单精度型变量 r, 将从 InputBox 对话框中输入的数据赋给 r, 但是要注意的是 r 为单精度型变量, 而从对话框中返回的数据为字符型变量, 因此需要用 Val 函数将字符型数据转换为数值类型
第一部分实验指导 41 获得 r 的值后就可以利用赋值计算圆面积 s 了, 该结果要求用 MsgBox 来输出, 则常量字 符串与变量 s 之间要用 & 符号进行连接, 并需要利用 Str 函数将数值型变量 s 转换为字符 类型 实验步骤 (1) 界面设计 该例由于采用各函数完成输入和输出操作, 因此新建窗体后无须界面设 计, 直接进行代码设计即可 (2) 代码设计 窗体 Form1 的单击事件代码如下 : Private Sub Form_Click() Dim r As Single, s As Single r = Val(InputBox(" 请输入半径 :", " 输入 ")) s = 3.1415 * r * r MsgBox " 圆面积为 " & Str(s), vbinformation + vbokonly, " 计算结果 " (3) 运行程序 运行程序时单击窗体, 在弹出的对话框中输入 3, 如图 5-2 所示, 则窗 体上显示的结果如图 5-3 所示 图 5-2 输入半径 图 5-3 显示结果 注意 (1)MsgBox 函数的用法, 参考配套教材上涉及到的 MsgBox 函数运用实例 (2) 本例的实现可以采用多种方法, 既可以利用文本框 标签等控件, 也可以采用各种输入输出函数或者 Print 方法等, 在做完该实验后, 可尝试采用其他方法来实现 2. 设计一个简单的水果商店结算程序 思路 本例中需要设计若干文本框用于输入三类水果的单价以及购买的重量, 程序中定义若干变量, 分别从这些文本框中获得对应的值, 通过计算得到总金额, 最后将总金额输出到对应的标签中 找零的过程类似, 结果输出到文本框内 实验步骤 (1) 界面设计 双击 工具箱 上的控件按钮, 分别向窗体添加 9 个标签控件 8 个文本框和 3 个命令按钮, 注意调整各个控件的大小和位置 界面设计如图 5-4 所示
42 Visual Basic 语言程序设计教程实验指导及习题解答 ( 第二版 ) 表 5-1 (2) 属性设置 在窗体中选择不同的控件, 在属性窗口中设置它们的属性 属性设置见 图 5-4 界面设计图 5-5 已设置属性的设计界面 表 5-1 属性列表 对象属性属性值作用 1 单价 / 斤 2 重量 ( 斤 ) 3 香蕉 4 梨子 5 苹果 6 合计 : 7 显示总计 8 实付 : 9 找零 : 1 输入香蕉单价 2 输入梨子单价
第一部分实验指导 43 对象属性属性值作用 续表 3 输入苹果单价 4 输入香蕉重量 5 输入梨子重量 6 输入苹果重量 7 输入实付金额 8 显示找零金额 Command1 计算 计算总金额 Command2 清空 清空文本框 Command3 找零 计算找零 各对象属性设置完成后, 设计状态下的窗体如图 5-5 所示 (3) 代码设计 Command1 按钮实现计算功能, 其单击事件代码如下 : Private Sub Command1_Click() Dim bp As Single, bw As Single Dim pp As Single, pw As Single Dim ap As Single, aw As Single Dim suma As Single bp = Val(1) bw = Val(4) pp = Val(2) pw = Val(5) ap = Val(3) aw = Val(6) ' 各变量从文本框中获得值 suma = bp * bw + pp * pw + ap * aw 7. = suma 'bp 代表香蕉单价,bw 代表香蕉重量 'pp 代表梨子单价,pw 代表梨子重量 'ap 代表苹果单价,aw 代表苹果重量 '7 中显示总金额 ' 计算总金额 Command2 按钮清空所有显示数据的控件, 其单击事件代码如下 : Private Sub Command2_Click()
44 Visual Basic 语言程序设计教程实验指导及习题解答 ( 第二版 ) 1 = "" 2 = "" 3 = "" 4 = "" 5 = "" 6 = "" 7. = "" 7 = "" 8 = "" Command3 按钮实现找零功能, 其单击事件代码如下 : Private Sub Command3_Click() Dim sum As Single, pay As Single, ret As Single sum = Val(7.) ' 获得总金额 pay = Val(7) ' 获得实付 ret = pay - sum ' 计算找零 8 = ret ' 输出结果 (4) 运行程序 运行程序时对应输入顾客购买的水果单价及重量, 单击 计算 按钮, 就会出现合计的金额 ; 当顾客付款后, 在 实付 对应的文本框内输入金额, 单击 找零 按 钮, 对应文本框中则出现找零金额 单击 清空 按钮, 用于清空显示数据的控件, 方便下一 次计算 某次结算的运行结果见图 5-1 3. 编写程序将一个 4 位整数反序输出 思路 该程序的算法一般有如下两种 : (1) 利用 Mod 函数和 \ 运算依次分离出该 4 位整数的千位 百位 十位和个位数字 给 4 个变量, 再重新将这 4 个变量组合成反序的 4 位数即可 (2) 将这个 4 位数转换为字符串来处理 利用 Left Right 和 Mid 函数取它的各位字符, 最后将取出的字符用字符连接符 & 重新组合成反序字符串 实验步骤 (1) 界面设计 在窗体上添加 1 个标签和 1 个文本框,1 用于输入一个 4 位整数, 反序后的数值利用 Print 方法直接显示在窗体上 注意标签和文本框的位置要稍微偏下, 留出 窗体显示的位置 另外设计两个按钮, 分别采用算法 1 和算法 2 来解决反序的问题 表 5-2 (2) 属性设置 在窗体中选择不同的控件, 在属性窗口中设置它们的属性 属性设置见 表 5-2 属性列表 对象属性属性值 1 输入一个四位数 : 1
第一部分实验指导 45 对象属性属性值 续表 Command1 反序 1 Command2 反序 2 各对象属性设置完成后, 设计状态下的窗体如图 5-6 所示 图 5-6 已设置属性的设计界面 (3) 代码设计 Command1 的单击事件代码如下 : Private Sub Command1_Click() Dim m As Integer, n As Integer Dim a As Integer, b As Integer, c As Integer, d As Integer m = Val(1) a = m \ 1000 ' 取千位数 b = (m - a * 1000) \ 100 ' 取百位数 c = (m - a * 1000 - b * 100) \ 10 ' 取十位数 d = m Mod 10 ' 取个位数 Print d * 1000 + c * 100 + b * 10 + a ' 反序输出 注意 此方法只能解决各位数不为 0 的 4 位数反序, 若有某位数为 0, 则只能采用 Command2 对应的程序 Command2 的单击事件代码如下 : Private Sub Command2_Click() Dim n As String Dim a As String, b As String, c As String, d As String n = Trim(1) a = Left(n, 1) ' 取千位数 b = Mid(n, 2, 1) ' 取百位数 c = Mid(n, 3, 1) ' 取十位数 d = Right(n, 1) ' 取个位数
46 Visual Basic 语言程序设计教程实验指导及习题解答 ( 第二版 ) Print d & c & b & a ' 反序输出 (4) 运行程序 在文本框内输入任意一个 4 位整数, 单击 反序 1 按钮, 在窗体上显 示为该 4 位数的反序结果 单击 反序 2 按钮的运行结果与前面显示的结果一致 某次运行 效果如图 5-7 所示 图 5-7 程序运行界面 四 练习题 1. 利用 MsgBox 函数实现如图 5-8 所示的效果 (a) 图 5-8 运行结果 (b) 2. 利用文本框输入三角形的三边长度, 并对三角形的面积进行计算 提示 : 已知三角形的三边为 a b c, 计算三角形的面积可以用海伦公式 : s= p (p a) (p b) (p c), 其中 p= a b c 2 3. 利用 InputBox 函数输入参数 a b c, 计算二次方程 ax 2 +bx+c=0 的两个根 ( 仅考虑有实根的情况 )