• 沒有找到結果。

Visual Basic应用任务教程 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "Visual Basic应用任务教程 - 万水书苑-出版资源网"

Copied!
37
0
0

加載中.... (立即查看全文)

全文

(1)

第 2 章 Visual Basic 程序控制结构

如同其他程序设计语言一样,VB 的程序也有三种基本结构:顺序结构、选择结构和循环 结构,本章介绍与三种基本结构有关的语句和方法。

任务 1 录入学生信息

效果描述 设计程序“录入学生信息”,用如图 2-1 所示的对话框输入学生的姓名、年龄、性别、籍 贯,并在窗体上显示输入的信息。 图 2-1 输入对话框 设计分析 要产生图 2-1 所示的输入对话框,就要用到数据输入工具——InputBox 函数。InputBox 函数是 VB 提供的一种输入方法,它通过对话框的形式来进行数据的输入,每次只能输入一个 数据。 本程序要在窗体上显示输入的信息,这就需要用到输出方法 Print,Print 方法的作用是在 对象上输出信息。 完成步骤 1.创建界面 将窗体的 Caption 属性设置为“学生情况登记”,如果要使窗体显得美观,可以根据各自 的喜好,设置窗体的 BackColor、ForeColor、FontSize、FontName 等属性。 2.过程代码 窗体 Form1 的单击事件过程代码:

Private Sub Form_Click()

Dim msg1 As String, msg2 As String Dim msg3 As String, msg4 As String Dim msgtitle As String

(2)

Dim age As String, home As String msg1 = "请输入学生姓名:" msg2 = "请输入学生年龄:" msg3 = "请输入学生性别:" msg4 = "请输入学生籍贯:" msgtitle = "学生情况登记" name = InputBox(msg1, msgtitle) age = InputBox(msg2, msgtitle) sex = InputBox(msg3, msgtitle) home = InputBox(msg4, msgtitle) Cls

Print name; ","; sex; ",现年"; Print age; "岁"; ","; home; "人" End Sub 知识链接 本程序中用到了 InputBox 函数和 Print 方法。 一、InputBox 函数 InputBox 函数产生一个对话框,这个对话框作为输入数据的界面,等待用户输入文本或 选择一个按钮,当用户单击“确定”按钮或按 Enter 键时,函数返回对话框中输入的内容。 格式:InputBox(提示信息[,标题][,缺省值][,横坐标][,纵坐标]) 功能:产生一个对话框,让用户从键盘输入内容,当用户单击“确定”按钮或按回车键 时,函数返回输入的数据,若单击“取消”按钮,则返回一个零长度的字符串。 说明: (1)“提示信息”是必要参数,是一个字符串表达式,作为显示在对话框中的消息,用 于提示用户输入。最大长度不能超过 1024 个字符,由所用字符的宽度决定。如果“提示信息” 的内容超过一行,则可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换 行符的组合(Chr(13)+Chr(10))将各行分隔开来。 (2)“标题”是可选项,是一个字符串表达式,它是对话框的标题,显示在对话框顶部 的标题区。 (3)“缺省值”,是可选项,显示文本框中的字符串表达式,在没有其他输入时作为缺省 值。如果省略“缺省值”,则文本框为空。 (4)“横坐标”、“纵坐标”是可选项,是一个数值表达式。指定对话框的左上角在屏幕 上的坐标。 函数返回值为字符串类型,所以如果要对返回值进行算术运算,必须要转换成数值型。 输入的数据必须作为函数的返回值赋给一个变量,否则输入的数据不能保留。 二、Print 方法 该方法常用于在窗体、图片框或打印机上输出文本信息或表达式的值。 格式:[对象名.]Print [表达式表][,|;] 说明:

(3)

(1)“对象名”可以是窗体、图片框或打印机,也可以是立即窗口。如果省略,则在当 前窗体上输出。 (2)表达式表是一个或多个表达式。 (3)Print 方法具有计算和输出双重功能,对于表达式先计算后输出。 (4)当输出多个表达式时,各表达式用分隔符(逗号、分号或空格)隔开。若用逗号分 隔,则按标准格式输出,每 14 列为一个输出区,将一行分为若干输出区,逗号后面的表达式 在下一个输出区显示输出;若用分号或空格分隔,则以紧凑格式输出。当输出数值数据时,数 值的前面有一个符号位,后面有一个空格,而字符串前后都没有空格。 在一般情况下,每执行一次 Print 方法都要自动换行,但语句尾带有逗号或分号,则系统 不会换行,下一个输出语句仍在该行输出。

任务 2 输出问候语

效果描述 设计程序“输出问候语”,用户通过输入框函数 InputBox 输入姓名,单击“确定”按钮后, 则以如图 2-2 所示的对话框显示一段问候信息。 图 2-2 任务 2 运行界面 设计分析 本程序中要以图 2-2 所示的对话框形式输出信息,这就要用到消息框函数 MsgBox。 MsgBox 函数以对话框的形式来输出信息,在这个对话框中,还可以有多种图标和多个按钮, 用户可以根据对话框的提示,选择相应的按钮来进行相应的处理。 完成步骤 窗体 Form1 的单击事件过程代码:

Private Sub Form_Click() Dim yourname As String

yourname = InputBox("请问尊姓大名?", "简单的对话框") a=MsgBox(yourname & ",您好,欢迎您的光临!",64,"简单的对话框") End Sub 知识链接 本程序中用到两种对话框,一个是输入框函数 InputBox,另一个是消息框函数 MsgBox。 前者已阐述过,这里就不重复了。后者可以向用户传送信息,并可以通过用户在对话框上的选

(4)

择识别用户所作的响应,作为程序继续执行的依据。 MsgBox 函数 格式:MsgBox(提示信息[,按钮][,标题][,横坐标,纵坐标]) 功能:产生一个对话框,在对话框中显示提示信息,等待用户单击按钮,并返回一个反 映用户所选按钮的数据值。 说明: (1)“提示信息”是必要参数,同 InputBox 函数。 (2)“按钮”为可选参数,指定显示的按钮类型、使用的图标样式、默认按钮等。按钮 参数设置见表 2-1、表 2-2、表 2-3。如果省略,则“按钮”参数的缺省值为 0。不同分组的取 值可以用“+”或“or”运算符连接起来使用。 表 2-1 按钮类型 按钮值 常量 说明 0 VbOkOnly 显示“确定”按钮 1 VbOkCancel 显示“确定”和“取消”按钮 2 VbAbortRetryIgnore 显示“终止”、“重试”和“忽略”按钮 3 VbYesNoCancel 显示“是”、“否”和“取消”按钮 4 VbYesNo 显示“是”和“否”按钮 5 VbRetryCancel 显示“重试”和“取消”按钮 表 2-2 图标样式 按钮值 常量 说明 16 VbCritical 显示停止(×)图标 32 VbQuestion 显示问号(?)图标 48 VbExclamation 显示警告(!)图标 64 VbInformation 显示消息(i)图标 表 2-3 默认按钮 按钮值 常量 说明 0 VbDefaultButton1 指定默认按钮为第一按钮 256 VbDefaultButton2 指定默认按钮为第二按钮 512 VbDefaultButton3 指定默认按钮为第三按钮 如:

a = MsgBox("选择", vbOKCancel + vbQuestion+ VbDefaultButton1, "退出") a = MsgBox("选择", 1+ 32+ 0, "退出")

a = MsgBox("选择", 1 Or 32 Or 0, "退出") a = MsgBox("选择",33, "退出")

以上四行产生相同的消息框。

(5)

表 2-4 MsgBox 函数的返回值 返回值 常量 说明 1 VbOk 选“确定”按钮 2 VbCancel 选“取消”按钮 3 VbAbort 选“终止”按钮 4 VbRetry 选“重试”按钮 5 VbIgnore 选“忽略”按钮 6 VbYes 选“是”按钮 7 VbNo 选“否”按钮 如:

a = MsgBox("选择", vbOKCancel + vbQuestion+ VbDefaultButton1, "退出")

输出消息框,如果用户单击“确定”按钮,则函数的返回值为 1,即变量 a 的值为 1。 (3)“标题”为可选参数,同 InputBox 函数。 (4)“横坐标”、“纵坐标”为可选参数,同 InputBox 函数,但横纵坐标要求成对出现。

应用提高 1 时间转换

效果描述 设计程序“时间转换”。单击窗体时用输入框函数输入小时、分和秒,把它转化成秒数并 输出,运行界面如图 2-3 所示。 图 2-3 应用提高 1 运行界面 设计分析 本程序是对输入的数据进行计算,数据由输入对话框输入,这里需将输入对话框内输入 的内容转换成数值才能进行计算,计算公式为:1 小时=60*60 秒,1 分钟=60 秒,计算结果由 消息对话框输出。 完成步骤 窗体 Form1 的单击事件过程代码:

(6)

Dim h As Single, m As Single, s As Integer h = Val(InputBox("请输入小时", "小时")) m = Val(InputBox("请输入分", "分")) s = Val(InputBox("请输入秒", "秒")) ss = h * 60 * 60 + m * 60 + s

a = MsgBox(h & "小时" & m & "分" & s & "秒=" & ss & "秒", 65,_"时间转换") End Sub

应用提高 2 求一元二次方程的根

效果描述 设计程序“求一元二次方程 ax2 +bx+c=0 的根”。单击窗体上的按钮,输入 a,b,c 的值, 求出一元二次方程的解,运行界面如图 2-4 所示。 图 2-4 应用提高 2 运行界面 设计分析 本程序是对一元二次方程求解,方程系数由输入对话框输入,求解之前先判断方程的解 的情况,如果有解,计算公式为:x1 = (-b + Sqr(d)) / (2 * a),x2 = (-b - Sqr(d)) / (2 * a);如果方 程有唯一解,计算公式为:x = (-b) / (2 * a),计算结果由消息对话框输出。 完成步骤 1.创建界面 (1)将窗体的 Caption 属性设置为“计算一元二次方程的根”。 (2)在窗体上添加 1 个命令按钮 Command1,设置其 Caption 属性值为“求方程的根”。 2.过程代码 “求方程的根”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click()

Dim a As Integer, b As Integer, c As Integer

Dim x1 As Double, x2 As Double, d As Double, x As Double a = InputBox("请输入 a", "输入 a", "")

(7)

c = InputBox("请输入 c", "输入 c", "") d = b * b - 4 * a * c

If d > 0 Then

x1 = (-b + Sqr(d)) / (2 * a) x2 = (-b - Sqr(d)) / (2 * a)

y = MsgBox("方程的两个根是" & x1 & "和" & x2, 64, "方程的解") Else If d = 0 Then x = (-b) / (2 * a) y = MsgBox("方程唯一的根是" & x, 64, "方程的解") Else y = MsgBox("方程无解", 64, "方程的解") End If End If End Sub

任务 3 求较大数

效果描述 设计程序“求较大数”。在如图 2-5 所示运行界面输入两个数,求其中较大数。 图 2-5 任务 3 运行界面 设计分析 本程序是对两个文本框中的数据进行大小比较,首先要将文本框中输入的内容转换成数 值类型,使用 Val 函数进行类型转换,然后用选择结构的条件语句 If…Then 语句进行判断比 较大小,并将判断的结果显示到第三个文本框中。 完成步骤 1.创建界面

(1)在窗体上添加 3 个文本框控件 Text1、Text2 和 Text3,设置 3 个文本框的 Text 属性 值均为空。

(2)在窗体上添加 3 个标签控件 Label1、Label2 和 Label3,设置 3 个标签的 Caption 属 性值分别为“a=”、“b=”和“较大数=”。

(3)在窗体上添加 1 个命令按钮控件 Command1,设置命令按钮的 Caption 属性值为“判 断”。

(8)

2.过程代码

“判断”命令按钮 Command1 的单击事件过程代码: 格式 1:

Private Sub Command1_Click()

Dim a As Integer, b As Integer, t As Integer a = Val(Text1.Text) b = Val(Text2.Text) If a < b Then t = a: a = b: b = t Text3.Text = a End Sub 格式 2:

Private Sub Command1_Click()

Dim a As Integer, b As Integer, t As Integer a = Val(Text1.Text) b = Val(Text2.Text) If a < b Then t = a a = b b = t End If Text3.Text = a End Sub 知识链接 单分支选择结构 在日常生活和工作中,常常要对给定的条件进行比较和判断,并根据判断结果采取不同 的操作,这就是选择结构程序。 本程序中用到的是单分支选择结构 If…Then 语句。 单分支结构 If 语句具有两种语句格式,即单行格式与多行格式。 格式 1(单行格式):If <条件表达式> Then <语句序列 1> 格式 2(多行格式):If <条件表达式> Then <语句序列 1> End if 功能:判断条件表达式,当条件成立(为真)时,执行 Then 后面的语句序列 1,否则, 执行 If 语句的下一条语句。 说明: (1)语句序列可以为一条或多条语句。 (2)单行语句格式不用 End If 结束。 (3)条件表达式通常为关系表达式或逻辑表达式,但也可以是算术表达式,非零为真、 零为假。

(9)

任务 4 计算运费

效果描述 设计程序“计算运费”。火车站托运行李时,需要根据行李的重量按不同的标准进行收费。 由输入对话框输入行李的重量 weight(千克),计算出托运费用 carriage(元)。计算公式如下: weight*0.3 ( weight<=50) carriage 50*0.3+(weight-50)*0.6 (weight>50)    程序运行界面如图 2-6 所示。 图 2-6 任务 4 运行界面 设计分析 本程序要判断行李的重量,根据行李的重量计算运费,显然也要使用选择结构语句。行 李的重量分为两种情况,大于 50 和小于等于 50 的,所以应采用双分支选择结构语句 If…Then… Else…End If 进行判断。 完成步骤 1.创建界面 (1)将窗体的 Caption 属性设置为“计算运费”。 (2)在窗体上添加 1 个命令按钮 Command1,设置其 Caption 属性值为“计算”。 2.过程代码 “计算”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click() Dim eage As Single, fee As Single

Weight = Val(InputBox("请输入行李的重量(千克)", "计算运费")) If Weight <= 50 Then carriage = Weight * 0.3 Else carriage = 50 * 0.3 + (Weight - 50) * 0.6 End If Print "您的行李重量为:"; Weight; "千克" Print "您的托运费用为:"; carriage; "元" End Sub

(10)

知识链接

本程序中用到双分支结构语句 If…Then…Else…End If。 一、双分支选择结构

双分支结构 If 语句也具有两种语句格式,即单行格式与多行格式。

格式 1(单行格式):If <条件表达式> Then <语句序列 1> Else <语句序列 2> 格式 2(多行格式):If <条件表达式> Then <语句序列 1> Else <语句序列 2> End If 功能:如果条件成立,执行语句序列 1,否则执行语句序列 2。 二、iif 函数 iif 函数可用来执行简单的条件判断操作,它是 If…Then…Else…End If 结构的简写版本。 1.格式 Result=iif(条件,语句 1,语句 2) 2.功能 “条件”是一个逻辑表达式,当它为真时,iif 函数返回语句 1 的值,当它为假时,iif 函 数返回语句 2 的值。 如下面的条件语句: If a>5 Then r=1 Else r=2 End If

可以用 iif 函数来代替:r=iif(a>5,1,2),显然,用 iif 函数可以使程序大为简化。

应用提高 3 求三个数的最大数

效果描述

设计程序“求三个数中最大数”。输入三个数,求其中最大数。运行界面如图 2-7 所示。

(11)

设计分析 本程序求三个数的最大数,要先比较前两个数的大小,然后再将其中的较大数跟第三个 数进行比较,这样就可以求到最大数了。比较数的大小可以利用选择结构语句。 完成步骤 1.创建界面 (1)将窗体的 Caption 属性设置为“求最大数”。 (2)在窗体上添加 4 个标签 Label1~Label4,将这 4 个标签的 Caption 属性分别设置为 “a=”、“b=”、“c=”、“最大数=”。

(3)在窗体上添加 4 个文本框 Text1~Text4,将 4 个文本框的 Text 属性设置为空,Text4 的 Locked 属性设置为 True,使得 Text4 中的文本内容为只读。

(4)在窗体上添加 1 个命令按钮 Command1,设置其 Caption 属性为“判断”。 2.过程代码

“判断”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click()

Dim a As Single, b As Single, c As Single, x As Single a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a >= b Then x = a Else x = b End If If x < c Then x = c End If Text4.Text = x End Sub

应用提高 4 三个数排序

效果描述 设计程序“三个数排序”。输入三个数,将它们从 大到小排序,用户在三个文本框中分别输入 3 个数据, 单击“排序”按钮,则在第四个文本框中显示排序结果, 如图 2-8 所示。 设计分析 本程序需将三个数进行大小比较,先将这三个数分 图 2-8 应用提高 4 运行界面

(12)

别赋予变量 a、b、c,设定最终排序结果中 a 为最大值,b 次之,c 为最小值,为实现此目的, 首先比较 a 与 b 的值,如果 a<b,则 a 与 b 的值互换,实现 a>=b;然后比较 a 与 c 的值,如果 a<c,则 a 与 c 的值互换,实现 a>=c;最后比较 b 与 c 的值,如果 b<c,则 b 与 c 的值互换, 实现 b>=c;比较数的大小同样可以利用选择结构语句。 完成步骤 1.创建界面 (1)将窗体的 Caption 属性设置为“三个数排序”。 (2)在窗体上添加 5 个标签 Label1~Label5,将这 5 个标签的 Caption 属性分别设置为“三 个数从大到小排序”、“第一个数”、“第二个数”、“第三个数”、“排序结果”。

(3)在窗体上添加 4 个文本框 Text1~Text4,将 4 个文本框的 Text 属性设置为空,Text4 的 Locked 属性设置为 True,使得 Text4 中的文本内容为只读。

(4)在窗体上添加 1 个命令按钮 Command1,设置其 Caption 属性为“排序”。 2.过程代码

“排序”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click() a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a < b Then t = a: a = b: b = t End If If a < c Then t = a: a = c: c = t End If If b < c Then t = b: b = c: c = t End If

Text4.Text = a & "," & b & "," & c End Sub

任务 5 判定成绩等级

效果描述 设计程序“判定成绩等级”。输入学生的成绩并根据以下条件判定成绩等级: 优:90 分~100 分(包括 90 分和 100 分) 良:80 分以上(包括 80 分) 中:70 分以上(包括 70 分) 及格:60 分以上(包括 60 分) 不及格:60 分以下 程序运行界面如图 2-9 所示。

(13)

图 2-9 任务 5 运行界面 设计分析 本程序中要判定输入成绩的等级,从题目中可以看出成绩的等级有五种,用前面的单分 支和双分支选择结构语句很难实现了,因此要用到多分支的选择结构语句 If…Then…ElseIf… End If 语句了。这样,不但程序的结构清晰,而且很方便实现程序的功能,这种多分支结构不 受条件个数的限制,无论多少个条件都能轻易地实现。 完成步骤 1.创建界面

(1)在窗体上添加 2 个标签控件 Label1、Label2,设置 Label 的 Caption 属性为“输入成 绩:”,Label2 的 Caption 属性为空。

(2)在窗体上添加 1 个文本框控件 Text1,设置它的 Text 属性为空。

(3)在窗体上添加 1 个命令按钮控件 Command1,设置它的 Caption 属性为“判断”。 2.过程代码

“判断”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click() Dim score As Integer, temp As String score = Val(Text1.Text)

temp = "成绩等级为:" If score < 60 Then

Label2.Caption = temp + "不及格" ElseIf score < 70 Then

Label2.Caption = temp + "及格" ElseIf score < 80 Then

Label2.Caption = temp + "中" ElseIf score < 90 Then

Label2.Caption = temp + "良" ElseIf score < 100 Then

Label2.Caption = temp + "优" Else

Label2.Caption = "成绩出错" End If

(14)

知识链接 本程序中用到的是多分支选择结构形式的 If…Then…ElseIf…End If 语句。 多分支选择结构条件语句 1.格式 If <条件 1> Then 语句序列 1 [ElseIf <条件 2> Then 语句序列 2 …… [ElseIf <条件 n-1> Then 语句序列 n-1 [Else 语句序列 n]] End If 2.功能 首先判断条件 1 是否成立,如果成立,则执行语句序列 1;如果不成立,则继续判断 ElseIf 子句后的条件 2 是否成立,若成立,则执行语句序列 2;否则,继续判断以下的各个条件,依 此类推。如果条件 1 到条件 n-1 都不成立,则执行 Else 子句后面的语句序列 n。 当某个条件成立且执行了其相应的语句序列后,将不再继续往下判断其他条件,而直接 退出选择结构,执行 End If 之后的语句。 3.说明 (1)ElseIf 子句不需要 End If 与之相匹配。 (2)ElseIf 子句的个数是任意的。

任务 6 计算优惠价

效果描述 设计程序“计算优惠价”。某商场为了促销,采用购物打折扣的优惠方法,每位顾客一次 购物: 在 1000 元以上 2000 元以下的按九五折优惠; 在 2000 元以上 3000 元以下的按九折优惠; 在 3000 元以上 5000 元以下的按八五折优惠; 在 5000 元以上的按八折优惠。 编程序,输入购物款数,计算并输出优惠价。运行界 面如图 2-10 所示。 设计分析 设购物款数为 price 元,优惠价为 money 元,则优惠价计算公式为: 图 2-10 任务 6 运行界面

(15)

price (price<1000) 0.95*price (1000≤price<2000) 0.9*price (2000≤price<3000) 0.85*price (3000≤price<5000) 0.8*price (price≥5000) 这个程序中仍然有多个条件,我们可以用多分支结构条件语句来实现,但还有另一种结 构也可以很容易地实现本程序的功能,这种结构就是 If 语句的嵌套。所谓 If 语句的嵌套就是 一个 If 语句里又包含一个 If 语句。

完成步骤 1.创建界面

(1)在窗体上添加 2 个标签控件 Label1 与 Label2,分别设置它们的 Caption 属性值为“购 物款数”和“优惠价”。

(2)在窗体上添加 2 个文本框控件 Text1 和 Text2,设置它们的 Text 属性值为空。 (3)在窗体上添加 1 个命令按钮控件 Command1,将它的 Caption 属性设置为“计算”。 2.过程代码

“计算”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click() Dim price As Single, money As Single price = Val(Text1.Text) If price < 1000 Then money = price Else If price < 2000 Then money = price * 0.95 Else If price < 3000 Then money = price * 0.9 Else If price < 5000 Then money = price * 0.85 Else money = price * 0.8 End If End If End If End If Text2.Text = money End Sub 知识链接 在处理复杂问题时需要用到 If 语句的嵌套形式,If 语句的嵌套是指 If 或 Else 后面的语句 还包含有 If 语句。本程序中用到的就是 If 语句的嵌套。 money =

(16)

If 语句的嵌套 格式: If <条件 1> Then If <条件 2> Then … End If Else … End If 或 If <条件 1> Then … Else If <条件 2> Then … End If End If

任务 7 字符分类

效果描述 设计程序“字符分类”,单击窗体时通过弹出的输入对话框输入字母或 0~9 的数字进行 分类,判断出是大写字母、小写字母或数字。运行界面如图 2-11 所示。 图 2-11 任务 7 运行界面 设计分析 在这个程序中,要判断输入的字符是大写字母、小写字母或数字,可以使用前面学过的 多分支结构语句 If…Then…ElseIf…End If,还可以采用另外一种多分支结构语句来实现本程序 的功能,这种多分支结构是 Select Case 语句。

(17)

完成步骤

窗体 Form1 的单击事件过程代码:

Private Sub Form_Click()

Dim msg As String, UserInput As String

msg = "请输入一个字母或 0~9 之间的数字。" UserInput = InputBox(msg) Select Case Asc(UserInput) Case 65 To 90 msg = "你输入的是一个大写字母'" msg = msg & Chr(Asc(UserInput)) & "'。" Case 97 To 122

msg = "你输入的是一个小写字母'" msg = msg & Chr(Asc(UserInput)) & "'。" Case 48 To 57

msg = "你输入的是一个数字'"

msg = msg & Chr(Asc(UserInput)) & "'。" Case Else msg = "你没有输入字母或数字。" End Select MsgBox msg End Sub 知识链接 If 语句已经可以解决所有的条件判断问题了,但对于多条件的情况,VB 还提供了 Select Case 语句来实现与 If…Then…ElseIf…End If 语句相同的分支功能。 Select Case 语句 1.格式 Select Case 测试表达式 Case 表达式表 1 语句序列 1 Case 表达式表 2 语句序列 2 … [Case Else 其他语句序列] End Select 2.功能 自上而下检查测试表达式与哪个表达式表的值匹配,当测试表达式与某个表达式表的值 匹配时就执行相应的语句序列,若无任何表达式表与之匹配时,就执行 Case Else 后的其他语 句序列。 3.说明 (1)测试表达式可以是数值表达式或字符串表达式。

(18)

(2)表达式表可有如下三种形式:

1)一组值(用逗号隔开) 例:Case 100 或 Case "kdfj " 2)表达式 1 to 表达式 2 例:Case 1 to 10

3)Is 关系表达式 例:Case Is<20

当使用多个表达式列表时,表达式之间要用逗号隔开。 例:Case 1 to 5, 20 to 40, is>200 (3)Select Case 语句在执行时,仅能执行其中的语句序列之一,在执行语句序列之后, 就转去执行 End Select 后边的语句。

应用提高 5 简单计算器

效果描述 设计程序“简单计算器”。用户在三个文本框中 分别输入两个数和一个运算符,单击“计算”按钮, 则在第四个文本框中显示计算结果,如图 2-12 所示。 设计分析 本程序需将输入的两个数及运算符进行组合计 算,先将这两个数分别赋予变量 a、b,再将运算符赋 予变量 c,程序通过判断运算符 c 的情况对 a,b 进行 运算,结果显示在文本框中。 完成步骤 1.创建界面 (1)将窗体的 Caption 属性设置为“简单计算器”。 (2)在窗体上添加 4 个标签 Label1~Label4,将这 4 个标签的 Caption 属性分别设置为“第 一个数”、“运算符”、“第二个数”、“显示结果”。 (3)在窗体上添加 4 个文本框 Text1~Text4,将 4 个文本框的 Text 属性设置为空。 (4)在窗体上添加 1 个命令按钮 Command1,设置其 Caption 属性为“计算”。 2.过程代码 “计算”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click() a = Val(Text1.Text) b = Val(Text3.Text) c = Trim(Text2.Text) Dim d As Double Select Case c Case "+" d = a + b Case "-" 图 2-12 应用提高 5 运行界面

(19)

d = a - b Case "*" d = a * b Case "/" d = a / b End Select Text4.Text = d End Sub

任务 8 求 1-100 自然数和

效果描述 设计程序“求 1-100 自然数和”。当用户单击窗体时, 在窗体上输出 1-100 之间自然数和。程序运行结果如图 2-13 所示。 设计分析 要求 1-100 自然数和并在窗体上打印出来,可用一条 语句实现:Print 1+2+3+4+5+6+……,但用这种方法来解 决的话,过于繁琐,期间也可能因为误写而造成结果错误。从语句中可以看出,这是一个非常 规则的加法:从 1 开始一直加到 100,相加的操作重复 99 次,每一个相加数字都与前一个数 字相差 1。因此,我们可以利用循环语句来控制次数,因为知道了相加数字的起始值与终止值, 也就确定了循环的次数,那么我们可以用 For…Next 语句来实现程序的功能。这样就减少了程 序的代码量。 完成步骤 窗体 Form1 的单击事件过程代码:

Private Sub Form_Click() Dim i, Sum As Long Sum = 0 For i = 1 To 100 Step 1 Sum = Sum + i Next i Print Sum End Sub 知识链接 在解决实际问题中,经常要对某一处理过程反复执行多次,这就出现了循环,而处理过 程称为循环体,它需要重复执行若干次,直到达到要求为止。但要注意避免出现无限循环的 情况。 图 2-13 任务 8 运行结果

(20)

For…Next 循环语句 1.格式 For 循环变量 = 初值 To 终值 [ Step 步长] 循环体 [Exit For] Next [循环变量] 说明: (1)“循环变量”也称循环控制变量,是一个数值变量。 (2)“初值”和“终值”是数值型变量或表达式。 (3)“步长”是数值型表达式,可以是正数,也可以是负数,但不能为 0,当步长为 1 时 可省略。 (4)“循环体”可以是一条或多条语句。 (5)Exit For 用来强制退出循环。

(6)For 语句和 Next 语句必须成对出现,不能单独使用,且 For 语句必须出现在 Next 语句之前。 2.执行过程 首先把“初值”赋值给循环变量,接着检查循环变量的值是否超过“终值”,如果超过就 停止执行循环体,跳出循环,执行 Next 后面的语句。否则执行一次循环体,然后把“循环变 量+步长”的值赋给循环变量,重复上述过程。 这里的“超过”是指沿着循环变量变化的方向超过终值。即当步长为正值时,循环变量 的值大于终值;当步长为负值时,循环变量的值小于终值。其流程图如图 2-14 所示。 图 2-14 For 循环流程图 从上面 For…Next 语句的执行过程很容易计算出循环的次数,计算公式为: 循环次数 = Int((终值-初值)/步长+1) 循环变量超过终值? 循环变量=初始值 循环体 循环变量=循环变量+步长 假 真

(21)

应用提高 6 计算阶乘

效果描述 设计程序“计算阶乘”。在窗体的文本框中输入一 个正整数,单击窗体时计算出这个正整数的阶乘值。 运行界面如图 2-15 所示。 设计分析 求阶乘是一个不断累乘的过程,任意一个正整数 的阶乘都是从 1 累乘到这个数,也就是说累乘的初值 为 1,步长也为 1,只要确定了终止值,就可以利用循 环求任意数的阶乘值。 完成步骤 1.创建界面

(1)在窗体上添加 2 个标签控件 Label1 与 Label2,分别设置它们的 Caption 属性值为“输 入正整数”和空。

(2)在窗体上添加 1 个文本框控件 Text1,设置它的 Text 属性值为空。

(3)在窗体上添加 1 个命令按钮控件 Command1,将它的 Caption 属性设置为“计算”。 2.过程代码

“计算”命令按钮 Command1 的单击事件过程代码:

Private Sub Command1_Click() Dim n, i, k As Long n = Val(Text1.Text) i = 1 k = 1 For i = 1 To n k = k * i Next i

Label2.Caption = n & "!=" & k End Sub

应用提高 7 斐波那契级数求和

效果描述 设计程序“斐波那契级数求和”。斐波那契级数的第一、第二项是固定值 1,从第三项开 始,每一项的值是前两项值之和,级数的形式是:1,1,2,3,5,8,13,21,34,…。求斐 波那契级数的前 20 项,并求出这 20 项的和。运行界面如图 2-16 所示。 图 2-15 应用提高 6 运行界面

(22)

设计分析 斐波那契级数从第三项开始数值的取值就有规律, 可以采用循环方式求得。用变量 A、B 保存级数的最后两 项,然后生成新的一项 A+B,将原来的 B 值保存到 A 中, 将 A+B 值保存到 B 中,程序又可循环产生新的一项。I 为循环变量,T 为中间变量。 完成步骤 窗体 Form1 的单击事件过程代码:

Private Sub Form_Click() Dim A, B, T, sum As Integer

Print "斐波那契级数的前 20 项是:" A = 1: B = 1 Print A; B; For i = 3 To 20 T = A + B A = B B = T Print T; sum = sum + T

If i Mod 6 = 0 Then Print Next i Print Print "斐波那契级数的前 20 项和为:"; sum End Sub

任务 9 计算人口数

效果描述 设计程序“计算人口数”。我国有 13 亿人口,按人口 年增长率 0.8%计算,计算多少年后我国人口超过 26 亿? 运行界面如图 2-17 所示。 设计分析 在这个程序中,循环的次数是不能确定的,所以不能 用 For…Next 来完成。因此采用 VB 提供的另一种循环结 构:Do…Loop 循环,它可以在不确定循环次数的情况下实现循环。 完成步骤 窗体 Form1 的单击事件过程代码: 图 2-17 任务 9 运行界面 图 2-16 应用提高 7 运行界面

(23)

Private Sub Form_Click() Dim n%, m, x! x = 13 n = 0 Do While x < 26 x = x * 1.008 n = n + 1 Loop Print "求得的年数为:"; n Print "人数为:"; x End Sub 知识链接 一、Do…Loop 循环 For…Next 提供了重复执行循环的功能,但其执行次数是固定的,有时候我们希望循环 不限次数地重复执行,直到某个条件满足为止,这就要用到另一种循环结构:Do…op 循环。

Do…Loop 用于循环次数未知的循环结构。Do…Loop 语句通常与 While 语句或 Until 语句 配合使用,根据 While 语句或 Until 语句在 Do…Loop 中所处的位置不同,可以构成当型循环 或直到型循环。 1.当型循环 当型循环是判断条件成立时执行循环体,条件不成立时退出循环。它有两种语句格式。 格式 1: 格式 2: Do [ While 条件表达式 ] Do 循环体语句 循环体语句 [Exit Do] [Exit Do] [循环体语句] [循环体语句]

Loop Loop [While 条件表达式 ] 执行过程: 格式 1 是先判断条件,若条件表达式的值为 True,则执行循环体,然后再返回判断条件; 若条件为 False,则结束循环。其流程图如图 2-18(a)所示。 格式 2 是先执行循环体,再判断条件,若条件表达式的值为 True,则再返回执行循环体, 然后再判断条件;若条件为 False 则结束循环。其流程图如图 2-18(b)所示。 说明: (1)“条件表达式”通常为关系表达式或逻辑表达式,但也可以是算术表达式,非零为 真、零为假。 (2)“循环体”可由若干条语句组成。

(3)Exit Do 语句表示无条件退出 Do…Loop 循环。Exit Do 语句还经常与 If 语句一起配 合使用,表示当某条件满足时退出循环。

如,If Sum>100 Then Exit Do

(4)若省略 While 或 Until 子句,即循环由 Do-Loop 构成,则为无条件循环,循环体内 应该有 Exit Do 语句,否则会成为死循环。

(24)

(a) (b) 图 2-18 当型循环流程图 2.直到型循环 直到型循环是判断条件不成立时执行循环体,判断条件成立时退出循环。它有两种语句 格式。 格式 1: 格式 2: Do [ Until 条件表达式 ] Do 循环体语句 循环体语句 [ Exit Do] [ Exit Do] [循环体语句] [循环体语句] Loop Loop [ Until 条件表达式 ] 执行过程: 格式 1 是先判断条件,然后执行循环体。若条件表达式的值为 False 时,则执行循环体; 然后再判断条件,若条件为 True 则结束循环。其流程图如图 2-19(a)所示。 格式 2 也是先执行循环体,然后判断条件。若条件表达式的值为 False 时,再返回执行循 环体;若条件为 True 则结束循环。其流程图如图 2-19(b)所示。 (a) (b) 图 2-19 直到型循环流程图 任务 9 是用 Do While…Loop 循环实现的,也可以用 Do Until…Loop 循环完成。 二、While…Wend 循环 VB 还提供了 While…Wend 循环语句,它属于当型循环结构。 True False 条件 循环体 条件 循环体 True False False True 条件 循环体 条件 循环体 False True

(25)

1.格式 While 条件表达式 循环体语句 Wend 2.执行过程 首先计算给定条件表达式的值,如果结果为 True(非 0 值),则执行循环体,当遇到 Wend 语句时,控制返回并继续对条件表达式进行测试,如果仍然为 True,重复上述过程;如果条 件表达式的结果为 False,则不执行循环体,直接执行 Wend 后面的语句。其流程图如图 2-20 所示。 图 2-20 While 循环流程图

任务 10 打印乘法口诀

效果描述 设计程序“打印乘法口诀”。当用户单击窗体时,在窗体上打印九九乘法口诀。运行结果 如图 2-21 所示。 图 2-21 任务 10 运行结果 设计分析 这个九九乘法口诀是一个直角三角形图形。如果用前面的单重循环,可以很容易地输出 一行或一列,但很难同时输出行列,因此本程序中我们采用双重循环结构实现。 计算“条件”值 执行循环体 Yes 条件为真吗? No

(26)

完成步骤

窗体 Form1 的单击事件过程代码:

Private Sub Form_ Click () Dim i, j As Single For i = 1 To 9 For j = 1 To i Print j ; " * " ; i ; " = " ; i * j ; Next j Print Next i End Sub 程序中外层循环控制变量 i 从 1 变化到 9,控制循环执行 9 次,内层循环控制变量 j 的初 值为 1,但终值是随外层循环控制变量 i 的变化而变化的。比如当 i 值为 5 时,j 要从 1 变化 到 5,j 每变化一次,内层循环的循环体“Print j…i*j;”语句就要执行 1 次。即输出从“1*5=5” 变化到“5*5=25”。当内层循环体执行完 5 次后,应输出一个换行,即在内层循环语句之后应 有一个“print”语句。然后外层循环控制变量 i 再增加一个增量 1,i 变为 6,之后内层循环的 j 又要从 1 变化到 6 继续新一轮的循环。因此在程序中对于内层循环的循环体“Print j…i*j;” 语句总计要执行 1+2+3+…+9=45 次。 知识链接 一、多重循环 本程序的第一个 For…Next 循环语句中,又包含了两个 For…Next 循环语句,这种在循环 语句的循环体中又包含有另一个循环的循环结构,称为多重循环,也称为循环嵌套。 循环嵌套层数没有具体限制,但在循环嵌套中需注意以下问题: (1)内层与外层循环不得交叉。 如:

For i=1 to 5 For i=1 to 5 For j=1 to 10 For j=1 to 10 … … Next i Next j Next j Next i 错误 正确 (2)内层与外层循环的循环变量名不得相同。 二、应用程序错误与调试 应用程序在运行过程中出现错误是不可避免的,有时甚至防不胜防。虽然经过测试可以 消除许多潜在的错误,但实际上不可能消除所有的错误。例如除零错、数据溢出、文件被误删 除等。 在应用程序中查找并修改错误的过程叫程序调试,程序调试是为了发现错误而执行程序。 VB 提供了几种调试工具,不但对查找错误特别有效,而且对于意外事故的防范也可以在程序

(27)

中设计错误处理程序实现。 1.常见错误分析 VB 程序错误可分为三种:编译错误、逻辑错误和运行时错误。 (1)编译错误 编译错误是由于违反 VB 的语法而产生的错误,也叫语法错误,如关键字拼写错误、分隔 符号遗漏、块控制结构不完整或不匹配等。编译错误可以通过程序编译发现,是比较容易查找 的错误。 避免编译错误可单击“工具”菜单下的“选项”命令,显示如图 2-22 所示的对话框,选 中“编辑器”选项卡中的“自动语法检测”。在输入程序代码时,每输入一行代码(按回车或 移动光标到其他行)后,VB 都会自动对该行进行语法检查,系统自动检测出错误,将错误加 亮,并显示出错对话框,如图 2-23 所示。 图 2-22 “自动语法检测”选项设置 图 2-23 代码编辑过程中发现的语法错误 另外,如果选择“文件”菜单的“生成…EXE”命令,或者选择“运行”菜单的“启动” 或“全编译执行”命令,都会启动 VB 的编译程序。编译程序可以检测所有语法错误,如图 2-24 所示的出错信息,单击“确定”按钮后,程序将暂停执行,进入调试状态。

(28)

图 2-24 程序编译过程中发现的语法错误 (2)逻辑错误 逻辑错误是程序运行后,由于所编写的代码不能实现预期的功能而产生的错误。程序中 的语句是合法的,编译程序不能发现错误,程序也能被执行,但执行结果却不正确。逻辑错误 通常难于查找,需要对程序进行深层次分析,或使用专门的程序测试工具。 (3)运行时错误 运行时错误是指程序在运行时由不可预料的原因导致的错误,如输入非法数据、要读写 的文件被意外删除等。运行时错误可能在程序交付使用很久以后才被发现。VB 能够捕获大多 数运行时错误,产生错误后,VB 将中止应用程序,并显示出错信息,如图 2-25 所示。若单击 “调试”,将切换到程序调试状态;若单击“结束”,将退出程序。 图 2-25 运行时错误 为避免运行时错误影响程序运行,可以设置错误陷阱,即在程序中设置错误处理程序。 2.程序调试 程序调试可利用“调试”工具栏(如图 2-26 所示)、菜单或错误处理程序进行。 图 2-26 “调试”工具栏 中断 逐语句 跳出 立即窗口 调用堆栈 快速监视 本地窗口 逐过程 结束 启动 切换断点 监视窗口

(29)

(1)“调试”工具栏 说明: 1)切换断点。设置或取消断点。断点是一个可执行的语句行,程序执行到断点处将中断 运行进入调试状态。 2)逐语句。每次执行程序代码的一行,可以跟踪到过程中。 3)逐过程。每次执行程序代码的一行,但不跟踪到过程中。 4)跳出。执行当前过程的其他部分,在调用其他过程处中断执行。 5)本地窗口。显示局部变量的当前值。 6)立即窗口。当程序处于中断模式时,允许执行代码或查询值。 7)监视窗口。显示选定表达式的值。 8)快速监视。当程序处于中断模式时,列出表达式的当前值。 9)调用堆栈。当程序处于中断模式时,呈现一个对话框来显示所有已被调用但尚未完成 运行的过程。 (2)调试菜单 VB 的菜单中包含全部测试工具。在“调试”菜单中包括“逐语句”、“逐过程”、“运行到 光标处”、“添加监视”、“切换断点”、“清除所有断点”等;在“视图”菜单中包括“本地窗口”、 “立即窗口”、“调用堆栈”等。 (3)调试工具的使用 下面介绍几种常用调试工具的使用方法: 1)断点调试。一条可执行语句,如果被设置成断点,则程序运行时执行到该语句会暂停, 此时将鼠标指针移动到程序中的各个变量上略作停留,系统将以浮动标签的方式显示该变量的 值;单击工具栏上的“继续运行”按钮,程序可继续执行。 断点的设置方法:①在代码窗口中单击该语句左侧的阴影边框,边框上将出现一个棕色 的圆点,同时语句的底色被置成棕色,如图 2-27 所示;②在代码窗口中选定一条语句,打开 “调试”菜单,选择“切换断点”命令,该语句的左侧将出现棕色圆点。 图 2-27 设置断点 要取消断点,则可以在棕色圆点上再次单击鼠标,棕色圆点即消失。 2)逐语句执行。打开“调试”菜单,选择“逐语句”命令(或按 F8 键),系统执行程序 的第一条语句后暂停,该语句的底色被置成黄色,此时可将鼠标停留在各个变量上,通过浮动 标签观察变量的值;再次选择“调试”菜单中的“逐语句”命令,或者按 F8 键,系统将执行 程序中的第二条可执行语句,然后暂停,通过反复按 F8 键可逐句完成程序的运行。 要终止逐语句执行方式,可以打开“调试”菜单,选择“跳出”命令,系统即恢复正常 运行方式将程序执行完毕;或者单击工具栏上的“结束”按钮,终止程序的运行。

(30)

3)使用立即窗口。在设置了断点或采取逐行执行的模式下,可以在立即窗口中观察变量 或表达式的值,方法是:首先打开“视图”菜单,选择“立即窗口”命令,打开立即窗口;当 程序运行处于暂停状态时,在立即窗口中输入“Print <变量名>”或“? <变量名>”,即可在立 即窗口中显示某变量的值。 在不中断程序运行的情况下,使用“Debug.Print<变量名>”,也可以在立即窗口中显示指 定变量的值。Debug 是 VB 提供的标准系统对象,该对象的 Print 方法可以将变量、表达式的 值直接输出到立即窗口中。例如,可以在上述程序的“Next J”后插入一条语句: Debug.Print F 程序执行完毕,可见立即窗口中有一系列的阶乘值,据此可判断阶乘的计算是否正确。 4)逐过程。打开“调试”菜单,选择“逐过程”命令(或者按下 Shift+F8 组合键),将 以逐过程方式运行程序。 逐语句方式是针对程序中所有可执行语句,一次只执行一条语句,然后暂停;在逐过程 方式下,如果当前语句是普通语句,则与逐语句方式相同,如果当前语句是过程调用语句,被 调用过程一次执行完毕,不论该过程有多长,然后返回当前过程的下一条语句。 终止逐过程运行方式与终止逐语句运行方式的操作相同。

应用提高 8 输出几何图形

效果描述 设计程序“输出几何图形”。在窗体上打印出如图 2-28 所示的图形。 图 2-28 应用提高 8 运行界面 设计分析 输出图形一般用外循环控制图形的行数,用内循环控制每行输出的符号个数。要输出这 个图形,外循环应当循环 8 次,每一次外循环输出一行图形,每一行输出的符号数是变化的, 可以看出每行符号“*”的个数要比上一行少一个,找出内循环与外循环的变化关系即可完成 图形的输出。

(31)

完成步骤

窗体 Form1 的单击事件过程代码:

Private Sub Form_Click() Dim i, j As Integer For i = 1 To 8 For j = 8 To i Step -1 Print "*"; Next j Print Next i End Sub

应用提高 9 求水仙花数

效果描述 设计程序“求水仙花数”。打印输出 100~999 之间的“水仙花数”。所谓“水仙花数”是 指一个三位数,其各位数的立方和等于该数,如:153=13 +53+33。 设计分析 求水仙花数,就要将一个三位数的每个数位拆开并求出它们的立方和,如果求出的立方 和与该数相等,则是水仙花数,将其输出。要找出 100~999 之间所有的“水仙花数”,则只要 把 100~1000 之间所有的整数依次验证一下就可以了。由于循环的总次数是确定的,因此可以 用 For…Next 语句控制整个外循环。而对于每个具体的数是否为“水仙花数”就要用 Do…Loop 语句来进行判断了。 完成步骤 窗体 Form1 的单击事件过程:

Private Sub Form_Click()

Dim n As Integer, s As Integer, a As Integer, b As Integer For n = 100 To 1000 s = 0 a = n Do While a <> 0 b = a Mod 10 s = s + b * b * b a = a \ 10 Loop If s = n Then Print n Next n End Sub

(32)

实 训

1.编写程序,要求用户输入下列信息:姓名,年龄、通信地址、邮政编码、电话,通过 InputBox 函数输入数据,再在窗体上将输入的数据以适当的格式显示出来。 2.编写程序,从键盘上输入 4 个数,计算并输出这 4 个数的和及平均值。通过 InputBox 函数输入数据,通过 Msgbox 函数显示和及平均值,要求出现“i”图标和“确定”按钮,单 击“确定”按钮后,将结果显示在窗体上。 3.编写程序,给出三角形的 3 条边长,计算三角形的面积。首先判断给出的 3 条边能否 构成三角形。如可以构成,则计算并输出该三角形的面积,否则要求重新输入。 4.税务部门征收所得税,规定如下: (1)收入在 1500 元以内;免征; (2)收入在 1500~2000 元内,超过 1500 元的部分纳税 3%; (3)收入超过 2000 元的部分,纳税 4%; (4)当收入达 5000 元或超过时,将 4%税金改为 5%。 编程实现上述操作。 5.假定有以下每周工作安排: 星期一、三:讲计算机课 星期二、四:讲程序设计课 星期五:进修英语 星期六:政治学习 星期日:休息 试编写一个程序,对上述工作日进行检索。程序运行后,要求输入星期几,输出这一天 的工作安排。 6.在窗体的文本框中输入年份,判断该年是否为闰年。 提示:能被 4 整除不能被 100 整除或能被 4、100 和 400 整除的是闰年。 7.求 1~100 中奇数的平方和,即 S = 1 2 +3 2 + …… +992。 8.编写程序,要求程序运行时,单击窗体输出图 2-29 的几何图形。 图 2-29 实训 8 图

(33)

习 题

一、选择题 1.VB 提供了结构化程序设计的 3 种基本结构,这 3 种基本结构是______。 A.递归结构,选择结构,循环结构 B.选择结构,过程结构,顺序结构 C.过程结构,输入、输出结构,转向结构 D.选择结构,循环结构,顺序结构 2.下面正确的赋值语句是______。

A.x+y=30 B.y=π*r*r C.y=x+30 D.3y=x 3.为了给 x,y,z 这 3 个变量赋初值 1,下面正确的赋值语句是______。

A.x=1:y=1:z=1 B.x=1,y=1,z=1 C.x=y=z=1 D.xyz=1

4.赋值语句:a=123+MID("123456",3,2)执行后,a 变量中的值是______。 A."12334" B.123 C.12334 D.157 5.赋值语句:a=123 & MID("123456",3,2)执行后,a 变量中的值是______。

A."12334" B.123 C.12334 D.157

6.下面的 If 语句统计满足性别为男、职称为副教授以上、年龄小于 40 岁条件的人数, 不正确的语句是______。

A.If sex="男" And age<40 And InStr(duty, "教授")>0 Then n=n+1

B.If sex="男" And age<40 And (duty="教授"Or duty="副教授") Then n=n+1 C.If sex="男" And age<40 And Right(duty,2)= "教授" Then n=n+1

D.If sex="男" And age<40 And duty="教授" And duty="副教授" Then n=n+1 7.下面程序段: Dim x x=Int(Rnd())+5 Select Case x Case 5 Print "优秀" Case 4 Print "良好" Case 3 Print "通过" Case Else Print "不通过" End Select 显示的结果是______。 A.优秀 B.良好 C.通过 D.不通过 8.下面程序段求两个数中的大数,不正确的是______。

(34)

C.Max=x D.If y>=x Then Max=y If y>x Then Max=y Max=x

9.以下正确的 For…Next 结构是______。

A.For x=1 To Step 10 B.For x=3 To -3 Step -3 … …

Next x Next x

C.For x=1 To 10 D.For x=3 To 10 Step 3 re: … …

Next x Next y If i=10 Then GoTo re

10.下列循环能正常结束的是______。

A.i=5 B.i=1 Do Do i=i+1 i=i+2 Loop Until i<0 Loop Until i=10

C.i=10 D.i=6

Do Do i=i+1 i=i-2 Loop Until I>0 Loop Until I=1 11.下面程序段:

Dim x

If x Then Print x Else Print x+1

运行后,显示的结果是______。

A.1 B.0 C.–1 D.显示出错信息 12.在窗体上添加一个名称为 Command1 的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() Dim a As Integer,s As Integer a=8

s=1 Do s=s+a a=a-1

Loop While a<=0 Print s;a End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是______。 A.7 9 B.34 0 C.9 7 D.死循环 13.执行以下程序段时,______。 x=1 Do While x<>0 x=x*x print x;

(35)

Loop A.循环体将执行 1 次 B.循环体将执行 0 次 C.循环体将执行无限次 D.系统将提示语法错误 14.执行以下程序段时: For x=0 to 100 step 2 print x next x 程序循环了________次。 A.49 B.50 C.51 D.52 15.在窗体上添加一个名称为 Command1 的命令按钮,一个名称为 Label1 的标签,然后 编写如下事件过程:

Private Sub Commandl_Click() s=0 For i=1 To 15 x=2*i– 1 If x Mod 3=0 Then s=s+1 Next i Label1.Caption=s End Sub 程序运行后,单击命令按钮,则标签中显示的内容是______。 A.1 B.5 C.27 D.45 16.在窗体上添加一个名称为 Command1 的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() For n = 1 To 20 If n Mod 3 <> 0 Then m = m + n \ 3 Next n Print n End Sub 程序运行后,如果单击命令按钮,则窗体上显示的内容是______。 A.15 B.18 C.21 D.24 17.有如下程序:

For i=1 to 146 step 3 Print "a"; Next i 程序运行后会打印______。 A.146 个 a B.49 个 a C.73 个 a D.46 个 a 18.在窗体上添加一个名称为 Text1 的文本框和一个名称为 Command1 的命令按钮,然后 编写如下事件过程:

Private Sub Command1_Click() Dim i As Integer,n As Integer For i=0 To 50

i=i+3 n=n+1

(36)

Next i Text1.Text=Str(n) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是______。 A.2 B.3 C.4 D.5 19.在窗体上画一个命令按钮,名称为 Command1。然后编写如下程序:

Private Sub Command1_Click() For i=1 To 4 For j=0 To 1 Print Chr$(65+i); Next j Print Next i End Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是______。 A.BB B.A C.B D.AA CC BB CC BBB DD CCC DDD CCCC EE DDDD EEEE DDDDD 20.有语句 If x=1 Then y=1,下列说法正确的是______。 A.x=1 和 y=1 均为赋值语句 B.x=1 和 y=1 均为关系表达式 C.x=1 为关系表达式,y=1 为赋值语句 D.x=1 为赋值语句,y=1 为关系表达式 21.关于 Exit for 语句正确的使用说明是______。 A.Exit For 语句可以退出任何类型的循环 B.一个循环中只能有一个这样的语句 C.Exit For 表示返回 For 语句去执行 D.一个 For 循环中可以有多条 Exit For 语句

22.For…Next 循环结构中,循环控制变量的步长为 0,则______ A.形成无限循环 B.循环只执行一次 C.语法错误 D.循环体不执行即结束循环 二、填空题 1.多分支选择结构中的<测试表达式>与 Case 语句后的<变量值列表>,VB 规定两者必须 ________。 2.For…Next 循环是一种确定________的循环。 3.计算 For…Next 循环次数的公式是________。 4.“Do…Loop Until <条件>”循环结构,执行时判断<条件>为________时执行循环体。 5.首先执行循环体,然后再进行条件判断,决定是否结束循环的循环语句是________。 6.决定 For…Next 循环次数的因素是循环变量的________、_______和步长。

(37)

7.For…Next 循环的步长为____时可以省略。 8.有以下程序段: s=0 For i=1 to 3 If i>=1 then P=1

Elseif i>=2 then P=2 Elseif i>=3 then

P=3 Else P=4 End if Print p s=s+p next i print s 程序执行后,窗体上显示的结果是________。 9.执行下面的程序段后,i 的值为________,s 的值为________。 s = 2

For i = 10To 1 Step -4 s = s + 1

數據

表 2-4      MsgBox 函数的返回值  返回值  常量  说明  1  VbOk  选“确定”按钮  2  VbCancel  选“取消”按钮  3  VbAbort  选“终止”按钮  4  VbRetry  选“重试”按钮  5  VbIgnore  选“忽略”按钮  6  VbYes  选“是”按钮  7  VbNo  选“否”按钮  如:

參考文獻

相關文件

求出 Select Case 運算式之值,並逐一與 Case 運算式值串列比對,若符合則執行該 Case 之後的敘述區段。1. 如果所有的

註 若在 小貓咪 的程式中建立 蘋果 的分身,此時 小貓咪 的程式無 法控制 蘋果 分身的行為,只能在 蘋果

2014 年底,首经贸颁布了一份《关于教师职务晋升的补充规定》 。其中教授 职务晋升的条件当中赫然写着:“出色完成教学工作”“教学效果优秀” “任现职

疊對(overlay)的方式是指兩層的定位與相互考量的 x 和 y 方向,如果所有的疊對 層在晶圓上沒有偏移,亦即代表 overlay value=0 ,通常 overlay =0 是目標值。而 overlay

通过 YCT(三级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 YCT(三级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..

通过 HSK(二级)的考生可以用汉语就熟悉的日常话题进行简单而直接的 交流,达到初级汉语优等水平。..