实验4分支程序设计_第1页
实验4分支程序设计_第2页
实验4分支程序设计_第3页
实验4分支程序设计_第4页
实验4分支程序设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验4 分支程序设计实验目的:1 掌握Visual Basic的常量、变量的定义和使用。2 掌握各种表达式的使用。3掌握各种标准函数的使用。4掌握分支结构程序设计方法。实验4.1计算面积实验任务:1设计程序界面如图4-1所示,在窗体上先放置框架一个,然后将三个单选按钮放置在框架中,放置两个标签框、两个文本框和两个命令按钮。2选择某种形状的同时Label1动态显示相应的“半径”或“边长”。3在Text1中输入数值后,按确定按钮,在Text2中显示计算的面积。4形状转换时,要清除前次结果(两个文本框清空),光标聚焦Text1。5按“退出”按钮,结束运行。图4-1 程序界面提示:可以根据单选按钮的V

2、alue属性进行判断,当某个按钮值为真时,则进行与之相应的计算。因此,可以使用分支结构(IfThen)来实现条件判断功能。实验步骤:1属性设置如下:控件名称属性名称属性值Label1Caption空Label2Caption 面积Text1Text 空Text2Text 空FrameCaption选择形状Option1Caption圆形Option2Caption正三角形Option3Caption正方形Command1Caption计算Command2Caption退出2添加代码Option ExplicitConst Pi As Single = 3.141593 Pi为“符号常量”类型,

3、不可再次赋值Private Sub Option1_Click() Label1 = "半径" Text1 = "" Text2 = "" Text1.SetFocusEnd SubPrivate Sub Option2_Click() Label1 = "边长" Text1 = "" Text2 = "" Text1.SetFocusEnd SubPrivate Sub Option3_Click() 填写一段程序(可以模仿Option2_Click()中的代码)End S

4、ubPrivate Sub Command1_Click() Dim r As Single, s As Single r = Val(Text1) If Option1.Value = True Then s = Pi * r 2 If Option2.Value = True Then s = r 2 * Sqr(3) / 4 If Then s = r 2 Text2 = sEnd SubPrivate Sub Command3_Click() EndEnd Sub3保存文件,调试运行并记录结果。提示:请妥善保存该程序,待到学会使用控件数组后,将三个Option按钮用控件数组生成,可以简

5、化程序代码。实验4.2登录检测实验任务:建立一个登录窗口,要求输入口令,假定口令为“Basic1234”。要求:1输入的口令在文本框中不可见,以“*”替代;单击“退出”按钮时,结束运行。图4-2 登录界面及各种提示信息2单击“确定”按钮时,若输入口令正确,显示信息“祝贺你,成功登录!”;否则显示“对不起,口令错误,无法登录!”。3若三次登录均不正确,显示“对不起,你无权登录该系统!”后结束整个应用程序。注意:将文本框的PasswordChar属性值设为“*”(只要一个星号),就可以星号替代键入的字符。实现上述功能不仅要使用分支判断语句对文本框的内容进行判断,还需要定义一个整型变量N用作计数,其

6、初值为0,登录一次不正确,N就加1,如果N=3,则结束整个应用程序。操作步骤:1窗体设计,在窗体上放置一个Label控件、一个TextBox控件和两个CommandButton按钮,按照图4-2排列控件,设置控件大小。2属性设置缺省名称属性名称属性值窗体1Caption登录nameLoginBorderStyle1-Fixed Single标签1NamelblPasswordAutoSizeTrueCaption输入口令文本框1NametxtPasswordText空PasswordChar*命令按钮1NamecmdOkCaption确定DefaultTrue命令按钮2NamecmdExitC

7、aption退出3添加代码: Option Explicit Dim N As Integer N用来统计登录次数,注意不能在过程中定义 Private Sub cmdOk_Click() If txtpassword.Text = "Basic1234" Then MsgBox "祝贺你,成功登录!" 弹出消息框 Else N = N + 1 If N = 3 Then MsgBox "对不起,你无权登录该系统!", vbExclamation 弹出消息框 End End If MsgBox "对不起,口令错误,无法登录!

8、", vbExclamation 弹出消息框 txtpassword.Text = "" txtpassword.SetFocus End If End Sub Private Sub cmdExit_Click() '退出 End End Sub4保存文件,调试运行,观察结果。思考:如果假定的口令“Basic1234”事先已经存在一个PassWord.txt文件中,如何修改上述程序?试一试。实验4.3日期显示实验任务:编程获得当天的系统日期,并以X年X月X日星期X的形式显示出来,实验结果如图4-3所示。提示:系统日期可以通过Date函数得到,年号、月份、

9、日期和星期号也可分别通过Year、Month、Day、WeekDay等函数获得。要注意的是,通过WeekDay获得的星期号是数值表示的1-7,而非大写的“星期一”-“星期日”,因此必须借助一个多分支语句加以转换。图4-3 显示当天日期界面实验步骤:1在窗体上放置一个Label控件。2属性设置控件名称属性名称属性值标签1NameLblDateFont宋体三号粗斜体Caption空BoderStyle1Aligement2AutoSizeTrueWordWrapTrue3添加代码(请补充缺少的语句)'Rq为当前系统日期,Y为年号,m为月份,d为日期,w1为数值型的星期号,w2为转换后的大写

10、的星期号Dim Y As Integer, m As Integer, d As Integer, w1 As IntegerDim Rq As DateDim w2 As StringPrivate Sub Form_Load() Rq = _ Y = _ m = _ d = _ w1 = Weekday(Rq, vbMonday) '设星期一为第一天,缺省值星期日是第一天 Select Case w1 Case 1 w2 = "一" Case 2 w2 = "二" Case 3 w2 = "三" Case 4 w2 = &

11、quot;四" Case 5 w2 = "五" Case 6 w2 = "六" Case 7 w2 = "日" End Select LblDate.Caption = _End Sub4保存文件,调试运行。实验4.4计算器实验任务:编程模拟一个袖珍计算器,它可以根据输入的操作符进行不同的计算,要求最少要做加、减、乘、除四种运算。实验结果如图4-4所示。图4-4 实验4.4运行界面注意:判断一下除数为零的情况。若除数为零,要用Msgbox消息框提示“除数不能为零”、清空输入数2的文本框、让该文本框获得焦点,等待重新输入合法的

12、数据。提示:设计界面如图4-4所示,属性设置如下:控件名称属性名称属性值Label1Caption输入数1Label2Caption 输入数2Label3Caption输入操作符Label4Caption 计算结果Text1Text 空Text2Text 空Text3Text 空Text4Text 空Command1Caption计算Command2Caption结束实验4.5方程求解实验任务:编程实现一元二次方程求解。要求任意输入方程的系数a,b,c,计算并输出方程的两个根xl,x2,并把方程系数和求得的根存入数据文件“gen.dat”中,界面如图4-5所示。图4-5 实验4.5运行界面实验

13、要求:1输入a,b,c三个数,为了程序设计的方便可由三个文本框来实现2通过求根公式求得方程的根。计算的结果通过文本框显示。 要分为:a0时, 按照一次方程求解a0时,b2-4ac>=0 按照二次方程求实根解b2-4ac<0 按照二次方程求虚根解dalt = b * b - 4 * a * cdalt = Sqr(-dalt) '复根两个须根分别为:文本框 = Format(-b / 2 / a, "0.00") & "+" & Format(dalt / 2 / a, "0.00") & &

14、quot;i"文本框 = Format(-b / 2 / a, "0.00") & "-" & Format(dalt / 2 / a, "0.00") & "i"3为简化程序,假设a,b,c均为数值习 题4习题4.1选择题1. VB也提供了结构化程序设计的三种基本结构,三种基本结构是( )。(A)递归结构、选择结构、循环结构(B)选择结构、过程结构、顺序结构(C)过程结构、输入、输出结构、转向结构(D)选择结构、循环结构、顺序结构2. 结构化程序由三种基本结构组成,下面属于三种基

15、本结构之一的是( )。(A)递归结构 (B)选择结构(C)过程结构 (D)输入、输出结构3. 下面程序段运行后,显示的结果是( )。Dim x%If x Then Print x Else Print x+1(A)1 (B)0 (C)-1 (D)显示出错信息4. 语句If x=1 Then y=1,下列说法正确的是( )。(A)x=1和y=1均为赋值语句(B)x=1和y=l均为关系表达式(C)x=1为关系表达式,y=l为赋值语句(D)x=1为赋值语句,y=l为关系表达式5. 用If语句表示分段函数,下列不正确的程序段是( )。(A)f=x*x+3 (B)If x>=1 Then f=sq

16、r(x+1) If x>=1 Then f=sqr(x+1) If x<1 Then f=x*x+3(C)If x>=1 Then f=sqr(x+1) (D)If x<1 Then f=x*x+3 _ Else f=x*x+3 Else f=sqr(x+1)6. 计算分段函数值。 下面程序段中正确的是( )。 (A)If x<0 Then y=0 (B)If x>=2 Then y=3 If x<l Then y=1 If x>=1 Then y=2 If x<2 Then y=2 If x>0 Then y=1 If x>=

17、2 Then y=3 If x<0 Then y=0 (C)If x<0 Then (D)If x>=2 Theny=0 y=3ElseIf x>0 Then ElseIf x>=1 Then y=1 y=2 ElseIf x>1 Then ElseIf x>=0 Then y=2 y=1 Else Else y=3 y=0 End If End If7. 下面程序段,显示的结果是( )。 Dim x x=Int(Rnd)十5 Select Case x Case 5 Print”优秀” Case 4 Print“良好” Case 3 Print“通过

18、” Case Else Print“不通过” End Select (A)优秀 (B)良好 (C)通过 (D)不通过8. 下面程序段求两个数中的大数,( )不正确。 (A)Max=IIf(x>y,x,y) (B)If x>y Then Max=x Else Max=y (C)Max=x (D)If y>=x Then Max=y If y>=x Then Max=y Max=x9. 在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() x=InputBox("Input")

19、Select Case x Case 1,3 Print "分支 1" Case Is >4 Print "分支 2" Case Else Print "Else 分支 " End Select End Sub 程序运行后,如果在输入对话框中输入2,则窗体上显示的是 (A)分支1 (B)分支2 (C)Else分支 (D)程序出错 10. 以下Case语句中错误的是 (A)Case 0 To 10 (B)Case Is>10 (C)Case Is>10 And Is<50 (D)Case 3,5,Is>10

20、11. 在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() x = -5 If Sgn(x) Then y = Sgn(x 2) Else y = Sgn(x) End If Print y End Sub 程序运行后,单击命令按钮,窗体上显示的是 (A)-5 (B)25 (C)1 (D)-1 12. 在窗体上画一个名称为Text1的文本框,要求文本框只能接收大写字母的输入。以下能实现该操作的事件过程是 (A)Private Sub Text1_KeyPress(KeyAscii As Integer) If Key

21、Ascii < 65 Or KeyAscii > 90 Then MsgBox "请输入大写字母" KeyAscii = 0 End If End Sub (B)Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode < 65 Or KeyCode > 90 Then MsgBox "请输入大写字母" KeyCode = 0 End If End Sub (C)Private Sub Text1_MouseDown(Button As I

22、nteger, Shift As Integer, X As Single, Y As Single) If Asc(Text1.Text) < 65 Or Asc(Text1.Text) > 90 Then MsgBox "请输入大写字母" End If End Sub (D)Private Sub Text1_Change() If Asc(Text1.Text) > 64 And Asc(Text1.Text) < 91 Then MsgBox "请输入大写字母" End If End Sub 13. 设a=6,则执行x=I

23、IF(a>5,-1,0)后,x的值为(A)5 (B)6 (C)0 (D)-114. 下列语句正确的是(A)If A B Then Print "A 不等于 B"(B)If A <> B Then Printf "A 不等于 B"(C)If A <> B Then Print "A 不等于 B"(D)If A B Then Printf "A 不等于 B"15. 下面程序段执行结果为 x = Int(Rnd() + 4) Select Case x Case 5 Print "

24、excellent" Case 4 Print "good" Case 3 Print "pass" Case Else Print "fail"End Select(A)excellent (B)good (C)pass (D)fail16. 设a = "a",b = "b",c = "c",d = "d",执行语句x = IIf(a < b) Or (c > d), "A", "B")后,x

25、的值为(A)a (B)b (C)A (D)B17. 下列程序执行后,变量a的值为Dim a, b, c, d As Singlea = 100: b = 20: c = 1000If b > a Then d = a: a = b: b = dEnd IfIf c > a Then d = b: b = c: c = dEnd If(A)0 (B)1000 (C)20 (D)10018. 执行下面的程序段后,变量c的值为a = 14b = 30Select Case b 10 Case 0 c = a * 10 + b Case 1 To 9 c = a * 100 + b Cas

26、e 10 To 99 c = a * 1000 + bEnd SelectPrint c(A)363 (B)2548 (C)1430 (D)9875参考答案1.D 2.B 3.A x没有赋值,默认为0。而在VB中,0作为逻辑常量False,非0作为True。4.C 5.C 6.D 7.A 8.D 9.C 10.C 11.C 12.A 13.D 14.C 15.B 16.C 17.D 18.C习题4.2填空题1下面程序运行后输出的结果是( 空1 )。 x=Int(Rnd)+3 If x2>8 Then y=x2+1 If x2=9 Then y=x2-2 If x2<8 Then y

27、=x3 Print y2下面程序的功能是( 空2 )。 Dim n%,m% Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii=13 Then If IsNumeric(Text1.Text) Then Select Case Text1.Text Mod 2 Case 0 n=n+Text1.Text Case 1 m=m+Text1.Text End Select End If Text1.Text="" Text1.SetFocus End If End Sub3下面的程序段是检查输入的算术表达式中圆

28、括号是否配对,并显示相应的结果。本程序在文本框输入表达式,边输入,边统计,以输入回车符作为表达式输入结束,然后显示结果。 Dim count1% Private Sub Text1_KeyPress(KeyAscii As Integer) If( 空3 )= "("Then count1=count1+1 ElseIf( 空4 )= ")"Then ( 空5 ) End If If KeyAscii=13 Then If( 空6 )Then Print "左右括号配对" Else If( 空7 )Then Print"左括

29、号多于右括号";count1;"个" Else Print"右括号多于左括号";-count1;"个" End If End If End Sub4 输入文本框中若干字符,统计有多少个元音字母、有多少个其他字母,直到按Enter键结束,并显示结果,大小写不区分。其中CountY中放元音字母个数,CountC中放其他字符数。 Dim CountY%,CountC% Private Sub Textl_KeyPress(KeyAscii As Integer) Dim C$ C=( 空8 ) If "A"&l

30、t;=C And C<="Z"Then Select Case( 空9 ) Case( 空10 ) CountY=CountY+1 Case( 空11 ) CountC=CountC+1 End Select End If If( 空12 )Then Print "元音字母有";CountY;"个" Print"其他字母有";CountC;"个" End If End Sub参考答案1.72.分别统计输入若干数的奇数和、偶数和,存放在m、n中3.Chr(KeyAscii) 4.Chr(Ke

31、yAscii) 5.countl=countl-1 若遇右括号,括号数减l。6.countl=0 括号配对。7.countl>0 左括号多于右括号,多于的个数是countl的值。8.UCase(Chr(KeyAscii) 大小写不区分。9.C10.”A”,”E”,”I”,”O”,”U” 11.Else 其他字符。12.KeyAscii=13习题4.3简答题1设x与y是同一类型的变量,试设计一个算法,把x与y中的数据相互交换。2设a、b、c是同一类型变量,并分别被赋予不同大小的数据,设计一个算法,使得执行的结果为a>b>c。3设计一个可以判断某数是否是素数的算法(所谓素数是指只

32、能被1和自身整除的数)。4设计一个判断某正整数是一个回文数的算法。所谓回文数是指左右数字完全对称的自然数。例如,121、12321、484、555等都是回文数。5设计一个算法,求出给定的自然数a的所有因子。6在文本框Textl与Text2中分别输入35与48,变量S与X分别为字符型与整型,试问,以下赋值语句的执行结果是什么? S=Textl.Text+Text2.Text X= Textl.Text+Text2.Text S=Textl.Text & Text2.Text X= Textl.Text & Text2.Text S=Val(Textl.Text)+Text2Tex

33、t X=Val(Textl.Text)+Text2.Text S=Val(Textl.Text) & Text2. Text X=Val(Textl.Text) & Text2.Text习题4.4操作题1将键盘输入的一位数字翻译为英文单词,如图4-6所示。若输入长度大于1且不是0-9之间的数字,显示“输入错误,请重新输入”的信息。图4-6 数字转单词界面2从键盘输入一个大写字母,要求改用小写字母输出。提示:Visual Basic提供了一个标准函数Lcase(x),方便地将大写字母转换成小写字母3. 输入三角形的三条边a,b,c的值,根据其数值,判断能否构成三角形。若能,还要显

34、示三角形的性质:等边三角形、等腰三角形、直角三角形、任意三角形。并计算周长与面积。并把结果存入数据文件“area.dat”中。程序界面如图4-7所示。图4-7判断三角形程序界面 4货币兑换。将输入的人民币金额按指定的要求兑换为美元或港币。美元和人民币兑换比为1:6.65;人民币和港币兑换比为1.15:1。要求:(1)应用程序窗体如图4-8所示。(2)程序运行时和单击“清除”按钮后,光标自动停在人民币金额文本框中。图4-8 币种兑换界面(3)程序运行时默认币种为美圆。提示:计算时根据OptionButton选中的币别(即OptionButton的Value属性)进行判断,来决定用哪个计算公式进行

35、币种之间的换算。5计税款。国家规定,收税标准如下: 收入 超出部分税率 1000 以下 0 1000£s<1500 5% 1500£s<2000 10% 2000£s<2500 15% 2500£s<5000 20% 5000以上 25% 提示:本题是一个典型的多分支情况,如果使用嵌套的If结构,层次复杂,容易产生 If和End If不匹配的语法错误。因此建议使用If Then-Else If结构或Select Case结构,程序比较清晰,可读性好。6计算分段函数y的值。7从键盘输入三个数,将它们从大到小依次排列输出。图4-9 三

36、数排序注意:a、b、c三个数之间的各种可能性都要考虑到,才能得到正确结果。请输入各种不同情况的数据验证程序。参考答案1.程序界面与参考程序:Private Sub Form_Click()Dim x%, y%, z$x = InputBox("x=?")y = Len(Trim(x) '求数字x的长度If y > 1 Or x < 0 And x > 9 Then MsgBox "输入错误,请重新输入"ElseSelect Case x Case 0 z = "zero" Case 1 z = "o

37、ne" Case 2 z = "two" Case 3 z = "three" Case 4 z = "four" Case 5 z = "five" Case 6 z = "six" Case 7 z = "seven" Case 8 z = "eight" Case 9 z = "nine" End Select Text1 = x Text2 = zEnd IfEnd Sub 2. 参考程序:Private Sub Fo

38、rm_Click()Dim x$, y$x = InputBox("x=?")If Asc(x) < 65 Or Asc(x) > 90 Then MsgBox "输入错误,请重新输入"Else y = LCase(x)End IfText1 = xText2 = yEnd Sub3. 参考程序:Private Sub Command1_Click() Dim a!, b!, c!, s!, area! a = InputBox("输入三角形边a") b = InputBox("输入三角形边b") c

39、= InputBox("输入三角形边c") If a<=0 or b<=0 or c<=0 or a + b <= c Or a + c <= b Or b + c <= a Then MsgBox "不能够成三角形,请重新输入" Else If a = b And b = c Then Text4 = "是等边三角形" ElseIf a = c Or b = c Or a = b Then Text4 = "是等腰三角形" ElseIf a 2 + b 2 = c 2 Or a

40、 2 + c 2 = b 2 Or c 2 + b 2 = a 2 Then Text4 = "是直角三角形" Else Text4 = "是任意三角形" End If Open “D:area.dat” For Output As#1 Text1 = a Text2 = b Text3 = c Text5 = a + b + c s = (a + b + c) / 2 Text6 = Format(Sqr(s * (s - a) * (s - b) * (s - c), "0.00") Write #1,Text5,Text6 End IfEnd Sub4. 参考程序:Private Sub Option1_Click() Label2 = "美元" Text2 = "" Text1.SetFocusEnd SubPrivate Sub Option2_Click() Label1 = "港币" Text2 = &quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论