收藏 分享(赏)

VB程序语句与控制结构.doc

上传人:精品资料 文档编号:11030432 上传时间:2020-02-01 格式:DOC 页数:24 大小:282.50KB
下载 相关 举报
VB程序语句与控制结构.doc_第1页
第1页 / 共24页
VB程序语句与控制结构.doc_第2页
第2页 / 共24页
VB程序语句与控制结构.doc_第3页
第3页 / 共24页
VB程序语句与控制结构.doc_第4页
第4页 / 共24页
VB程序语句与控制结构.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、第 3 章 VB 程序语句与控制结构一个 VB 应用程序主要由用户界面和响应各事件的程序代码组成,程序代码是应用程序的核心。本章首先介绍程序代码设计的基础知识,再通过一些典型的例子,使大家逐步掌握编程的思路和技巧。VB 虽然是面向对象的程序设计语言,但在代码设计中仍然支持结构化程序设计的三种基本结构,即顺序结构、选择结构和循环结构。本章将主要介绍数据的输入与输出、三种基本程序控制结构及语句。3.1 数据的输入与输 出VB 的输入/输出有多种形式,常用的输入方式有:使用键盘输入数据的函数 InputBox以及文本框等控件。常用的输出方式有: Print 方法、MsgBox 函数和过程以及图形框、

2、文本框、标签等控件。有关控件的使用在其第六章中介绍,本节主要介绍 InputBox 函数 、MsgBox 函数与过程以及 Print 方法的使用。311 InputBox 函数格式:InputBox(提示,标题,默认,x 坐标位置,y 坐标位置)功能:InputBox 函数产生一个对话框,作为输入数据的界面,等待用户输入内容,当用户单击“确定”按钮或按回车键,函数返回输入的值,其值的类型为字符串( String) 。说明:(1) “提示”:必选项。字符串表达式,在对话框中作为提示信息显示,可为汉字。若要多行显示,必须在每行行末加回车符 Chr(13)和换行符 Chr(10)符或 VB 符号常数

3、vbCrLf。 (2) “标题”:可选项。字符串表达式,在对话框的标题区显示;若省略,默认为应用程序名。 (3) “默认”:可选项。字符串表达式,当输入对话框中无输入时,则该默认值作为输入的内容。 (4) “x 坐标位置、y 坐标位置”:可选项。整型表达式,确定对话框左上角相对于屏幕左上角的 x、y 坐标,单位为 twip。该项省略时,对话框出现在屏幕水平、垂直中间的位置。【注意】 各项参数次序必须一一对应,除了“提示”一项不能省略外,其余各项均可省略,处于中间的默认部分要用逗号占位符跳过。例如,运行如下代码段,结果显示如图 3-1 所示,当单击“确定”按钮后,变量strName 的值为“李林

4、” 。Dim strName as String*20Title = “InputBox 函数示例“ Msg1 = “请输入你的姓名“StrName=InputBox(Msg1,Title, ,200,200)图 3-1312 Msgbox 函数与过程MsgBox 用于输出数据,它会在屏幕上显示一个对话框。在对话框中显示消息,等待用户单击按钮,并返回所选按钮的整数值。有函数和过程两种形式。MsgBox 函数格式: 变量=MsgBox(提示,按钮,标题)MsgBox 过程格式: MsgBox 提示,按钮,标题 说明:(1) “提示”和“标题”的意义与 InputBox 函数中对应的参数相同。(2

5、) “按钮”:可选项。数值表达式,决定信息框按钮的数目和类型及出现在信息框上的图标类型。该数值表达式的值由 4 部分数值求和得到,它也可以用符号常量表示。其设置见表 3.1。(3)MsgBox 函数返回所选按钮整数值的意义见表 3.2(4)MsgBox 过程与 MsgBox 函数的区别是:MsgBox 过程没有返回值,也不用圆括号“() ”,所以常用于较简单的信息显示。其他用法与 MsgBox 函数相同。表 3.1“按钮”设置及意义类别 符号常量 按钮值 意义按钮数目vbOkOnlyvbOkCancelvbAbortRetryIgnorevbYesNoCancelvbYesNovbRetryC

6、ancel012345只显示“确定”按钮。 显示“确定”和“取消”按钮。 显示“终止” 、 “重试”和“忽略”按钮。显示“是” 、 “否”和“取消”按钮。 显示“是”和“否”按钮。 显示“重试”和“取消”按钮。图标类型vbCriticalvbQuestionvbExclamationvbInformation16324864显示警示图标,红色 STOP 标志。 显示询问图标?。 显示警告消息图标!。 显示信息图标 i。默认按钮vbDefaultButton1vbDefaultButton2vbDefaultButton30256512第一个按钮为默认按钮。 第二个按钮为默认按钮。 第三个按钮为

7、默认按钮。模式 vbApplicationModalvbSystemModal 04096 应用程序模式系统模式表 3.2 MsgBox 函数的返回值返回值 符号常量 被单击的按钮1 vbOk 确定2 vbCancel 取消3 vbAbort 终止4 vbRetry 重试5 vbIgnore 忽略6 vbYes 是7 vbNo 否例如,在代码中加入以下语句,程序在运行中会打开图 3-2 所示的消息框。Msg=”程序运行出错,继续吗?”Title=”Msgbox 演示程序”Resp=MsgBox(Msg,308,Title)If Resp=6 thenPrint “你选择了是!”ElsePrin

8、t “你选择了否!”End If图 3-2程序中,MsgBox 函数的参数 308 也可以写成符号常量的形式。因 308=4+48+256,因而可将数字 308 写成 vbYesNo+vbCritical+vbDefaultButton2 的常量表达式的形式;同样,If 语句也可写成 If Resp=vbYes then 的形式。【例 3.1】输入圆的半径,求圆的面积。 (1)进入代码窗口,编辑程序代码如下: Private Sub Form_Click() Const Pi = 3.14 定义常量 PiDim r As Double, a as Double r = InputBox(“请输

9、入圆的半径“) a = Pi * r * r MsgBox(“圆的面积为:“ a+b PrintPrint “字符串变量 c$的值为: ”;c$运行结果如下:“数值表达式 a+b 的值为: 25“字符串变量 c$的值为:欢迎使用 Visual Basic【例 3.2】 用 Print 方法输出图形。程序运行结果如图 3-4 所示。Private Sub Form_Click()For i=1 to 5Print Tab(i);String(6-i,” )Next IEnd Sub图 3-4【注意】当 Tab(i)中 i 的值小于当前位置的值时,重新定位在下一行的 i 列。例如,执行以下语句:P

10、rint tab(5);“abcdefg”;tab(8);“1234567”运行结果如下:abcdefg1234567314 打印机输出Visual Basic 除了可以在屏幕上输出以外,还可以在打印机上输出所需要的信息。1用 PrintForm 方法打印格式:窗体名.PrintForm功能:将指定窗体的信息传送到打印机进行打印。说明:(1)缺省窗体名,则打印当前窗体的信息。(2)PrintForm 方法不仅可以打印窗体上的文本,而且还可以打印出窗体上的任何可见的控件及图形。若窗体中包含图形,需要将输出窗体的 AutoReDraw 属性设置为 True。2用 Printer 对象打印格式:Pr

11、inter.Print 表达式列表功能:把“表达式列表”中的内容输出到打印机上。例如,下列语句行将字符串“欢迎使用 Visual Basic”输出到 Windows 系统的缺省打印机上。 Printer.Print “欢迎使用 Visual Basic“Printer 对象包含多种属性和方法用以控制打印的各种特性。Printer 对象的属性不能在属性窗口中设置,只能在运行时通过程序代码来设置。下面介绍一些 Printer 对象常用的属性和方法。(1)Page 属性Page 属性用来保持和返回当前的页号,格式为:Printer.Page每当打印完一页后,Page 属性值自动增 1。通常用 Pag

12、e 属性打印页号,例如: Printer.Print “第“; Printer.Page; “页“(2)NewPage 方法 NewPage 方法用以结束 Printer 对象中的当前页并前进到下一页,也就是实现换页操作,格式为: Printer.NewPage 执行 NewPage 方法可以强制使打印机前进到下一个打印页,并将打印位置重置到新页的左上角。调用 NewPage 方法时,它将 Printer 对象的 Page 属性加 1。 (3)EndDoc 方法 EndDoc 方法用来结束文件打印,格式为: Printer.EndDoc 执行 EndDoc 方法表明打印操作的结束,并向打印机管

13、理程序发送最后一页的退出信号,并把 Page 属性重置为 1。 (4)KillDoc 方法 KillDoc 方法用于立即终止当前打印作业,格式为:Printer.KillDoc 执行 KillDoc 方法将中断 Print 函数的执行,且清除打印缓冲区中的所有信息。 【例 3.3】 编写程序,实现连续打印“打印测试页 1”和“打印测试页 2”两张测试页。Private Sub Form_Click() Printer.Print “打印测试页“;Printer.Page Printer.NewPage Printer.Print “打印测试页“;Printer.Page Printer.End

14、Doc End Sub 单击窗体后,打印机打印两页,分别为“打印测试页 1”和“打印测试页 2”。3.2 顺序结构顺序结构就是程序的各语句按出现的先后次序执行。在 Visual Basic 中顺序结构的语句主要有赋值语句、输入语句、输出语句等。3.2.1 赋值语句 赋值语句是程序设计中最基本的语句,也是为变量和事件的属性赋值的最主要的方法。赋值语句的一般形式为: 变量名 = 表达式 或对象名.属性 = 表达式 赋值语句的作用:先计算右边表达式的值,然后赋给左边的变量或控件属性。 例如: sum= 100 把数值常量 100 赋给变量 sum aver=sum/10 将表达式 sum/10 的值

15、赋给变量 averText1.Text = ”Hello!” 为文本框显示字符串 Text1.Text= ” 清除文本框的内容 【注意】(1)表达式可以是任何类型的表达式,一般应与变量名的类型一致,当表达式的类型与变量的类型不一致时,作如下处理:若左边是字符型变量,将右边非字符型转换成左边的类型。例如:C$=123 数值常量 123 转换为字符型数据”123”赋给 c若左边是数值型变量,右边表达式为数字字符串时,自动转换成数值类型赋给左边变量。若右边表达式有非数字字符或空串时,则出现类型不匹配错误。例如:m%=”100” 数字串” 100”转换为数值 100 赋给变量 mm%=”a100” 出

16、现类型不匹配的错误m%=” 出现类型不匹配的错误若左边是逻辑型变量,右边是数值型表达式,非 0 转换为 True,0 转换为 False;反之,将逻辑型表达式的值赋给数值型变量时,True 转换为-1,False 转换为 0。例如:Dim f as Booleanx%=10:y%=5f=x+y f 中结果为 Truef=x-10 f 中结果为 Falsen%=xy 表达式 xy 值为 True,n 中结果为-1n%=x Then (2) (2) If ThenEnd If语句功能:当的值为 True 或非零时,执行 Then 后面的语句(或语句块) ,否则不做任何操作,实现单分支选择结构。其流

17、程如图 3-5图 3-5说明:(1) (1) 表达式一般为关系表达式或逻辑表达式,也可为算术表达式。例如:If n=0 Then EndIf 年龄5” (2)格式(1)中的是单行语句,若要执行多条语句,语句间用冒号分隔,且必须在一行上。格式(2)中的可以是一条或多条语句。例如,语句 If xy Then x=x-5:y=y+5 也可写成If xy Thenx=x-5y=y+5End If【例 3.5】 输入 x 的值,并输出其绝对值。 程序代码如下: Private Sub Command1_Click() Dim x! x = InputBox(“请输入一个数“) If x Then Els

18、e (2) (2) If Then表达式语句块TFElseEnd If语句功能:当的值为 True 或非零时,执行 Then 后面的语句(或语句块) ,否则执行 Else 后面的语句(或语句块) ,实现双分支选择结构。其流程如图 3-6表达式语句块 1 语句块 2T F图 3-6例如:输入一个整数,判断其奇偶性。程序代码如下:Private Sub Form_Click()Dim x as integerx=InputBox(“请输入一个整数”)If x mod 2=0 Then Print x;”是偶数” Else Print x;”是奇数”End Sub3IfThenElseIf 语句语句

19、格式:If ThenElseIf ThenElseEnd If语句功能:根据不同的表达式值确定执行哪个语句块,实现多分支选择结构。其流程如图 3-7表达式 1表达式 2表达式 n语句块 1 语句块 2 语句块 n 语句块 n+1FFFTTT图 3-7使用说明:先计算的值,若为真,则执行,并跳过其他分支语句执行 If 语句的后续语句(即 End If 后面的语句) ;若为假,则计算的值,依此类推,直到找到一个为真的条件时,才执行相应的语句块,然后执行 End If 后面的语句。格式中的 Else 是可选项,表示若无任何表达式值为真时,则执行;若无 Else选项,且所有条件表达式值都不为真,则不执

20、行 If 语句中的任何语句块。【注意】当 If 语句内有多个表达式的值为真时,只执行第一个为真的表达式后的语句块。【例 3.6】在文本框中输入若干字符,统计其中字母字符、数字字符以及其他字符的个数,并显示结果。程序代码如下:Dim countX%,countY%,countZ%Private Sub Text1_KeyPress(KeyAscii As Integer)Dim c$c=chr(KeyAscii) 将文本框中输入的字符赋给变量 cIf Ucase(c)=”A” And Ucase(c)=”0” And c Case Case Case Else End Select语句功能:根据

21、条件表达式的值转向相应的语句块,实现多路分支。其流程如图 3-8。表达式列表1表达式列表 2表达式列表 n语句块 1语句块 2语句块 n语句块 n+1TTTFFF图 3-8使用说明:先求出条件表达式的值,然后从上到下跟各个 Case 子句中的表达式列表进行匹配,如果找到了相匹配的值,则执行该子句下的语句块。若有多个 Case 子句的值与条件表达式的值相匹配,则只执行第一个与之匹配的 Case 子句后面的语句块。如果没有任何Case 子句中的表达式列表与之匹配,则执行 Case Else 子句中的语句块。格式说明:(1)条件表达式可以是数值表达式或字符串表达式,一般为变量。(2)表达式列表用来描

22、述条件表达式的可能取值情况,可以由多个表达式组成,表达式与表达式之间要用“, ”隔开,必须与条件表达式的数据类型相同且有确定的值。表达式列表有以下三种形式:表达式或由逗号分隔的多个表达式例如:Case “A”Case 1,2,3Case a,b To 例如:Case -10 to 10Case “A” to “F”Case a to bIs 例如:Is =a+b【例 3.7】某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下: (1) 购物 1000 元以上的九五折优惠, (2) 购物 2000 元以上的九折优惠, (3) 购物 3000 元以上的八五折

23、优惠, (4) 购物 5000 元以上的八折优惠。程序代码如下:Private Sub Command1_Click() Dim x As Single, y As Single x = InputBox(“请输入购物金额:“) Select Case x Case Is = 5000 Print “八折优惠“ y = 0.8 * x End Select Print “优惠后应收款额为:“; yEnd Sub333 选择结构的嵌套将一个选择结构放在另一个选择结构内,称为选择结构的嵌套。If 语句的多分支格式实际上是一种 If 结构的嵌套形式。选择结构的嵌套既可以是同一种结构的嵌套,也可以是不

24、同结构之间的嵌套。例如可以在 If 结构中又包含 If 语句,或在 If 结构中包含Select 语句等形式。例如:若 x 大于 0,则 y 等于 1;若 x 小于 0,则 y 等于-1;否则,y 等于 0。语句如下:If x0 Then y=1 Else If x0 方程有两个不同实根s=sqr(disc)Print “x1=”;(-b+s)/(2*a)Print “x2=”;(-b-s)/(2*a)Case Is=0 方程有两个相同实根Print “The root is:”Print “x=”;-b/(2*a)Case Else 方程没有实根Print “No real root.”En

25、d SelectEnd IfEnd Sub334 条件函数1IIF 函数使用 IIf 函数也可以实现简单的双分支选择结构。语句格式:result = IIF(条件表达式 ,)语句说明:(1) “result”是函数的返回值:当条件表达式为真时,函数返回的值,当条件表达式为假时,函数返回的值。(2)和可以是任何表达式。例如:语句 If xy Then max=x Else max=Y 也可写成:Max=IIf(xy,x,y)2Choose()函数使用 Choose 函数也可以实现简单的多分支选择结构。语句格式:result=Choose(整数表达式,选项列表)语句说明:Choose 函数根据整数

26、表达式的值来决定返回选项列表中的某个值。若整数表达式值是1,则 Choose 函数会返回列表中的第 1 个选项。若整数表达式值是 2,则会返回列表中的第 2 个选项,以此类推。若整数表达式的值小于 1 或大于列出的选项数目时, Choose 函数返回 Null。例如:c=Choose(x,”red”,” green”,”blue”)当 x 值为 1 时,返回“red”;当 x 值为 2 时,返回“green” ;当 x 值为 3 时,返回“ blue”;当 x 不在 1-3 之间,函数返回 Null。3、Switch 函数Switch 函数称开关函数,计算一个条件表达式列表,并返回与该表中一个

27、等于 True 的条件表达式相联系的一个表达式的值。语句格式:Result=Switch(,)语句说明:当条件表达式 1 为 True 时,返回表达式 1 的值;当条件表达式 2 为 True 时,返回表达式 2 的值,依此类推。例如:y=switch(x0,1,x=0,0,x = To Step Next 说明:(1)参数、和都是数值型。(2)内是一系列 VB 合法的语句,构成循环体。(3)步长为可选参数,如果没有指定,则默认值为 1。步长可以为正,也可以为负。若为正,则初值应小于或等于终值;若为负,则初值应大于或等于终值,这样才能保证执行循环体内的语句;若为 0,循环永远不能结束(即出现死

28、循环) 。(4)该语句的执行过程如图 3-9 所示:把“初值”赋给“循环变量” ,仅被赋值一次。检查循环变量的值是否超过终值,若是就结束循环,执行 Next 后的下一语句;否则执行一次循环体。执行 Next 语句,循环变量的值增加一个步长,转继续循环。循环变量=初值循环变量超过终值?执行循环体循环变量=循环变量+步长TF图 3-9【例 3.9】 求 1 到 100 的和。 Private Sub Command1_Click() Dim i As Integer, sum As Integer sum = 0 给变量 sum 赋初值 0For i = 1 To 100 sum = sum +

29、i 累加Next iPrint sum End Sub思考:若要将上例的求和问题改为求积,如求 10!,应如何编写代码?【注意】(1)一般在循环体内不要修改循环变量的值,否则会影响原有的循环控制状况。例如以下程序段:For i=1 To 5If i Mod 2 = 0 Then i = i + 1 Print i; Next i 程序执行打印结果为:1 3 5循环体执行了 3 次,若没有第二行,程序应执行 5 次。(2)如果在循环体中没有修改循环变量的值,则循环的次数可以从 For 语句中指定的参数直接计算出来:循环次数=Int(循环终值 -循环初值)/步长)+1如:For i=1 To 10

30、 Step 3Print i;Next i循环次数=int(10-1)/3)+1=4【例 3.10】 求 Fibonacci 数列的前 30 个数。这个数列有如下特点:前两个数为 1,从第三个数开始,其值是前两个数的和,即: F1=1 (n=1) F2=1 (n=2) Fn= Fn1 + Fn2 (n3) 程序如下: Private Sub Command1_Click() Dim i As Integer Dim f1 As Long, f2 As Long, fn As Long f1 = 1 f2 = 1 Print f1, Print f2,For i = 3 To 30 f1,f2

31、已知,从第三个数开始计算 fn = f1 + f2 f1 = f2 f2 = fn 更改 f1,f2 的值 Print fn,If i Mod 4 = 0 Then Print 打印 4 个数后换行打印Next End Sub 运行结果如图 3-10:图 3-10342 条件型循环条件型循环是根据某个条件决定循环的次数。常用的循环结构有:While 循环结构及Do 循环结构。1. While 循环结构While 循环结构用 WhileWend 语句来实现,语句格式如下: While Wend 语句说明: (1) “条件表达式”可以是关系表达式、逻辑表达式或数值表达式。如果是数值表达式,值为 0

32、 被作为 False,非零值则为 True。 (2)语句的执行过程是:先计算条件表达式的值,若为 True,则执行循环中的语句块,遇到 Wend 语句时返回 While 语句继续判断条件表达式的值,若仍为真,则继续执行语句块,重复上述过程直到条件表达式的值为 False,则退出循环结构,执行 Wend 语句的后续语句。循环环执行过程如图 3-11。 (3)如果条件一开始就不成立,则语句块一次也不会被执行。表达式语句块FT图 3-11例如,用 While 循环语句改写例 3.9 ,程序代码如下:Private Sub Command1_Click() Dim i As Integer, sum

33、As Integer sum = 0 :i=1While i Loop 语句执行过程:先计算条件表达式的值,若为 True,则执行语句块中的语句;若为False 则退出循环结构。循环环执行过程如图 3-12。 格式二: Do Until Loop 语句执行过程和格式一基本相同,唯一不同的是,它在条件表达式为 False 时重复执行语句块,直到条件为 True 时退出循环结构。循环环执行过程如图 3-13。表达式语句块TF表达式语句块TF图 3-12 图 3-13【例 311】将 10000 元存入银行,按 3.25%的利率,试问多长时间就会连本带利翻一番。程序代码如下:Private Sub

34、Form_Click()Dim year%,money!,original!,interest!original=10000money=originalInterest=3.25/100Do While money Loop While 语句执行过程:首先执行语句块中语句,然后计算条件表达式,如果条件表达式值为True,则继续执行语句块,否则退出循环结构。循环体至少执行一次。循环环执行过程如图 3-14。 格式四: Do Loop Until 格式四的执行过程和格式三基本一样,也是先执行后判断。唯一不同的是,它在条件表达式值为假时重复执行语句块,直到条件表达式值为真时退出循环结构。循环环执行过

35、程如图 3-15。语句块表达式TF语句块表达式FT图 3-14 图 3-15【例 312】用辗转相除法求两正整数 m,n 的最大公约数。 求最大公约数的算法如下: (1)对于已知两数 m,n,使得 mn; (2)m 除以 n 得余数 r; (3)令 m n,n r; (4)若 r0,转到(2)继续执行,直到 r=0 求得最大公约数为 m,循环结束。 程序代码如下: Private Sub Form_Click() Dim m%,n%m = InputBox(“输入 m“) n = InputBox(“输入 n“) If mnt=mm=nn=tEnd If m1=mn1=nDo r = m Mo

36、d n m = n n = r Loop while ( r =3000 Then Exit Do 当 s3000,执行 Exit Do 语句退出循环LoopPrint i,sEnd Sub343 循环结构的嵌套在一个循环语句的循环体内又包含另一个循环语句,称为循环的嵌套。循环的嵌套既可以是同一种循环结构的嵌套,也可以是不同循环结构之间的嵌套。例如,可以在 For 循环中包含另一个 For 循环,也可以在 Do 循环中包含一个 For 循环。【例 313】输出 3-100 之间的素数。素数,就是一个大于 2 且只能被 1 和本身整除的整数。判断某数 m 是否为素数的算法是:对于 m 从 i=2

37、,3 , m-1 判别 m 能否被 i 整除,只要有一个能整除, m 就不是素数,否则 m 是素数。程序代码如下:Private Sub Form_Click()Dim m%,i%,k%,Flag As BooleanFor m=3 To 100Flag=TrueFor i=2 To m-1 内循环判断 m 是否为素数If (m mod i)=0 Then Flag=FalseNext iIf Flag Thenk = k + 1If (k Mod 10) = 0 Then Print m Else Print m; 每行显示 10 个End IfNext mEnd Sub实际上 m 不可能被

38、大于m 的数整除,因此为减少循环次数,可将内循环语句改为:For i=2 To int(sqr(m)循环次数就会大大减少。【注意】(1)内外循环不能交叉。例如,以下程序段是错误的:For i=1 to 10 For i=1 to 10For j=1 to 10 应改为: For j=1 to 10 Next i Next jNext j Next i(2)两个并列的循环结构的循环变量可以同名,但嵌套结构中的内循环变量不能与外循环变量同名。例如:正确的程序段 错误的程序段For i=1 to 10 For i=1 to 10 For i=1 to 10Next i For i=1 to 10 N

39、ext i Next iNext i 35 辅助控制语句351 End 语句End 语句的作用是使程序结束运行,它可以放在任何事件过程中。语句格式如下:End在过程、函数、分支等的结束部分都用到以 End 开头的语句,这些语句一般只结束某个过程或语句块。如 End Sub、End If、End Function 等。352 With 语句语句格式:With End With语句功能:用于对单个对象或用户自定义类型变量执行一系列语句,而不需重复地给出对象名或用户自定义类型变量名。使用说明:(1)语句格式中,是指单个对象或用户自定义类型变量。(2)该语句可以嵌套。(3)使用 With 语句对某个对

40、象的属性进行赋值时,虽然不需重复地给出对象名,但对象的属性前面的“.”不能省略。例如,设置标签对象 MyObject 的各项属性。With MyObject.BorderStyle=1.Height=1000.Width=2000With .Font.Bold=True.Size=12End WithEnd With353 Goto 语句语句格式:Goto 标号|行号语句功能:无条件转到标号或行号指定的语句。例如,以下程序代码求 1-50 的奇数和:Dim i%,s%s=0i=1re:If i 0.00001) pi = pi + t n = n + 2 分母的值每次加 2 s = -s 数据

41、项符号的正负交替变化 t = s / n 计算数据项的值 Loop pi = pi * 4 Print pi End Sub【例 317】求 1!+2!+n!,n 由键盘输入。【分析】该题先求阶乘,再将阶乘值累加。循环次数由用户输入确定(即 n 的值) 。Private Sub Form_Click()Dim s as double,t as double,n as integers=0 t=1 n=InputBox(“请输入 n 的值”)For i=1 to nt=t*i 求 i!并赋给变量 ts=s+tNext iPrint “1!+2!+”;n;”!=”;sEnd Sub 362 求最大

42、值与最小值求若干数的最大值(最小值) ,其算法思想是:先取第一个数作为最大值(最小值)的初值,然后依次将下一个数和它比较,若比它大(小) ,将该数替换为最大值(最小值) 。【例 318】产生 10 个 1-100 之间的随机整数,输出它们的最大值。【分析】用变量 max 保存最大值,其初值为第一个数,然后依次将 max 与下一个数比较,若该数比 max 大,则修改 max 的值为该数。Private Sub Form_Click()Dim i%,x%,max%RandomizePrint “10 个随机整数:”x=int(Rnd*100)+1Print x;max=x 将第一个数作为初值赋给

43、maxfor i=2 to 10x=int(Rnd*100)+1if xmax Then max=xPrint x;Next iPrintPrint “最大值为:”;maxEnd Sub363 穷举法穷举的基本思想是:对要解决的问题的所有可能情况一一检查,从中找到符合要求的答案。【例 319】求 100-999 之间的所有“水仙花数” 。 “水仙花数”是一个三位数,其各位数字的立方和等于该数本身。例如:153=1 3+53+33,153 是一个水仙花数。【分析】采用穷举法对指定范围内的每一个数进行判断它是否为水仙花数。判断一个数是否为水仙花数的关键是如何将此数的各位数字分离出来。如对于数据 1

44、53,可采用下面的方法分离其各位数字:(1)int(153/100),得到百位数字 1。(2)int(153-1*100)/10),得到十位数字 5。(3)153-1*100-5*10,得到个位数字 3。程序代码如下:Private Sub Form_Click()Dim i%,a%,b%,c%For i=100 to 999a=int(i/100)b=int(i-a*100)/10)c=i-a*100-b*10If i=a*a*a+b*b*b+c*c*c Then Print i;Next iEnd Sub运行结果如下:153 370 371 407【例 320】百钱买百鸡问题:我国古代数学

45、家张丘建在算经中提出了“百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”【分析】设母鸡、公鸡、小鸡各为 x,y,z 只,则可以用下面的方程表示:x+y+z=100x*3+y*5+z/3=100根据题目所述条件,x 可能值为 0-33 中的整数;y 可能值为 0-19 中的整数;z 可能值为 0-100 中的整数。y 的取值范围最小,为提高程序效率,先考虑对 y 的值进行穷举测试。程序代码如下:Private Sub Form_Click()Dim x%,y%,z%For y=0 To 19For x=33 To 0 step -1z=100-x

46、-yIf x*3+y*5+z/3=100 Then Print x,y,zNext xNext yEnd Sub运行结果如下:25 0 7518 4 7811 8 814 12 84364 迭代法“迭代法”是指重复执行一组工作,每次执行这组工作时,都从旧值递推出新值,并用新值代替旧值。【例 321】已知某球从 100 米高度自由落下,落地后反弹,每次弹起的高度都是上次高度的一半。求小球第 10 次落地后反弹的高度和球所经过的路程。【分析】用变量 h 保存下落的高度,变量 r 保存反弹的高度,变量 s 保存小球经过的路程。h 的初值为 100,反弹高度 r=h/2。弹起一次,小球经过的路程为 r

47、+hPrivate Sub Form_Click()Dim h as single,r as single,s as singleh=100s=0For i=1 to 10r=h/2s=s+r+hh=rNext iPrint “h=”;h,“s=”;sEnd Sub习 题 三1、指出下列语句中的错误。(1)c*2=d+2(2)If x0 and y0Print “x0,y0”Case x0 Print “x0”Case x0 and y0,y 0 And i Mod 3 = 0 Then sum = sum + i End If Next i Print sum(4)s = 2 For i =

48、 3.2 To 4.9 Step 0.8 s = s + 1 Next IPrint i,s3、交换两个变量的值,写出相应的语句。4、编写将华氏温度转换为摄氏温度的程序,转换公式如下:C=5/9*(F-32) 其中 C 为摄氏温度,F 为华氏温度。5、编程:给定一个年份,判断它是否为闰年,闰年的条件是:能被 4 整除但不能被100 整除,或者能被 400 整除。6、编程:输入三角形的三边,判断是否能构成三角形,若能计算三角形的面积。7、编程计算下面的分段函数。2x+3 x10y= x2+5 10208、某航空公司规定:在旅游旺季 7-9 月,如果订票超过 20 张,优惠票价的 15%;订票20 张以下优惠票价的 5%;在旅游淡季 1-4 月、11 月、12 月,如果订票超过 20 张,优惠票价的 30%;订票 20 张以下优惠票价的 20%。编程实现票价的计算。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报