vb期末考试复习资料(经典总结版)

更新时间:2024-01-18 01:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 VISUAL BASIC的特点与版本

例1 与传统的程序设计语言相比,Visual Basic最突出的特点是 A.结构化程序设计 B.程序开发环境

C.程序调试技术 D.事件驱动编程机制

【分析】 传统的程序设计语言是面向过程的,但一般都可以实现结构化程序设计,有的也提供了较完善的集成开发环境和程序调试技术,但它们基本上都没有事件驱动编程机制。与这些语言相比,Visual Basic最突出的特点就是事件驱动编程机制。 【答案】 D

例2下列成员中不属于主窗口的是

A.最大化按钮 B.状态栏 C.系统菜单 D.工具栏

【分析】 主窗口由标题栏、菜单栏和工具栏构成,其中标题栏上有系统菜单(左端)以及最小化、最大化和关闭按钮。因此,最大化按钮、系统菜单和工具栏都是主窗口中的成员,而主窗口中没有状态栏。

【答案】 B

例3在属性窗口中,属性列表可以按两种顺序排列,这两种顺序是______和______。

【分析】 为了便于查找,属性窗口对当前对象的属性提供了两种排列方式,一种是按字母表顺序,另一种是按属性的分类顺序。 【答案】 按字母序 或按分类序 按分类序 或按字母序

例4 Visual Basic 6.0的集成开发环境有两种方式,第一种方式是______,第二种方式是______。 【分析】 在默认情况下,Visual Basic 6.0集成开发环境为多文档界面方式,即MDI方式,在这种方式下,窗体设计器窗口是固定的。使用“工具”菜单中的“选项”命令,可以把集成开发环境设置为单文档界面方式,即SDI方式,在这种方式下,窗体设计器窗口是浮动的。 【答案】 多文档界面 或 MDI 单文档界面 或 SDI

第二章 对象及其操作

例1为了通过属性窗口把窗体的ControlBox属性设置为True(或False),下列正确的操作是 A.直接键入True(或False) B.利用对话框设置属性值

C.选择ControlBox,然后按回车键 D.双击ControlBox属性条

【分析】 ControlBox属性是一个逻辑值,其取值只有两种,即True和False,一般可以通过选择输入,即单击属性条右端的箭头,下拉显示属性值True和False,从中选择所需要的值。在上面给出的答案中,前三个答案都不能实现所要求的操作,只有答案D才能实现。实际上,对于只有两种可能取值(True或False、0或1)的属性,都可以通过双击属性条设置。 【答案】 D

例2下列语句用来设置窗体Form1的属性,其中在运行时不能正确操作的语句是 A. Form1.Captin = \ B. Form1.Name = \ C. Form1.MaxButton = False D. Form1.MinButton = False

【分析】 这4个语句用来在运行时设置窗体的属性。其中Form1.Captin=\Test\用来设置窗体的标题,Form1.Name=\用来设置窗体的名称,Form1.MaxButton=False用来隐藏窗体的最大化按钮,Form1.MinButton=False用来隐藏窗体的最小化按钮。从语法格式上来看,似乎没有什么问题,在输入时也不会产生错误。但是,窗体的Name属性是一个“只读”属性,在运行时不能改变,因此,程序运行后,当执行到Form1.Name=\语句时将会出错。 【答案】 B

例3下列不能打开属性窗口的操作是

A.执行“视图”菜单中的“属性窗口”命令 B.按F4键 C.按Ctrl+T键

D.单击工具栏上的“属性窗口”按钮

1

【分析】 在上面选择中,Ctrl+T键用来执行“工程”菜单中的“部件”命令,打开的是“部件”窗口,不是属性窗口,其他3个选项都可以打开属性窗口。 【答案】 C

例4 为了对多个控件执行操作,必须选择这些控件。下列不能选择多个控件的操作是 A.按住Alt键,不要松开,然后单击每个要选择的控件 B.按住Shift键,不要松开,然后单击每个要选择的控件 C.按住Ctrl键,不要松开,然后单击每个要选择的控件

D.拖动鼠标画出一个虚线矩形,使所选择的控件位于这个矩形内

【分析】 教程中介绍了选择控件的两种方法,即按住Shift键单击每个要选择的控件和拖动鼠标画虚线矩形。除这两种方法外,按住Ctrl键单击每个要选择的控件也可实现选择控件的操作,但按住Alt键单击每个要选择的控件不能达到目的。 【答案】 A

例5 为了在运行时把窗体Form1的标题(Caption属性)设置为“Test Program”,应使用的语句为______。

【分析】 窗体的Caption属性用来设置窗体的标题,一般格式为: [窗体.]Caption[=字符串]其中的“窗体.”可以是Form1.,可以省略,也可以是关键字Me:而“字符串”就是要设置的窗体的标题。因此,本题有几种不同的答案。 【答案】

Form1.Caption = \或 Me.Caption = \或 Caption = \

例6 当选择了多个控件后,其中有一个控件是“基准控件”,设置“基准控件”的方法是

【分析】 在一般情况下,如果选择了窗体上的多个控件,则其中有一个控件自动成为“基准控件”。选择方法不同,“自动基准控件”也不一样。如果按住Ctrl或Shift键选择多个控件,则最后单击的控件为“基准控件”;如果用拖动鼠标的方法选择控件,则最后画到窗体上的控件是“基准控件”。如果想用其他某个控件作为“基准控件”,可以在选择多个控件后,单击该控件。 【答案】 选择多个控件后,单击其中的某个控件,即可把该控件设置为“基准控件”。

第三章 VB程序设计基础

例1 在设计阶段,当双击窗体上的某个控件时,所打开的窗口是 A.工程资源管理器窗口 B.工具箱窗口 C.代码窗口 D.属性窗口

【分析】 Visual Basic集成开发环境下的窗口(包括代码窗口)基本上都可以通过执行“视图”菜单中相应的菜单命令打开。在设计阶段,如果单击窗体上的某个控件,则只能打开代码窗口。 【答案】 C

例2 下列打开“代码窗口”的操作中不正确的是 A.按F4键

B.单击“工程资源管理器”窗口中“查看代码”按钮 C.双击已建立好的控件

D.执行“视图”菜单中“代码窗口”命令

【分析】 在所给出的选择中,按F4键可以打开属性窗口,不可能用来打开代码窗口,而其他3个选项都可以用来打开代码窗口。 【答案】 A

例3 下列正确的Visual Basic注释语句是 A.Dim a(10)As Integer Rem这是一个VB程序 B.′这是一个VB程序

Private Sub Command1_Click() …

C.a=1:b=2:Rem这是一个VB程序:c=3 D. If Shift = 6 And Button = 2 Then

Print \这是一个VB程序 End If

【分析】 在使用注释语句时,有以下“禁忌”:当注释出现在一个语句行的后面时,只能用撇号作

2

为注释符,不能使用Rem;在复合语句行中,注释必须是最后一个语句,不能放在复合语句行中;注释语句不能放在续行符的后面。在所给出的选择中,A、C、D都是不正确的。 【答案】 B

例4 为了建立窗体的Click事件过程,即Form_Click,应先在代码窗口的______栏中选择Form,然后在______栏中选择Click。

【分析】 代码窗口的顶部(标题栏的下面)分为左右两栏,左边一栏是“对象”栏,右边一栏是“过程”栏。在“对象”栏的下拉列表中可以选择窗体或控件的名称,在“过程”栏中可以选择事件的名称。因此,为了建立事件过程Form_Click,应在“对象”栏中选择Form,然后在“过程”栏中选择Click。

【答案】 第一个空:“对象” 或 对象 第二个空:“过程” 或 过程

例5 假定窗体的名称为Form1,对该窗体编写如下代码: Private Sub Form_Load()

Form1.Caption = \ Me.Caption= \ Caption = \End Sub

程序运行后,窗体的标题是______。

【分析】 Form Load是程序运行后首先要执行的事件过程。在上面的事件过程中,有3个赋值语句,这3个语句都用来对对象赋值,即对对象的Caption属性赋值,它们都可以设置窗体的标题。第一个语句把窗体的标题设置为“AAAAA”,执行第二个语句后,窗体的标题变为“BBBBB”,而执行第三个语句后,窗体的标题变为“CCCCC”。 【答案】 CCCCC

例6 编写程序,用来设置窗体的位置和大小。要求:程序运行后,窗体的初始位置为(3000,3000),其初始宽度和高度均为5 000;单击一次窗体后,窗体位置的X坐标和Y坐标各减少一半,其宽度和高度均减少到原来的一半。

【分析】 窗体的位置由Top属性和Left属性来设置,宽度和高度分别由Width属性和Height属性来设置。窗体的初始属性可以通过属性窗口设置,也可以在Form_Load事件过程中设置;而单击窗体后的属性可以在Form_Click事件过程中设置。 程序如下:

Private Sub Form_Load() Top = 3000 Left = 3000 Width = 5000 Height = 5000 End Sub

Private Sub Form_Click()

Form1.Top = Form1.Top / 2 Form1.Left = Form1.Left / 2 Form1.Width = Form1.Width / 2 Form1.Height = Form1.Height / 2 End Sub

窗体的初始位置和大小在Form_Load事件过程中设置,程序运行后,显示窗体的初始位置和大小。单击一次窗体后,其位置的X坐标、Y坐标及窗体的宽度、高度均减少到原来的一半。此后如果再单击一次窗体,则仍减少一半。如果把Form_Click事件过程改为: Private Sub, Form_Click() Form1.Top = 1500 Form1.Left = 1500 Form1.Width = 2500 Form1.Height = 2500 End Sub

则程序运行后,无论单击多少次窗体,窗体的位置和大小都是原来的一半。 该程序用到了窗体的4个属性,即Top、Left、Width和Height。在设置这几个属性时,窗体名称(Form1)

3

可以有,也可以没有,也可以换成关键字Me。 例7 在Visual Basic中,下列优先级最高的运算符是 A.* B.\ C.< D.Not

【分析】 Visual Basic提供了3类运算符,即算术运算符、关系运算符和逻辑运算符。在3类运算符中,算术运算的优先级最高,其次是关系运算,最后是逻辑运算。在该例中,C和D分别为关系运算符和逻辑运算符,A和B是算术运算符,A和B的优先级比C和D高。而对于A和B来说,乘法(*)的优先级比整除(\)的优先级高。因此,优先级最高的应当是乘法运算符(*)。 【答案】 A

例8 以下关系表达式中,其值为False的是 A. \< \

B. \C. \<> \D. \>\

【分析】 该例通过关系表达式对字符串进行比较。在Visual Basic中,字符串数据按其ASCII码值进行比较。在比较两个字符串时,首先比较两个字符串的第一个字符,其中ASCII码值较大的字符所在的字符串大。如果第一个字符相同,则比较第二个??依次类推。在该例的4个选择中,A、C、D的值均为True;B中的两个字符串基本相同,但第一个字符串的第一个字母是大写字母,而第二个字符串的第一个字母是小写字母,第一个字符串小于第二个字符串,即两个字符串不相等,因此\的值为假,即False。 【答案】 B

例9 下列正确的Visual Basic注释语句是

A.Dim a(10)As Integer Rem这是一个VB程序 B.′这是一个VB程序

Private Sub Command1_Click() …

C.a=1:b=2:Rem这是一个VB程序:c=3 D. If Shift = 6 And Button = 2 Then

Print \这是一个VB程序 End If

【分析】 在使用注释语句时,有以下“禁忌”:当注释出现在一个语句行的后面时,只能用撇号作为注释符,不能使用Rem;在复合语句行中,注释必须是最后一个语句,不能放在复合语句行中;注释语句不能放在续行符的后面。在所给出的选择中,A、C、D都是不正确的。 【答案】 B

例10 为了建立窗体的Click事件过程,即Form_Click,应先在代码窗口的______栏中选择Form,然后在______栏中选择Click。

【分析】 代码窗口的顶部(标题栏的下面)分为左右两栏,左边一栏是“对象”栏,右边一栏是“过程”栏。在“对象”栏的下拉列表中可以选择窗体或控件的名称,在“过程”栏中可以选择事件的名称。因此,为了建立事件过程Form_Click,应在“对象”栏中选择Form,然后在“过程”栏中选择Click。

【答案】 第一个空:“对象” 或 对象 第二个空:“过程” 或 过程

例11 假定窗体的名称为Form1,对该窗体编写如下代码: Private Sub Form_Load()

Form1.Caption = \ Me.Caption= \ Caption = \End Sub

程序运行后,窗体的标题是______。

【分析】 Form Load是程序运行后首先要执行的事件过程。在上面的事件过程中,有3个赋值语句,这3个语句都用来对对象赋值,即对对象的Caption属性赋值,它们都可以设置窗体的标题。第一个语句把窗体的标题设置为“AAAAA”,执行第二个语句后,窗体的标题变为“BBBBB”,而执行第三个语句后,窗体的标题变为“CCCCC”。 【答案】 CCCCC

4

例12 编写程序,用来设置窗体的位置和大小。要求:程序运行后,窗体的初始位置为(3000,3000),其初始宽度和高度均为5 000;单击一次窗体后,窗体位置的X坐标和Y坐标各减少一半,其宽度和高度均减少到原来的一半。

【分析】 窗体的位置由Top属性和Left属性来设置,宽度和高度分别由Width属性和Height属性来设置。窗体的初始属性可以通过属性窗口设置,也可以在Form_Load事件过程中设置;而单击窗体后的属性可以在Form_Click事件过程中设置。 程序如下:

Private Sub Form_Load() Top = 3000 Left = 3000 Width = 5000 Height = 5000 End Sub

Private Sub Form_Click()

Form1.Top = Form1.Top / 2 Form1.Left = Form1.Left / 2 Form1.Width = Form1.Width / 2 Form1.Height = Form1.Height / 2 End Sub

窗体的初始位置和大小在Form_Load事件过程中设置,程序运行后,显示窗体的初始位置和大小。单击一次窗体后,其位置的X坐标、Y坐标及窗体的宽度、高度均减少到原来的一半。此后如果再单击一次窗体,则仍减少一半。如果把Form_Click事件过程改为: Private Sub, Form_Click() Form1.Top = 1500 Form1.Left = 1500 Form1.Width = 2500 Form1.Height = 2500 End Sub

则程序运行后,无论单击多少次窗体,窗体的位置和大小都是原来的一半。 该程序用到了窗体的4个属性,即Top、Left、Width和Height。在设置这几个属性时,窗体名称(Form1)可以有,也可以没有,也可以换成关键字Me。

第四章 数据的输入与输出例题分析

例1 在窗体上画一个命令按钮(名称为Command1),然后编写如下事件过程: Private Sub Command1_Click() a=4 b=5 c=6

Print a = b + c End Sub

程序运行后,单击命令按钮,其结果为

A.a=11 B.a=b+c C.False D.出错

【分析】Print方法具有计算和输出两种功能。当Print的输出项是表达式时,将先计算表达式,然后输出表达式的值。所计算和输出的表达式可以是算术表达式,也可以关系表达式或逻辑表达式。该例中的a=b+c是一个关系表达式,其中a的值为4,b+c的值是11,Print a=b+c实际上执行的是 Print 4=11, 显然是一个“假”值。 【答案】 C

注意,有人可能会认为本例的答案应当为D,这是不对的。 例2 下列不正确的语句是 A. Print a = 10 + 20 B. Print \C. Print \

D. Print a =; 10 + 20

【分析】Print方法的输出项是一个表达式,包括算术表达式(字符串表达式)、关系表达式和逻辑表

5

达式。在所给出的选择中,A是用Print方法输出一个关系表达式的值,比较两个算术表达式的值是否相等;B是用Print输出一个字符串和一个算术表达式的值,其中字符串照原样输出,然后计算并输出算术表达式的值;C是用Print方法输出一个关系表达式的值,比较两个字符串是否相等,这几个语句都是正确的,可以输出正确的结果,而D会产生语法错误。 【答案】 D

例3 在窗体上画一个命令按钮,然后编写如下代码: Private Sub Command1_Click()

a&=InputBox(\请输入第一个数\ b&=InputBox(\请输入第二个数\ Print b&+ a& End Sub

程序运行后,单击命令按钮,在两个输入对话框中先后输入12345和54321,程序的输出结果是 A.66666 B.54321 12345 C.1234554321 D.出错

【分析】 InputBox函数的返回值是一个字符串,但由于a&和b&通过类型说明符被显式地定义为长整型变量,因而在执行InputBox函数后,所返回的字符串值被转换为长整型值,它实际上相当于执行一次类型转换,即:

a&=CLng(InputBox(\请输入第一个数\b&=CLng(InputBox(\请输入第二个数\

这样,当执行Print方法时,将计算并输出算术表达式b&+a&的值。 【答案】 A

例4假定程序中有如下语句:

answer=MsgBox(\第一个字符串\,vbAbortRetryIgnore_ Or vbCritical_

Or vbDefaultButton3,_ \第二个字符串\

执行该语句后,将显示一个信息框,此时如果按回车键,则answer的值为 A.\第二个字符串” B.5 C.3 D.7

【分析】 MsgBox函数的返回值是一个整数,这个整数与所选择的按钮有关。本例的第二个参数由三部分组成,其中 vbAbortRetryIgnore 用来在信息框中显示3个按钮,分别为“终止”、“重试”和“忽略”;vbCritical用来在信息框中显示Critical Message图标;而vbDefaultButton3把信息框的第三个按钮(即“忽略”)指定为默认按钮。执行该语句后,在信息框中显示3个按钮,并把第三个按钮作为默认按钮,此时如果按回车键,则返回值是该按钮所对应的值。由于“忽略”按钮对应的值是5,因此变量answer的值为5。 【答案】 B

例5 执行下列语句后,显示输入对话框,此时如果单击“确定”按钮,则变量strinput的内容是______。 strinput=InputBox(“请输入字符串”,“字符串对话框”,“字符串”)

【分析】 在执行InputBox函数时,会产生一个输入对话框,该函数有7个参数,前三个参数都是字符串。其中第一个参数用来在输入对话框内显示一个提示用户输入的字符串,第二个参数是对话框的标题,第三个参数是输入的默认信息。也就是说,在执行InputBox函数后,如果用户没有输入任何信息,则可用此默认字符串作为输入值。如果不想用这个默认字符串作为输入值,则可在输入区直接键入数据,以取代默认值。在该例中,显示对话框后直接单击“确定”按钮,因此第三个参数就是默认的输入值。 【答案】 字符串 例6 阅读程序:

Private Sub Form_Click() msg1$=\继续吗?\ msg2$=\操作对话框\

r=MsgBox(msg1$,vbYesNo OrvbDefaultButton2,msg2$) End Sub

程序运行后,单击窗体,将产生一个信息框。此时如果直接按回车键,则相当于用鼠标单击信息框

6

中的______ 按钮。

【分析】 本例用MsgBox函数产生信息框,该函数的第一个参数在信息框内显示,第二个参数分为两部分,其中前一部分(即vbYesNo)用来在信息框中产生两个按钮,分别为“是”和“否”,后一部分(即vbDefaultButton2)把第二个按钮(即“否”)设置为默认按钮;第三个参数是信息框的标题。程序运行后,单击窗体,所产生的信息框的标题为“操作对话框”,在信息框内显示的内容是“继续吗?”,两个按钮分别是“是”和“否”,其中“否”是默认按钮。此时如果按回车键,则与单击“否”按钮效果相同。

【答案】 “否” 或第二个 例7 设有如下程序: Private Sub Form_Click() a = 32548.56

Print Format(Int((a * 10 + 0.5))/10,\End Sub

程序运行后,单击窗体,输出结果是______。

【分析】 本例用Format函数对数值进行格式化输出,要输出的数值存放在变量a中。Format函数的第一个参数对变量a进行了舍入处理,保留一位小数,第二位小数四舍五入,其值为32548.6。Format函数的第二个参数是格式说明符,使用的说明符有“0”和“,”,保留两位小数,该函数的返回值为032,548.60。

【答案】032,548.60

例8 编写程序,计算圆的面积。 【分析】 圆面积的计算公式为: S=πr2

其中r是要计算面积的圆的半径,程序运行后从键盘上输入。 程序如下:

Private Sub Form_Click() Const PI = 3.14159

Dim r As Single, S As Single

r=InputBox(\请输入圆的半径\,\输入数据\,\ S=PI*r*r

Print\,\End Sub

程序运行后,单击窗体,将显示一个输入对话框,在该对话框中输入圆的半径(默认为50),然后单击确定按钮或按回车键,即可在窗体上输出圆的面积。假定在对话框中输入35,则单击“确定”按钮后,输出结果为:S=3,848.45。

例9 从键盘上输入小时、分和秒,把它转换为秒数并输出。

【分析】 1小时等于60分,1分钟等于60秒。把小时数乘以60*60,把分钟数乘以60,再加上秒数,就等于总秒数。设小时数为H,分钟数为M,秒数为S,则H小时、M分、S秒的总秒数SS为:

SS=H*60*60+M*60+S 程序如下:

Private Sub Form_Click()

H=InputBox(\请输入小时\,\小时\ H=Val(H)

M=InputBox(\请输入分\,\分\ M=Val(M)

S=InputBox(\请输入秒\,\秒\ S=Val(S)

SS=S+M*60+H*60*60

PrintH;\小时\分\秒=\秒\End Sub

程序运行后,单击窗体,将先后显示3个输入对话框,要求输入小时、分和秒。假定分别输入5、45和25,则输出结果为: 5小时45分25秒=20725秒

7

第五章 常用标准控件例题

例1 在窗体上画两个文本框(其名称分别为Text1和Text2)和一个命令按钮(其名称为Command1),然后编写如下两个事件过程: Private Sub Command1_Click()

Text1.Text = \End Sub

Private Sub Text1_Change()

Text2.Text = UCase(Text 1.Text) End Sub

程序运行后,单击命令按钮,则在Text2文本框中显示的内容是 A. Computer Rank Examination B. computer rank examination

C. COMPUTER RANK EXAMINATION D.空字符串 【分析】 该例有两个事件过程,一个是命令按钮的Click事件过程,一个是文本框的Text1的Change事件过程,当单击命令按钮时,执行前一个事件过程,而当在文本框Text1中输入信息时,将执行该文本框的Change事件过程。在命令按钮事件过程中,为文本框Text1的Text属性赋值,即在该文本框中显示字符串“Computer Rank Examination”,在这种情况下,将触发Text1文本框的Change事件,把文本框Text1中的所有字母转换为大写字母,并在文本框Text2中显示出来。程序运行后,如果单击命令按钮,则将先后触发命令按钮的Click事件和文本框Text1的Change事件,分别在两个文本框中显示由两个事件过程所指定的内容。 【答案】 C

例2 在窗体上画一个名称为List1的列表框,一个名称为Labell的标签。列表框中显示若干城市的名称。当单击列表框中的某个城市名时,在标签中显示选中城市的名称。下列能正确实现上述功能的程序是

A.Private Sub List1_ Click()

Label1 .Caption = List1.ListIndex End Sub

B.Private Sub List1_ Click()

Label1.Name = List1. ListIndex End Sub

C.Private Sub List1_Click() Label 1.Name = List1.Text End Sub

D.Private Sub List1_Click()

Labe1 1.Caption = List1.Text End Sub

【分析】 所给出的4个选择都是列表框的Click事件过程。当单击列表框中的某一项时,将发生单击事件,同时选择一个列表项,这个列表项可以用列表框的Text属性来表示。也就是说,List1.Text就是所选择的项目。此外,为了在标签中显示所选择的列表项,必须使用列表框的标题属性,即Label1.Caption。因此,正确的语句应当是: Label1.Caption=List1.Text

在Visual Basic中,不能在运行期间改变控件或窗体的名称(Name属性),因此B和C两个选择都是错误的;而列表框的ListIndex属性是所选择的列表项的位置,即列表项的标题,不是列表项本身。

【答案】 D

例3 在窗体上画一个文本框、一个标签和一个命令按钮,其名称分别为Text1、Label1和Command1,然后编写如下两个事件过程: Private Sub Command1_Click()

a=InputBox(\请输入一个字符串\ Text1.Text = a End Sub

8

Private Sub Text1_Change()

Label1.Caption = UCase(Mid(Text1.Text, 8)) End Sub

程序运行后,单击命令按钮,将显示一个输入对话框,如果在该对话框中输入字符串“VisualBasic”,则在标签中显示的内容是

A.visual basic B.VISUAL BASIC C.basic D.BASIC

分析】 该例包括两个事件过程,其中命令按钮事件过程通过输入对话框来输入一个字符串,并把这个字符串赋给文本框。而当改变文本框的内容时,将触发文本框的Change事件。因此,在把输入的字符串赋给文本框时,将执行文本框的Change事件过程,对标签的Caption属性赋值,该值是:首先取出文本框中第八个字符之后的全部字符,然后把它们转换为大写字母。由于文本框中的字符串为“Visual Basic”,第八个字符为“B”,它之后的字符为“Basic”,执行Ucase函数后,转换为大写,即“BASIC”。 【答案】 D

例4 在窗体上画两个文本框(名称分别为Text1和Text2)和一个命令按钮(名称为Command1),然后编写如下事件过程:

Private Sub Command1 Click()

Text1.Text=InputBox(\请输入身高\ Text2.Text=InputBox(\请输入体重\End Sub

程序运行后,如果单击命令按钮,将先后显示两个输入对话框,在两个输入对话框中分别输入1.78和75,则两个文本框中显示的内容分别为______和______。

【分析】 在一般情况下,通过InputBox函数输入的数据被赋给一个变量。在本例中,没有使用变量,而是直接把输入对话框中的值赋给文本框的Text属性。因此,第一个文本框接收的是身高,第二个文本框接收的是体重。 【答案】 1.78 75

例5 为了在运行时把“d:\pic”文件夹下的图形文件a.jpg装入图片框Picture1,所使用的语句为______。

分析】 在运行期间,可以用LoadPicture函数把指定的图形文件装入窗体、图片框或图像框,它实际上是把图形文件赋给对象的Picture属性。一般格式为:

[对象.]Picture=LoadPicture(“文件名”)其中的“文件名”可以是多种格式的图形文件,包括.bmp、.ico、.wmf、.emf、.jpg、.gif等,提供的“文件名”可以含有路径。对于本例来说,“文件名”(包括路径)是:d:\pic\a.jpg,“对象”是Picture1。 【答案】Picture 1.Picture=LoadPicture(\\pic\a.jpg\

例6 在窗体上画一个列表框、一个命令按钮和一个标签。程序运行后,在列表框中选择一个项目,然后单击命令按钮,即可将所选择的项目删除,并在标签中显示列表框当前的项目数,运行情况如图6-1所示。下面是实现上述功能的程序,请填空。 Private Sub Form_Load()

List1.AddItem \ List1.AddItem \ List1.AddItem \ List1 .AddItem \End Sub

Private Sub Command1_Click() Dim L As Integer L=______

If ind >= 0 Then

List1.RemoveItem______ Label1.Caption = ______ Else

MsgBox\请选择要删除的项目\ End If End Sub

9

【分析】 本例提供的程序包括两个事件过程,其中Form Load事件过程用来向列表框中添加项目,而Command1 Click事件过程删除列表框中被选择的项目,并在标签中显示列表框当前的项目数,需要填空的代码在这个事件过程中。

为了删除列表框中指定的项目,可以使用RemoveItem方法,其格式为:

列表框.RemoveItem索引值其中的“索引值”是项目的地址,列表框中的项目从0开始计数,被选择的项目的索引值就是列表框的ListIndex属性。为了删除列表框中被选择的项目,必须先确定该项目的索引值,即列表框的ListIndex属性,然后就可以用RemoveItem方法将其删除。本题中的第一个空是被选择的项目的索引值,应为List1.ListIndex,并把它赋给变量L。第二个空是RemoveItem方法的参数,即“索引值”,由于该值已保存在变量L中,因此应填入L。第三个空是列表框中当前的项目数,它就是列表框的ListCount属性。 【答案】List1.ListIndex L

List 1.ListCount

例7 在窗体上画一个图片框、一个垂直滚动条和一个命令按钮(标题为“设置属性”),通过属性窗口在图片框中装入一个图形,图片框的宽度与图形的宽度相同,图片框的高度任意。编写适当的事件过程。程序运行后,如果单击命令按钮,则设置垂直滚动条的属性如下: Min 100 Max 2400 LargeChange 200 SmallChange 20

之后就可以通过移动滚动条上的滚动框来放大或缩小图片框。

【分析】 本例要求程序实现两个方面的功能,其一是当单击命令按钮时设置滚动条的几个属性;其二是当移动滚动条的滚动框时扩大或缩小图片框的高度。第一个功能可以通过下面的事件过程来实现:

Private Sub Command1_Click() VScroll1.Min = 100 VScroll1.Max = 2400

VScroll1.LargeChange = 200 VScroll1.SmallChange = 20 End Sub

第二个功能可以用下面的事件过程来实现: Private Sub VScroll1_Change()

Picture 1 .Height = VScroll 1.Value End Sub

例8 在窗体上画两个命令按钮和一个标签,把两个命令按钮的标题分别设置为“缩小”和“扩大”;把标签的AutoSize属性设置为True,标题设置为“计算机等级考试”。程序运行后,如果单击第一个命令按钮,则可使标签中标题的字体大小缩小1.2倍;如果单击第二个命令按钮,则可使标签中标题的字体大小扩大1.2倍。

【分析】 命令按钮和标签的标题以及标签的AutoSize属性可以通过属性窗口设置,也可以在运行期间设置。程序运行后,首先执行Form_Load事件过程,可以把设置标题和AutoSize属性的代码放在该事件过程中。根据题意,当单击两个命令按钮时,分别使得标签中的字体缩小或扩大1.2倍,而字体的大小可以通过标签的FontSize属性来设置。因此,如果想使标签中的字体缩小1.2倍,则可执行下面的语句:

Label 1.FontSize=Label 1.FontSize/1.2

而如果想使标签中的字体扩大1.2倍,则应执行的语句为: Label1.FontSize = Label1.FontSize * 1.2程序如下: Private Sub Form Load()

Label1.Caption=\计算机等级考试\ Command1.Caption=\缩小\ Command2.Caption=\扩大\ Label1.AutoSize=True End Sub

Private Sub Command1_Click()

10

Label1.FontSize = Label1.FontSize / 1.2 End Sub

Private Sub Command2_Click()

Label1.FontSize = Label1.FontSize * 1.2 End Sub

第六章 VB控制结构例题

例1 已知一个人出生的年、月、日分别存放在变量y0、m0、d0中,当前日期的年、月、日分别存放在变量y1、m1、d1中,这个人的实足年龄存放在变量age中。则以下可以正确计算实足年龄的程序段是

A. B.

age = y1-y0 age = y1-y0

If m1 < m0 Then If m1 < m0 Or d1<d0 Then age = age -1 age = age -1 ElseIf d1 < d0 Then End If age = age-1 End If

C. D.

age = y1-y0 age = y1-y0

If m1 < m0 Then If m1 < m0 Then age = age -1 age = age -1 End If End If

If m1 = m0 And d1< d0 Then If d1 < d0 Then age = age - 1 age = age - 1 End If End If

【分析】 所谓实足年龄,指的是实际到达的年龄,即当前的年、月、日都分别大于或等于出生的年、月、日。例如一个人的出生日期是1964年8月23日,当前日期为2002年8月23日,则这个人的实足年龄就是38岁;如果当前日期为2002年7月或2002年8月22日,则这个人的实足年龄就是37岁。

这就是说,为了计算一个人的实足年龄,需要进行以下操作: (1)计算出y1-y0,并把结果赋给age。 (2)如果m1<m0,则实足年龄为age-1。

(3)否则,如果m1=m0但d1<d0,则实足年龄为age-1。 (4)否则,如果m1=m0且d1>=d0,则实足年龄为age。

可以看出,为了计算实足年龄,可以先计算age=y1-y0,如果m1<m0,则不再考虑d1是否大于d0,实足年龄=age-1;如果m1=m0,则还要看d1是否大于等于d0,如果小于,则实足年龄=age-1,否则实足年龄=age。

根据上面的分析,答案A显然是不正确的,因为在测试m1<m0后,就没有必要再测试d1是否大于d0。答案B和D类似,只单独测试月或日,不能得到正确结果,只有答案C正确地描述了上面所分析的情况。 【答案】 C

例2 在窗体上画一个命令按钮和一个文本框,然后编写如下程序: Private Sub Command1_Click() a= 10

t=\旅游景点:\

&IIf(a>3,\长城\,\ &IIf(a<8,\故宫\,\ &IIf(a<>7,\颐和园\,\ Text1.Text = t End Sub

程序运行后,单击命令按钮,则在文本框中显示的内容是 A.旅游景点:长城故宫 B.旅游景点:长城颐和园 C.旅游景点:颐和园 D.旅游景点:故宫

11

【分析】 IIf函数有三个参数,其中第一个参数是一个Boolean值,如果该参数的值为True,则函数的返回值为第二个参数;如果第一个参数的返回值为False,则函数的返回值为第三个参数。该例中变量a的值为10,在第一个IIf函数中,第一个参数为True,其返回值为第二个参数,即“长城”;在第二个IIf函数中,第一个参数为False,其返回值为第三个参数,即空字符串;而在第三个IIf函数中,第一个参数为True,其返回值为第二个参数,即“颐和园”。变量t的值为: \旅游景点:\长城\颐和园\【答案】 B

例3 假定有下面的程序段: For i = 1 To 3 For j = 1 To i

For k = j To 3

Print \ Next k Next j Next i

这是一个三重循环程序,在这个程序中,外层、中层和内层循环的循环次数是 A.3、6和14 B.3、8和16 C.3、4和12 D.3、9和18

【分析】 在多重循环中,外层循环变化一次,内层循环从头到尾执行一遍。该题是一个三重循环,而且中层循环变量的终值和内层循环变量的初值是随上一层循环的循环变量的变化而变化的,因此需要逐层加以计算后累加出各层的循环次数。模拟计算机的计算过程,计算各层的循环次数如下: (1)外层循环:i=1 To 3,循环次数为3

(2)中层循环:当i=1时,j=1 To 1,循环1次 当i=2时,j=1 To 2,循环2次 当i=3时,j=1 To 3,循环3次 中层循环的循环次数为6

(3)内层循环:当j=1时,k=1 To 3,循环3次 当j=1时,k=1 To 3,循环3次 当j=2时,k=2 To 3,循环2次 当j=1时,k=1 To 3,循环3次 当j=2时,k=2 To 3,循环2次 当j=3时,k=3 To 3,循环1次 内层循环的循环次数为14 【答案】 A

例4 假定有以下当循环: While Not条件 循环体 WEnd

则执行循环体的“条件”是

A.True B.1 C.False D.-1

【分析】 在当循环中,只有当While后面的“条件”为True时才能进入循环,执行循环体。也就是说,在 While条件 中,只有“条件”为True才能执行循环体。本题在“条件”前加了一个取反运算符Not,要想执行循环体,必须对“条件”本身求反,即“条件”必须为False。 【答案】 C

例5 阅读下面的程序: Private Sub Form_Click() Dim m, n As Integer

m=InputBox(\请输入M的值\ m=Val(m) m1=m

n=InputBox(\请输入N的值\ n=Val(n)

12

n1=n

Do Whilen<>0

remin = rn Mod n m=n

n = remin Loop

Print m1, n1, m End Sub

程序运行后,单击窗体,在输入对话框中分别输入16和24,则程序在窗体上的输出结果为 A.16 24 4 B.16 24 8 C.24 16 6 D.24 16 8

【分析】 本题提供的是用“辗转相除法”求两个整数的最大公约数的程序。一般来说,假定有两个整数m和n(m>n),把m作为被除数,n作为除数,相除后余数为r。如果r不等于0,则令m=n,n=r,再进行一次除法运算(以新的m作为被除数,n作为除数),得到新的r。如果r仍不等于0,则重复上述过程,直到r=0为止,此时的n就是两个数的最大公约数。

在本题的Do While-Loop循环中,通过辗转相除求最大公约数,循环结束的条件是相除后余数为0,如果不为0,则一直“除”下去。这里用Mod运算符求余数,较大的整数作为被除数或者较小的整数作为被除数都可以得到正确结果,但整除的次数可能会不一样。

例如,假定有两个数24和16,先把24作为被除数,16作为除数,相除后余数为8。再把原来的除数16作为下一次的被除数,将上一次得到的余数8作为下一次的除数,相除后余数为0。此时最后一次的除数8就是所求的最大公约数。

在本题的输入中,先输入16,再输入24,求出的最大公约数仍为8。 【答案】 B

例6 阅读下面的程序: Private Sub Form_Click() Dim Check, Counter Check = True Counter = 0 Do

Do While Counter < 20 Counter = Counter + 1 If Counter = 10 Then Check = False Exit Do End If Loop

Loop Until Check = False Print Counter, Check End Sub

程序运行后,单击窗体,输出结果为 A.15 0 B.20 -1 C.10 True D.10 False 【分析】 这是一个二重循环,内层和外层都是Do循环。在内层循环中,执行循环体的条件是Counter小于20,由于Counter的初值为0,因此执行循环体。在循环体中,每次循环Counter增1,达到10后,把Check变量设置为False,同时执行Exit Do,退出内层循环。外层循环执行的条件是,变量Check的值是True。如果Check为False,则退出外层循环,输出结果,结束程序。由于在退出内层循环时,Check已被设置为False,因此退出内层循环后立即就可以退出外层循环。退出两层循环后,Counter和Check的值没有发生任何改变,与退出内层循环时相同,分别为10和False。 【答案】 D

例7 在上面例题6的二重循环中,如果把外层循环中的Until关键字改为While,要求输出结果相同,请填空。

13

Do

Do While Counter< 20 Counter = Counter + 1 If Counter = 10 Then Check = False Exit Do End If Loop

Loop While _____

【分析】 在Do-Loop循环中,Until关键字的含义是“直到条件变为真之前”执行循环体,而While关键字正好相反,是“当条件为真时”执行循环体。也就是说,这两个关键字后面的条件是相反的,只要在条件前加上取反运算符Not,或者条件从False改为True,就可以用While替换Until,并且反之亦然。

【答案】 Not Check=False或Check=True 例8阅读程序:

Private Sub Form_Click()

Dim i As Integer, sum As Integer For i = 2 To 10

If i Mod 2 <> 0 Then Print i Else

sum = sum + i End If Next i Print sum End Sub

程序运行后,单击窗体,在窗体上的输出结果是_____。

【分析】 本题For循环的循环变量的初值为2,终值为10,步长为1。在循环体内,判断循环变量的值是否为偶数,如果是,则将该值累加到变量sum,否则输出循环变量的值。不难看出,运行该程序后,在循环体内输出的是奇数,而累加的是偶数。在循环体外,输出偶数的累加和。 【答案】 3 5 7 9 30

例9 阅读程序:

Private Sub Form_Click()

Dim num As Integer, digit As Integer num= InputBox(\ While num <> 0 digit =num Mod 10 num = num\\ 10 Print digit Wend End Sub

程序运行后,如果从键盘上输入9876,则输出结果为_____。

【分析】 本题使用了当循环,循环执行的条件是num不等于0。在循环体内,先用Mod运算符求出输入的数num的余数,接着用10对该数进行整除,把得到的商赋给num,最后输出余数。然后对整除后的num重复上述过程,直到num为0,结束循环。

在循环内,digit存放的是num的个位数,而每次整除后,num都要去掉个位数,而输出的也是个位数。例如,假定输入的是9876,则循环的执行过程如下: digit = 9876 Mod 10 = 6 num= 9876 \\ 10 = 987

14

Print digit 输出6 由于num不等于0,重复上述过程: digit = 987 Mod 10 = 7 num= 987 \\ 10 = 98

Print digit 输出7 num不等于0,重复上述过程: digit = 98 Mod 10 = 8 num= 98 \\ 10 = 9 Printdigit 输出8

num不等于0,重复上述过程: digit = 9 Mod 10 = 9 num=9\\ 10=0

Print digit 输出9 num等于0,结束循环。 【答案】 6 7 8 9

例10 以下程序的功能是,从键盘上输入若干学生的成绩,统计并输出最高分数和最低分数,当输入负数时结束输入,请填空。 Private Sub Command1_Click() Dim x As Single

Dim amax As Single, amin As Single x=InputBox(\请输入分数\ amax = x amin = x

Do While______

If x > amax Then amax = x End If

If______Then amin = x End If

x=InputBox(\请输入分数\ Loop

Print amax, amin End Sub

【分析】 本题需要填两个空。第一个空是结束循环的条件。根据题目要求,在循环体内,需要反复地输入每个学生的分数,只有当输入负数时才结束输入,即退出循环。也就是说,结束循环的条件就是输入的数是负数,即小于0。 【答案1】 x>=0 或Not x<0

由于本题要求输出输入的最高分数和最低分数,其中最高分数通过循环中的第一个条件语句来统计,放在变量amax中,类似地,最低分数通过循环中的第二个条件语句来统计,放在变量amin中。

【答案2】x<amin 或 Not x>=amin

例11 给定三角形的三条边长,计算三角形的面积。编写程序,首先判断给出的三条边能否构成三角形,如可以构成,则计算并输出该三角形的面积,否则要求重新输入。当输入-1时结束程序。 【分析】 从几何学可知,三角形的两边之和大于第三边。因此,如果输入的三角形的三条边中两边之和小于或等于另一边长,则不能构成三角形。在这种情况下,给出适当的信息,并要求重新输入。如果能构成三角形,则输出该三角形的面积。 程序如下:

Private Sub Form_Click() Dim a, b, c, s, t As Single

15

a=InputBox(\请输入A边的边长\ a=Val(a)

If a<0 Then End

b=InputBox(\请输入B边的边长\ b=Val(b)

c=InputBox(\请输入C边的边长\ c=Val(c)

If a+b<=c Or b+c<=a Or c+a<=b Then

MsgBox\所输入的值不能构成三角形,请重新输入\,,\ Exit Sub End If

s=(a+b+c)/2

t = Sqr(s * (s - a) * (s - b) * (s - c)) Print\三角形的面积为:\End Sub

程序运行后,单击窗体,依次显示三个输入对话框,在三个对话框中分别输入三角形的三条边长,程序先判断输入的边长是否能构成三角形,然后决定之后的操作,用信息框显示提示信息或者在窗体上输出三角形的面积。当输入1、2、3时,将显示信息框,如图7-5所示,提示不能构成三角形,要求重新输入,并退出程序;如果输入8、7、6,则输出结果为: 三角形的面积为:20.33316

如果在第一个输入对话框中输入-1或小于0的值,则结束程序。

第七章 数组

一、选择题:

例1 在窗体上画一个命令按钮,然后编写如下程序: Option Base 1

Private Sub Command1_Click(Index As Integer) Dim Arr1(12) As Integer, Arr2(3) As Integer Dim Sum As Integer Sum = 2

For i= 1 To 12 Arr1 (i) = i Next i

For i = 1 To 3

Arr2(i) = Arr1(i * i) Next i

For i = 1 To 3

Sum = Sum + Arr2(i) Next i Print Sum End Sub

程序运行后,单击命令按钮,在窗体上的输出结果是 A.16 B.24 C.32 D.36

【分析】在该例中定义了两个一维数组,分别为Arr1和Arr2,由于使用了Option Base 1语句,因此其大小分别为10和3,接着执行三个For循环。在第一个循环中,对Arr1数组赋初值,每个元素的值与其下标相同,即Arr1(1)=1,Arr1(2)=2??。在第二个循环中,为Arr2数组的三个元素赋值,这三个值分别为Arr1数组第一、三、九个元素的值,即Arr2(1)=1、Arr2(2)=4、Arr2(3)=9。在第三个循环中,计算数组Arr2各元素的和,并把它赋给变量Sum。各元素的和为1+4+9=14,但由于变量Sum的初值为2,因此最后的输出结果为16。 【答案】A

例2 在窗体上画一个文本框,然后编写如下代码: Option Base 1

Private Sub Form_Click()

16

Dim arr

Dim Start As Integer, Finish As Integer Dim Sum As Integer arr = Array(12, 4, 8, 16) Start = LBound(arr) Finish = UBound(arr) Sum = 0

For i = Start To Finish Sum = Sum + arr(i) Next i

c = Sum / Finish Text1.Text = c End Sub

程序运行后,单击窗体,则在文本框中显示的内容是 A.40 B.10 C.12 D.16

【分析】该例首先定义了数组变量arr和三个整型变量,接着用Array函数定义了一个数组,并用LBound和UBound函数求出数组的上下界,分别存放在变量Start和Finish中。然后通过For循环求出数组中各元素的和,放在变量Sum中,最后将和除以数组的上界,实际上是求出数组各元素的平均值,即(12+4+8+16)/4=10,在文本框中显示出来。 【答案】B

例3 阅读程序: Option Base 1

Private Sub Form_Click() Dim Arr(4,4) As Integer For i= 1 To4

For j = 1 To 4

Arr(i, j) = (i - 1) * 2 +j Next j Next i

For i=3 To 4

For j = 3 To 4

Print Arr(j, i); Next j Print Next i End Sub

程序运行后,单击窗体,输出结果是 A.5 7 6 8 B.6 8 7 9 C.7 9 8 10 D.8 10 8 11

【分析】本例主要测试二维数组的输入输出操作。由于程序的开头有Option Base 1语句,因此所定义的Arr是一个4行4列的二维数组。在第一个二重For循环中,根据内层和外层循环变量的变化对数组的每个元素赋值,其计算公式为:(i-1)*2+j,其中i和j分别为外层和内层循环变量。用这个公式计算的数组Arr各元素的值如下: Arr(1,1)= 1 Arr(1,2) = 2 Arr(1,3)= 3 Arr(1,4)= 4 Arr(2,1)= 3 Arr(2,2) = 4 Arr(2,3) = 5 Arr(2,4)= 6 Arr(3,1) = 5 Arr(3,2) = 6 Arr(3,3) = 7 Arr(3,4) = 8

17

Arr(4,1)= 7 Arr(4,2) = 8 Arr(4,3) = 9 Arr(4,4) = 10

在第二个二重循环中,用Print方法输出Arr数组4个元素的值,即Arr(3,3)、Arr(3,4)、Arr(4,3)和Arr(4,4),从上面的赋值情况可以看出,这4个元素的值分别是7、8、9、10。 【答案】C

例4 在窗体上画一个文本框,然后编写如下程序: Option Base 1

Private Sub Form_Click() Dim Arr(10) As Integer For i = 6 To 10 Arr(i) = i - 3 Next i

Text 1.Text = Str(Arr(6) + Arr(Arr(6) + Arr(10))) End Sub

程序运行后,单击窗体,在文本框中显示的内容是_____ 。

【分析】在该例中,定义了一个一维数组Arr,并为其开辟了10个元素的空间,然后通过For循环为该数组的后5个元素赋值。不难看出,数组Arr后5个元素的值分别为3、4、5、6、7。最后一个语句是为文本框的Text属性赋值,这个值是Arr数组的两个元素的和,其中第一个元素是Arr(6),即3;第二个元素的下标是数组Arr第六个元素(3)和第十个元素(7)的和,即Arr(3+7)=Arr(10),而该元素的值为7。因此

Arr(6)+Arr(Arr(6)+Arr(10))=3+Arr(10)=3+7=10 【答案】10

例5 以下程序的功能是,产生10个0~1 000的随机整数,放入数组Arr中,然后输出其中的最大值。请填空。 Option Base 1

Private Sub Form_Click() Dim Arr(10) As Integer Dim Max As Integer Randomize For i= 1 To 10

Arr(i)= Int(Rnd * 1000) Next i Max=____ For i = 2 To 10 If____Then

Max = Arr(i) End If Next i Print Max End Sub

【分析】该例用Int(Rnd*1000)产生0~1 000的随机整数,通过一个For循环把这些整数放入数组Arr中。变量Max用来存放数组的最大值。为了求出数组的最大值,首先应把数组的第一个元素(即Arr(1))赋给变量Max,然后进入循环,把Max依次与数组中的其他各元素进行比较,如果某个元素比Max大,就把该元素的值赋给Max。循环结束后,变量Max中存放的就是数组的最大值。最后输出Max的值。 【答案】Arr(1)

Arr(i)>Max

例6 以下程序的功能是,程序运行后,单击命令按钮,输出结果为: 1 4 7 2 5 8 3 6 9 请填空。

18

Private Sub Command1_Click() Dim Arr(3,3) As Integer For i= 1 To 3 Forj = 1 To 3

Arr(i,j) =_____ Print Arr(i,j); Next j Print Next i End Sub

【分析】该例输出的是一个3行3列的二维数组,数组中的各元素通过外层循环变量i和内层循环变量j产生,i用来控制数组Arr的行的变化,而i用来控制数组的列的变化。每执行一次外层循环,产生并输出数组的一行。第一次执行外层循环时,产生并输出的一行为1 4 7,即内层循环变量为1时输出1,内层循环变量为2时输出4,内层循环变量为3时输出7。因此,可以根据循环变量i和j的变化,用一个公式来产生和输出指定的数组。 【答案】i+(j-1)*3 或(i-1)+j*3-2

第八章 函数与过程

例1 编写如下通用过程:

Sub Proc(x As Single,y As Single) t=x x=t/y

y = t Mod y End Sub

在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim a As Single Dim b As Single a=5 b=4 Proc a, b Print a, b End Sub

程序运行后,如果单击命令按钮,则输出结果为 A.5 4 B.1.25 1 C.4 5 D.1.25 5

【分析】 该例中的Proc过程有两个参数,均为单精度类型;由于没有By Val关键字,参数使用的是引用(即传地址)方式。也就是说,实参a、b与形参x、y使用的是相同的地址。因此,由过程Proc计算出来的x、y的值实际上与实参a、b的值相同。在事件过程中,执行Proc a,b语句后,就把a(值为5)、b(值为4)的值分别传送给过程Proc中的x、y,使得x=5,y=4。在过程中,首先把x的值赋给t,即t的值为5,然后执行: x=t/y=5/4=1.25 y=t mod y=5 Mod 4=1 【答案】 B

在上面的程序中,如果把过程Proc的参数改为传值方式,结果会如何呢?在这种情况下,事件过程中的实参与通用过程中的形参没有任何关系,输出结果仍为5 4。 例2 阅读程序:

Function func(n As Integer) As Integer Sum = 0 For i= 1 To n

Sum = Sum + (i + 1) * i Next i

func = Sum End Function

Private Sub Command1_Click()

19

Dim a As Integer a=5

s = func(a) Print s End Sub

程序运行后,单击命令按钮,输出结果为 A.80 B.60 C.70 D.15

【分析】 该例调用一个Function过程Func,该过程只有一个参数,类型为整型,返回值也为整型。过程的调用十分简单,关键是要搞清楚过程func的功能。从循环 For i= 1 To n

Sum = Sum + (i + 1) * i Next i

可以看出,该过程的功能是计算 1*2+2*3+3*4+…+(n+1)*n

在调用过程时,实参a的值为5,即上式中的n=5。因此返回的值为: 1*2+2*3+3*4+4*5+5*6=70 【答案】 C

例3 阅读下面的程序:

Function Func(x As Integer, y As Integer) As Integer Dim n As Integer Do While n <= 4 x=x+y n=n+1 Loop Func = x End Function

Private Sub Command1_Click() Dim x As Integer, y As Integer Dim n As Integer, z As Integer x=1 y=1

For n = 1 To 6 z = Func(x, y) Next n Print z End Sub

程序运行后,单击命令按钮,输出结果是 A.16 B.21 C.26 D.31

【分析】 过程Func有两个参数,使用的是引用方式,参数和返回值均为整型,在命令按钮事件过程的For循环中调用Func过程,共循环6次,每次循环调用一次。两个过程中使用的变量(包括参数)基本相同,但由于是局部变量,不会发生冲突。无论在事件过程还是通用过程中,y的值始终保持不变,总等于1。在Func过程中,Do-Loop循环共执行5次,通过变量n控制(从0到4),每次都执行x=x+1,因此,每调用一次Func过程,都使得x=x+5,并把返回值赋给事件过程中的变量z。6次调用中,循环变量n及返回值z的结果如下: n z 1 6 2 11 3 16 4 21 5 26 6 31 【答案】 D

例4 编写如下通用过程:

Sub proc(By Val num As Long, ByRef ren As Long) Dim k As Long

20

k=l

hum = Abs(num) Do While num

k = k *(num Mod 10) num= num\\ 10 Loop ren = k End Sub

在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim n As Long, r As Long

n=InputBox(\请输入一个整数\ n = CLng(n) proc n, r Print r End Sub

程序运行后,单击命令按钮,在输入对话框中345,输出结果是

【分析】 过程proc有两个参数,其中第一个参数使用的是传值方式(带有关键字By Val),第二个参数使用的是引用方式(带有关键字ByRef,可以省略)。该过程的功能是,通过取余(Mod)和整除(\)运算符求出一个整数的各位数字,将这些数字相乘,并把乘积赋给参数ren。在事件过程中,用InputBox函数输入一个数,然后调用过程proc,如果输入的数是345,则结果为3*4*5=60。注意,调用语句 proc n,r有两个实参,其中r用来存放过程的返回值。Function过程通常有一个返回值,Sub过程也可以有返回值,并且可以有多个返回值,这些返回值放在形参中。在这种情况下,存放返回值的形参必须使用传地址方式,否则得不到正确结果。 【答案】 60

例5 阅读程序: Option Base 1

Dim arr2()As Integer

Private Function FindMax(a() As Integer) As Integer Dim Start As Integer

Dim Finish As Integer, i As Integer Start = Lbound____ Finish = UBound____ Max =____

For i = Start To Finish

If a(i) > Max Then Max = ______ Next i

FindMax = Max End Function

Private Sub Command1_Click() Dim arr1

arr1 = Array(12, 435, 76, 24, 78, 54, 866, 43) b = UBound(arr1)

ReDim arr2(___) As Integer For i= 1 To b

arr2(i) = CInt(_____) Next i

M = FindMax(arr2()) Print\最大值是:\End Sub

【分析】 数组在事件过程中定义,由于使用了Array函数,必须把数组变量定义为变体类型,但是,过程FindMax中的形式参数是整型,因此必须把数组转换为整型,否则在调用时将会产生“类型不匹配”错误。此外,用Array函数定义的数组不指定上界,只能通过UBound函数得到其上界。在窗体层定义了一个动态数组arr2,其上界在事件过程中给出并重新定义。因此,事件过程中的第一个空应为数组上界b,第二个空应为变体类型数组arr1(i)。

21

在通用过程中,需要知道数组的上界和下界,分别存放在变量Start和Finish中,然后把数组的第一个元素放在变量Max中,并把该变量与数组中的每个元素相比较,如果数组元素大于该变量,则用该元素的值取代Max中的值。

【答案】 事件过程中的两个空分别应填入: b arr(i)

通用过程中的4个空分别应填入: (a) (a)

a(Start)或a(1) a(i)

回该数组的最大值。请填空。

例6 用随机数函数Rnd生成一个8行8列的数组(各元素值在100以内),然后找出某个指定行内值最大的元素所在的列号。要求:查找指定行内值最大的元素所在列号的操作,通过一个过程来实现。 【分析】 求某一指定行中值最大的元素所在列号的Function过程代码如下: Function Max(b() As Integer, row As Integer) m = b(row, 1) col = 1

For i = 2 To UBound(b, 2) If b(row, i) > m Then Let m = b(row, i) col = i End If Next i Max = col End Function

该过程有两个参数,其中第一个参数是数组,第二个参数是数组中指定行的行号。在这个过程中,首先把指定行的第一列的值赋给一个变量,其列号为1,然后把该值与其后各列的值进行比较,如果比该值大,则用较大的值取代,同时记下其列号。 编写窗体的Click事件过程: Private Sub Form_Click() Randomize

Dim A(1 To 8, 1 To 8) As Integer Dim row As Integer For i = 1 To 8 For j = 1 To 8

A(i, j) = Int(Rnd * 100) Next j Next i

Print\所生成的数组为:\ For i = 1 To 8 For j = 1 To 8 Print A(i, j); Next j Print Next i Do

row = InputBox(\请输入指定的行号:\ Loop Until row >= 1 And row <= 8 col = Max(A(), row) Print

Print\第\行中最大元素所在列号为:\End Sub

该过程首先用随机数函数Rnd生成一个8行8列的数组,然后要求输入一个行号,程序将输出该行中最大值所在的列号。程序运行后,单击窗体,在输入对话框中输入一个行号,程序将输出该

22

行中值最大的元素所在的列号。

第九章 菜单与对话框

例1 Windows风格的对话框上通常没有最大化按钮和最小化按钮,为使标题栏上的这两个按钮消失,而保留其他按钮,设置窗体属性时,正确的是

A. ControlBox=True、 MaxButton=False、 MinButton=True B. ControlBox=False、 MaxButton=True、 MinButton=True C. ControlBox=True、 MaxButton=False、 MinButton=False D. ControlBox=False、 MaxButton=False、 MinButton=False

【分析】 ControlBox、MaxButton和MinButton属性都影响窗体标题栏上的按钮,其中ControlBox为False,则标题栏上的所有按钮消失,这显然与题意不符,所以B.和D.肯定是错误的。MaxButton和MinButton属性分别决定最大化按钮和最小化按钮是否显示,只有当二者都为False时,这两个按钮才都不显示。 【答案】 C

例2 设通用对话框控件的名称为CD1,希望在打开文件对话框中的“文件类型”列表中包含:所有文件、Word文档和文本文件这3类文件,在程序中设置Filter属性时正确的是 A.CD1.Filter=“所有文件|Word文档|文本文件”

B.CD1.Filter=“所有文件|*.*|Word文档|*.doc|文本文件|*.txt” C.CD1.Filter=所有文件|*.*|Word文档|*.doc|文本文件|*.txt D.CD1.Filter=“*.*|所有文件|*.doc|Word文档|*.txt |文本文件”

【分析】 通用对话框的Filter属性的值必须是字符型,在VB设计模式下,从属性窗口输入Filter的值时,可以直接输入字符串,但在程序中为Filter属性赋值时,必须添加字符串的定界符,所以C.一定是错误的。

Filter属性中字符串的格式应该是“类型描述1|过滤器1|类型描述2|过滤器2|??”,其中“类型描述”是在打开或保存文件对话框的“文件类型”列表中显示的一行文本,是向操作者表示的文件类型,操作系统并不能识别类型描述,操作系统可以识别的是它后面的“过滤器”,“过滤器”一般由通配符和文件的扩展名组成,是操作系统可以识别的与前面的“类型描述”匹配的文件类型。 对于答案A.,在对话框的“文件类型”列表中只显示“所有文件”和“文本文件”两行,操作系统把“Word文档”理解为“所有文件”的文件类型(即“过滤器”),事实上这种文件类型并不存在,因此对话框的文件列表中只有文件夹,而不会有任何其他文件。

答案D.中类型描述与过滤器的位置颠倒了,结果是在“文件类型”列表中显示*.*、*.doc、*.txt这3行内容,而与它们对应的过滤器都是错的,因此不管选择哪种文件类型,对话框中都只显示文件夹,而没有任何文件名。

只有答案B.才符合Filter属性要求的格式。 【答案】 B

例3 在使用通用对话框控件时,如果同时设置了以下属性:DefaultExt=“doc”,FileName=“c:\\filel.txt”,Filter=“应用程序|*.exe”,则显示打开文件对话框时,在“文件类型”下拉列表中的默认文件类型是

A.应用程序(即*.exe) B.*.doc C.*.txt D.不确定。 【分析】DefaultExt只在FileName中无扩展名部分时才有效,并且只影响FileName中的扩展名部分,与对话框中的默认文件类型无关,所以B.是错误的;FileName中的扩展名部分也不影响对话框中默认的文件类型,所以C.也是错误的;当没有设置FilterIndex属性时,Filter中的第一个文件类型就成为对话框的默认文件类型,它决定了在对话框的文件列表中显示哪一类文件,所以正确答案应该是A.。

需要说明的是,由于FileName中含有文件扩展名部分,虽然对话框的默认文件类型是“应用程序”(*.exe),但不会改变FileName中的扩展名,FileName中的内容仍然是“c:\\filel.txt”,除非在对话框中选择了其他文件名。

23

【答案】 A

例4 设计一个窗体Form1,其中,文本框的名称为Text1。要求单击“格式”按钮,在弹出对话框中选定单选按钮和复选框后,单击“确定”按钮,则可以对Form1的Text1文本框中的文字进行相应的设置,如果单击“取消”按钮,则在对话框中所做的设置无效。“格式”对话框中的3个单选按钮的名称依次是Op1、Op2、Op3,两个复选框的名称依次是Ch1、Ch2。填空完成下面的事件过程。 “格式”按钮的Click事件过程: Private Sub C1_Click( ) [1] End Sub

“格式”对话框(Form2窗体)中“确定”按钮的Click事件过程: Private Sub Command1_Click( ) If Op 1.Value Then

Form1.Text1.FontName =“宋体” ElseIf Op2.Value Then

Form 1.Text 1.FontName =“黑体” ElseIf Op3.Value Then

Form1.Text1.FontName =“隶书” End If If [2] Then

Form1 .Text1.FontItalic = True Else

Form1.Text1.FontItalic = False End If If [3] Then

Form1.Text1.FontUnderline = True Else

Form1 .Text1.FontUnderline = False End If

Unload Form2 End Sub

“格式”对话框中“取消”按钮的Click事件过程: Private Sub Command2_Click( ) Unload Form2 End Sub

【分析】 根据题意,在单击“格式”按钮后,应该弹出Form2窗体,使用Show方法可以加载并显示Form2窗体,如果使用Load方法只能加载Form2窗体,加载后还要用Show方法显示该窗体。所以[1]处应填写Form2.Show。

按照对话框的一般风格,单击“确定”或“取消”按钮都可以关闭对话框,但单击“取消”按钮将放弃在对话框中所做的选择,所以修改Form1的文本框格式的程序应放在“确定”按钮的Click事件过程中,判断对话框中各种控件的Value属性,来决定是否修改文本框的相关属性。

在[2]所在的IF语句中,Then子句中把Text1的斜体属性设置为True,而对话框中Ch1复选框的标题是“斜体”,说明选中这个复选框应执行第一个IF语句中的Then子句,所以[2]处应填写Ch1.Value=1。同样道理,在[3]处应填写Ch2.Value=1。

【答案】 [1]Form2.Show或Form2.Load:Form2.Show [2]Ch1.Value=1 [3]Ch2.Value=1

例5 设计一个名称为Form1的窗体,含一个标题为“登录”的命令按钮,单击此按钮,则打开“登录”对话框,正确口令为字符串“123456”,若单击“确定”按钮,则检查口令,如果口令正确,则在Form1窗体上显示“登录成功”并关闭对话框,否则弹出错误提示。允许输入3次口令,输入口令的文本框的名称为Text1,显示输入的次数的文本框的名称为Text2,Text2不允许键盘输入。如果3次输入都是错误的,则再次输入时,弹出提示,然后焦点定位到“退出”按钮上。单击“退出”按钮则在Form1窗体上显示“登录失败”并关闭对话框。对话框中“确定”按钮的名称为C1,“退出”按钮的名称为C2。编写适当的事件过程实现本题的功能。

24

【分析】 (1)建立控件:创建Form1、Form2,并在Form2窗体上画出两个文本框、两个命令按钮和两个标签。

(2)设置属性:根据题意,文本框Text1的PasswordChar属性应设置为“*”;因Text2不允许键盘输入,Text2的Locked属性设置为True;Form2的标题设置为“登录”,ControlBox属性设置为False。

(3)编写事件过程

Form1上“登录”按钮的Click事件过程: Private Sub C1_Click( ) Form2.Show End Sub

Form2中“确定”按钮和“退出”按钮的Click事件过程: Private Sub C 1_Click( )

Text2.Text = Val(Text2.Text) + 1 If Text1.Text = \ Form1.Print\登录成功\ Unload Me

ElseIf Val(Text2.Text)<3 Then

MsgBox\第\次口令错误,请重新输入\ Else

MsgBox Text2.Text&\次口令都错误,请退出\ Text1.Locked = True End If End Sub

Private Sub C2_Click( ) Form1.Print\登录失败\ Unload Me End Sub

在“确定”按钮的Click事件过程中,每单击此按钮一次,Text2中的数加1,从而记录输入口令的次数。如果在Text1中输入的是“123456”,表示口令正确,则在Form1上输出“登录成功”,然后卸载Form2如果口令错误,则要判断Text2中的数是否小于3,如果小于3,就用MsgBox对话框给出提示,否则,把Text1锁住(Locked=True),不允许再次输入口令。

当输入口令3次都错误,不允许再次输入,如果把输入光标移到Text1上,应弹出图12-5所示的对话框。可以在Text1获得焦点时实现这一功能,所以编写Text1的GotFocus事件过程如下: Private Sub Text1_GotFocus ( ) If Val(Text2.Text) >= 3 Then

MsgBox\口令错误超过3次,请退出\ C2.SetFocus End If End Sub

第十章 多窗体例题分析

例1 下列操作中不能向工程中添加窗体的命令是 A.执行“工程”菜单中的添加窗体命令 B.单击工具栏上的“添加窗体”

C.右击窗体,在弹出的菜单中选择“添加窗体”命令

D.右击工程资源管理器,在弹出的菜单中选择“添加”命令,然后在下一级菜单中选择“添加窗体”命令

【分析】 在建立VB应用程序时,自动创建一个窗体。在需要建立多窗体程序时,可以使用多种方式向工程文件中添加窗体。可以使用“工程”菜单或工具栏中相应的按钮执行添加窗体的命令。另外,在工程资源管理器窗口中,单击鼠标右键,弹出的快捷菜单中有“添加窗体”命令。答案A.、B.、D.对应上述三种情况。按答案C操作不能完成添加窗体的操作。 【答案】 C

例2 当一个工程含有多个窗体时,其中的启动窗体是

25

A.启动Visual Basic时建立的窗体 B.第一个添加的窗体 C.最后一个添加的窗体

D.在“工程属性”对话框中指定的窗体

【分析】 对于多窗体程序,只有一个窗体为启动窗体。如果没有特别指定启动窗体,则启动窗体为创建VB程序时建立的第一个窗体。也可以通过“工程”菜单的“工程属性”窗口指定启动窗体。显然,C不是正确答案。答案B中所提到的窗体是第一个添加的窗体,而不是建立工程文件时建立的第一个窗体。 【答案】 D

例3 Visual Basic应用程序主要由____、____和______等三种模块组成。 【分析】 本题要求掌握构成Visual Basic应用程序的构成和模块类型。VB的工程文件主要包含三种类型的模块:标准模块、窗体模块和类模块。 【答案】 标准模块 窗体模块 类模块

例4 为了显示一个窗体,所使用的方法为____;而为了隐藏一个窗体,所使用的方法为_____。 【分析】 显示窗体所使用的方法是Show,隐藏窗体所使用的方法是Hide方法。 【答案】 Show Hide

例5 在工程中添加窗体的方法有三种,分别是____、______和_______。

【分析】 创建VB的工程文件时,自动建立一个窗体。在设计多重窗体应用程序时,需要添加新的窗体。向现有的工程文件中添加窗体的方法有:在“工程资源管理器”窗口中单击鼠标右键,在弹出的快捷菜单中选择“添加窗体”命令;在“工程”菜单中选择“添加窗体”命令;或在标准工具栏中单击■按钮(添加窗体按钮)。上述三种方法都可以向工程文件中添加新的窗体。 【答案】

在“工程资源管理器”窗口中执行“添加窗体”命令 在“工程”菜单中选择“添加窗体”命令 在标准工具栏中单击■按钮

例6 启动窗体在_____对话框中指定,为了打开该对话框,应执行_____菜单中的_______命令。 【分析】 一个VB的工程文件可以包含多个窗体文件及其他类型的文件。运行VB程序时的启动窗体可以由设计者指定。指定启动窗体的操作可以在“工程”菜单中的“工程属性”窗口中进行。在“工程属性”窗口中,对应于“启动对象”的列表框中列出了当前工程文件中所有的窗体名称,可以从中指定一个作为启动窗体。缺省情况下,创建工程文件时建立的第一个窗体为启动窗体。 【答案】 工程属性 工程

<工程名>属性

例7 全局变量必须在_______模块中定义,所使用的语句为________。

【分析】 VB提供了全局变量、模块级变量和局部变量的定义和使用。全局变量的作用域是整个工程,可以在工程文件的每个模块及每个过程中使用。全局变量必须在标准模块的声明部分声明,并且只能使用Public或Global语句声明。在标准模块中用Private或Dim声明的变量的作用域为该模块,不能被工程文件中的其他模块调用。 【答案】 标准模块

Public或Global

例8 DoEvents语句的作用是_________。

【分析】 在程序运行执行闲置循环过程中,程序的控制权被系统占用。若要获得控制权,可以使用DoEvents语句。这样用户可以在获得系统的控制权后进行其他操作。 【答案】 获得系统的控制权

26

第二部分 Visual Basic 考点习题及解答

一、对象及其操作

(一)、选择题

1决定一个窗体有无控制菜单的属性是

(A)MinButton (B)Caption (C)MaxButton (D)ControlBox

2要使一个文本框具有水平和垂直滚动条,则应先将其MultiLine属性设置为True,然后再将 ScrollBar属性设置为:

(A)O (B)1 (C)2 (D)3 3要使文本框获得输入焦点,则应采用文本框控件的哪个方法? (A)GotFocus (B)LostFocus (C)keypress (D)SetFocus 4要想改变一个窗体的标题内容,则应设置以下哪个属性的值? (A)Name (B)FontName (C)Caption (D)Text 5能够改变窗体边框线类型的属性是

(A)Fontstyle (B)Borderstyle (C)BackStyle (D)Border 6能够获得一个文本框中被选取文本的内容的属性是

(A)Text (B)Length (C)SelText (D)SelStart 7要使标签能够显示所需要的文本,则在程序中应设置其哪一属性的值? (A)Caption (B)Text (C)Name (D)Autosize 8要使标签中显示的文本靠右显示,则应将其Alignment属性设置为 (A)O (B)1 (C)2 (D)3 9要把一个命令按钮设置成无效,应设置其哪一属性值? (A)Visible (B)Enabled (C)Default (D)Cancel 10要使一个命令按钮成为图形命令按钮,则应设置其哪一属性值? (A)Picture (B)Style (C)DownPicture (D)DisablePicture 11要使标签所在处透明显示背景,应把其Backstyle属性设置为 (A)O (B)1 (C)True (D)False

12为了在按下回车键时执行某个命令按钮的事件过程,需要把该命令按钮的一个性设置为True,这个属性是:

(A)Value (B)Cancel (C)Enabled (D)Default

27

(二)、编程题

13在窗体上建立2个文本框(Name属性值分别为Text1和Text2)和2个命令按钮(Name属性分别为Command1和Command2),程序运行时,在Text1中输入文

本,单击Commandl命令按钮时,将Text1文本框中的值复制到Text2文本框中p 当单击Command2命令按钮时,退出程序。

14已知自由落体的位移公式为s=1/2gt2+v0t,其中v0为初始速度,g为重力加度,

t为经历的时间,编写一程序,求位移量s。用2个文本框分别输入初始速度和经历的时间,单击一个命令按钮时,进行计算,并将运算结果在另一文本框显示。

15输入球体的半径,然后计算并输出球体的体积和表面积。已知球体的体积计算公式为v=4/3πr3,球的表面积公式为f=4πr2,此处的r为球体的半径。

要求:程序用一个文本框输入半径r,单击一个命令按钮时,进行计算,并将运算结 果即球的体积和表面积分别用2个文本框显示出来。 参考答案: (一)、选择题

1 D 2 D 3 D 4 C 5 B 6 C 7 A 8 B 9 B 10 B 11 A 12 D (二)、编程题

13分别编写两个命令按钮Command1和Command2的Click事件过程代码。程序代码如下: Private Sub Command1-click() Text2.Text =Text1.Text End Sub

Private Sub Command2-Clicko End End Sub

14在窗体上添加3个文本框,第一个文本框(名称为Text1)用于输入初始速度vo 值;第2个文本框(名称为Text2)用于输入经历的时间,第3个文本框(名称为 Text3)用于显示计算的结果,即位移量。再向窗体中添加一个命令按钮(名称为 Commandl),编写命令按钮Command1的Click事件过程代码。程序代码如下: Private Sub Command1-Click()

Dim v As Double,t As Double,s As Double

28

v=Val(Text1.Text) t =Val(Text2.Text) s =v*t+9.8*t*t/2 Text3.Text = s End Sub

15在窗体上添加3个文本框,第1个文本框(名称为Text1)用于输入球的半径r值;第2个文本框(名称

为Text2)用于显示计算出来的球体体积;第3个文本框(名称为Text3)用于显示计算出来的球体的表面积。再向窗体中添加一个命令按钮(名称为Command1),编写命令按钮Command1的Click事件过程代码。程序代码如 Private Sub Command1_Click() Dim r As Double r=Val(Text1.Text) Text2.Text =4*3.14*r*r*r/3 Text3.Text =4*3.14*r*r End Sub

二、数据类型及其运算

(一)、选择题

1.下面给出的符号中,不能作为Visual Basic的变量名的是 (A)abed (B)4A12 (C)AA-123 (D)BB% 2.下面给出的符号中,可以作为Visual Basic的变量名的是 (A)abc-123 (B)πR (C)Print (D)Beta 3下列可作为Visual Basic的常量的是

(A)π (B)1.O*E-3 (C)-1E5 (D)E-6 4.下列不可作为Visual Basic的常量的是

(A)1OE01 (B)-l00.98# (C).0001 (D)1.OE 5.按照Visual Basic的规定,下面作为字符串常量合法的是

(A)ABC$ (B)“ABCπ” (C)“AB”$ (D)‘abc123' 6.按照Visual Basic的规定,123#所表示的数据类型是

(A)整型 (B)双精度型 (C)单精度型 (D)长整型

29

7.下面给出的符号中,可以作为Visual Basic的变量名的是 (A)PRINT (B)LET (C)%by (D)S# 8.下面给出的符号中,不可以作为Visual Basic的变量名的是 (A)E* (B)e! (C)E# (D)e%

9.常量4.5123843D-5是一个以指数形式表示的合法的Visual Basic常量,下面与该数的值等价的是 (A)0.000045123843 (B)0.0045123843 (C)0.00045123843 (D)0.045123843 10.下面不可以作为Visual Basic常量的是

(A)\(C)True (D)π 11.下面能够作为Visual Basic的表达式的是 (A) 4*sin(π) (B)b^2-4ac (C)[-b+sqr(dlt)]/(2*a*c) (D)exp(x)+ABS(Y) 12.下面表达式中,其值为0的是

(A)4/5 (B)5Mod 4 (C)4\\5 (D)4Mod 5 13.在Visual Basic中,以下表达式的值与其他三个不同的是 (A)Int(-3.5)+0.5 (B)exp(-3.5) (C)SGN(一3.5)-2.5 (D)-ABS(一3.5)

14.在Visual Basic中,执行下面四个赋值语句时出现错误的是 (A)x=SGN(O) (B)Y=sqr(O) (C)z=LOG(O) (D)x=SIN(O) 15.下面不可以作为Visual Basic常量的是

(A)&61A& (B)&234 (C)&O43& (D)&Habc&

16.设变量a=2,b=3,c=4,d=5,则表达式not a>b and b^2c-d 的值为

(A)True (B)False (C)-1 (D)1 (二)、填空题

17与数学表达式cos3(2π)相对应的Visual Basic表达式是_______________。18表达式Len(\的值是_______________。

19表达式Sgn(-9)十Val(\的值为_______________。 20表达式Int(-5.6)+Fix(-9.56)的值为_______________。

21表达式Mid (\学习教程\和C教程\的值

30

为_______________。

22表达式Str(-5.23)&123的值为_______________。 23表达式\的值为_______________。 24表达式#2001-05-10#+31的值为_______________。

25表达式Abs(-34)+Sqr(100)*Int(-3.4)的值为_______________。 26表达式Rtrim(Lcase(\〈\〉的值

为_______________。

27与数学表达式e-4+Log105对应的Visual Basic表达式是_______________。 28与数学表达式1≤x≤100对应的Visual Basic表达式是_______________。

29设变量a是一个实数,能对a值的第4位小数进行四舍五入的表达式是_______________。 30执行以下语句后,输出结果是_______________。(下式中表示回车)

a=\Print Instr(a,\

31假定当前日期是2001年5月25日星期五,则执行以下语句后,输出结果为:

_______________、_______________、_______________、_______________。 Print Day(now) Print Month(now) Print Year(now) Print Weekday(now)

32在6.0版的Visual Basic中,字符采用_______________的编码方式,在这种编码方案中,一个中文字

符或一个西文字符均视为_______________,每个字符用_______________个字节编码。 33在Visual Basic中,字符串常量要用_______________括起来,日期/时间型常量要用

_______________括起来。

34表达式Chr(65)的值为_______________,Asc(\)的值为_______________。 35数学表达式sin36o,写成Visual Basic的表达式为_______________。 36表达式5*5\\5/5的值是_______________。 37表达式4+5\\6*7/8mod9的值_______________。

38Print Format(Sqr(3),\的值为_______________。 39Print Format(-34.69358, \的值为_______________。 40Print Format(6723.4587,\的值为_______________。 参考答案:

31

(一)、选择题

1 B 2 D 3 C 4 D 5 B 6 B 7 D 8 A 9 A 10 D 11 D 12 C 13 B 14 C 15 A 16 A (二)、填空题

17 cos(2*3.14)^3 29 round(a,4) 18 6 30 0

19 122.34 31 25、5、2001、6 20 -15 32 Unicode 编码 1 2 21 BASIC学习教程和C教程 33 双引号 # 22 -5.23123 34 A 66

23 False 35 Sin(3.14*36/180) 24 2001-6-10 36 25 25 -6 37 5

26 abcd123xyzopq 38 $00001.732 27 exp(-4)+log(5)/log(10) 39 -0,000,034.694 28 x>=1 and x<=10 40 +672345.870E-02

三、顺序程序结构与数据输入/输出

(一)、选择题

1下列不支持Print方法的是:

(A)图片框控件 (B)窗体 (C)打印机 (D)文本框控件 2设变量a和b的值分别为153和-45,则Debug.print a;b的输出结果为:(输出结 果中的└┘表示一个空格符,下同)

(A) └┘153└┘-45└┘ (B)153└┘-45

(C) └┘153└┘└┘-45└┘ (D) └┘153└┘└┘-45 3语句Print \的输出结果为:

(A)\└┘110 (B) 44+66=└┘110 (C) \└┘44+66 (D) \└┘44+66 4下列语句中,不正确的打印语句是:d

32

(A)Print a=3+5 (B)Print \(C)Print \ (D)Print a=;3+5

5设有赋值语句Stt1=\和Str2=\则语句Print Str1;Str2的输出结果为 (A)abede└┘xyz (B)abedexyz

(C) └┘abede└┘xyz (D) └┘abede└┘└┘xyz└┘ 6Print sgn(-6^2)+abs(int(-234.12))的输出结果为:

(A))-300 (B)300 (C)236 (D)234 7Print sgn(一20)*sqr(3)

(A)l (B)False (C)True (D)0 8Print Format(abs(-3^2)+32.5,\的输出结果为: (A)$$41.5000 (B)$$41.5 (C)$000041.5000 (D)$$000041.5000 9InputBox函数的返回值的类型是:

(A)数值 (B)字符类型

(C)变体 (D)数值或字符串(视输入的数据而定) 10设计一个程序,在程序中添加一个名称为Form1的窗体,添加窗体的Click事件过程代码,

Private sub Form-Click() Dim x As Single,y As Single

xzInputBox(\输人第一个数据\输人数据\y=InputBox(\输人第二个数据\输入数据\Print x+y End Sub

程序运行时,单击窗体,先后在两个输入对话框中输入123和456,则程序的输 出结果为:

(A)123456 (B)123 (C)579 (D)456

11分别执行以下语句x=InputBox(\和y=MsgBox(\时 的输入对话框窗口和消息对话框的标题信息分别为:

(A)aaa和ccc (B) aaa和ddd (C) bbb和ccc (D) bbb和ddd 二、编程题

33

12编写二个将摄氏温度转换成华氏温度的程序,要求:摄氏温度通过输入对话框来输入,结果在窗体上

显示。已知:由摄氏温度求华氏温度的计算公式为:F=9/5╳C+32,其中:C为摄氏温度,F为华氏温度。

13从键盘上输入两个数,编写一程序,计算并输出2个数的和及平均值。通过InputBox函数输入数据,

在窗体显示和及平均值。

14编写一个程序,计算半径为15cm、高为30cm的圆柱体的体积,半径和高通过

InputBox函数输入,计算结果并将其打印到窗体中。参考答案: (一)、选择题

1 D 2 A 3 B 4 D 5 B 8 A 9 B 10 C 11 D (二)、编程题 12程序代码如下: Private Sub Form-Click() Dim c As Single,f As Single

C =Val(InputBox(“输入摄氏温度”,“输入”)) f=9*C /5十32

Print “华氏温度为:”;Format(f,“.00”) End Sub

13程序代码如下: Private Sub Form_Click()

Dim x As Single,y As Single,s As Single,av As Single x=Val(InputBox(\输入第一个数\输入\ y=Val(InputBox(\输入第一个数\输入\s =x +y av=s/2

Print “两数之和为:”;s Print “两数平均数为:”;av End Sub

14程序代码如下:

6 D 7 C 34

Private Sub Form-Click()

Dim r As Single,h As Single,v As Single

r=Val(InputBox(\输入圆柱体底面半径\输入\h=Val(InputBox(\输入圆柱体高\输入\v=3.14*r*r*h

Print \圆柱体体积为:\) End Sub

四、Visual Basic的常用标准控件

1设置复选框或单选按钮的标题对齐方式的属性是:

(A)Align (B)Style (C)Sorted (D)Alignment 2在程序代码中将图片文件mypic.jpg装入图片框Picturel的语句是: (A)Picture1.picture=\(B)Picture1.image=\

(C)Picture1.picture=LoadPicture(\(D)LoadPicture(\

3在程序代码中清除图片框Picture1中的图形的正确语句是:

(A)Picture1.picture=\ (B)Picture1.Picture=Loadpicture(\(C)Picture1.image=\ (D)Picture1.picture=Null

4为了能在列表框中利用Ctrl和Shift键进行多个列表项的选择,则应将列表框的Multiselect属性设置为:

(A)0 (B)1 (C)2 (D)3

5如果只允许在列表框中每次只能选择一个列表项时,则应将其Multiselect属性设置为: (A)0 (B)1 (C)2 (D)3

6要使列表框中的列表项显示成复选框形式,则应将其Style属性设置为: (A)0 (B)1 (C)True (D)False 7在列表框中当前被选中的列表项的序号是由下列哪个属性表示: (A)list (B)Index (C)Listindex (D)Tabindex 8要清除列表框中所有的列表项时,应使用以下哪种方法: (A)Remove (B)Clear (C)Removeitem (D)Move

35

9列表框中的列表项的数目可通过以下哪个属性的值获得: (A)Count (B)Listcount (C)ListIndex (D)Index 10单击滚动条的滚动箭头时,产生的事件是:

(A)Click (B)Scroll (C)Change (D)Move

11要将一个组合框设置为简单组合框(Simple Combo),则应将其Style属性设置为: (A)0 (B)1 (C)2 (D)3 12要使一个文本框具有垂直滚动条,则应:

(A)将其Multiline设置为True,同时将Scrollbars属性设置为0 (B)将其Multiline设置为True,同时将Scrollbars属性设置为1 (C)将其Multiline设置为True,同时将Scrollbars属性设置为2 (D)将其Multiline设置为True,同时将Scrollbars属性设置为3 13要使一个标签透明且不具有边框,则应:

(A)将其Backstyle属性设置为0 ,Border-Style属性设置为0 (B) 将其Backstyle属性设置为0 ,Border-Style属性设置为1 (C) 将其Backstyle属性设置为1 ,Border-Style属性设置为0 (D) 将其Backstyle属性设置为1 ,Border-Style属性设置为1

14要使组合框设置成只能从中选择而不能输人数据的组合框(下拉式列表框),则应将其Style属性设置为:

(A)0 (B)1 (C)2 (D)3 15以下不具有Picture属性的对象是:

(A)窗体 (B)图片框 (C)图像框 (D)文本框

16为使计时器控件每隔5秒钟产生一个计时器事件(Timer事件),则应将其Interval属性值设置为:

(A)5 (B)500 (C)300 (D)5000 17为使图像框的大小自动适应图像的大小,则应:

(A)将其Autosize属性值设置为True (B)将其Autosize属性值设置为False (C)将其Stretch属性值设置为True (D)将其Stretch属性值设置为False

18若在Shape控件内以Fillstyle属性所指定的图案填充区域,而填充图案的线条的颜色由Fillcolor

属性指定,非线条的区域由Backcolor属性填充,则应:

(A)将Shape控件的Fillstyle属性设置为2至7间的某个值, BackStyle属性设置为1 (B)将Shape控件的Fillstyle属性设置为0或1, BackStyle属性设置为1

36

(C)将Shape控件的Fillstyle属性设置为2至7间的某个值,BackStyle属性设置为0

(D)将Shape控件的Fillstyle属性设置为0或1,BackStyle属性设置为0 19要获得当前驱动器应使用驱动器列表框的哪个属性?

(A)Path (B)Drive (C)Dir (D)Pattern

20要使目录列表框(名称为Dir1)中的目录随着驱动器列表框(名称为Drivel )中所选择的当前驱动器

的不同而同时发生变化,则应:

(A)在Dirl中的Chnge事件中,书写语句Dirl.Drive=Dive1.Drive (B)在Dir1中的Change事件中,书写语句Dir1.Path=Drivel.Drive (C)在Drive1中的Change事件中,书写语句Dir1.Path=Drivel.Drive (D)在Drivel中的Change事件中,书写语句Dir.Drive=Drivel.Drive 21要获得文件列表框中当前被选中的文件的文件名,则应使用哪个属性?

(A)Dir (B)Path (C)Drive (D)Filename (二)、编程题

22设计一个能将第1个列表框中被选择的列表项,加入到另外1个列表框中的程序。要求:窗体中加入2个列表框(将它们的Multiselect属性设置成0,即每次只能从列表框中选择一项)、2个命令按钮,即\确定\和\取消\。程序运行过程中,利用程序向第1个列表框中加入若干个列表项,当单击\确定\按钮时,则将第1个列表框中的已被选择的列表项加入到第2个列表框中,并同时将它从第1个列表框中清除。当用户单击\取消\按钮时,则可将第2个列表框中被选择的列表项重新返回到第1个列表框中。

23自己制作一幅图片,将其加入到图片框中。

24在窗体中添加3个文本框、2个命令按钮(\确定\和\退出)。程序运行过程中,当单击\确定\按钮时,能将第1个文本框中输入的文本和第2个文本框中输入的文本连接起来,放到第3个文本框中。当单击\退出\按钮时,结束程序的运行。 参考答案: (一)、选择题

1 D 2 C 3 B 4 C 5 A 6 B 7 C 8 B 9 B 10 C 11 B 12 C 13 B 14 C 15 D 16 D 17 D 18 A 19 B 20 C 21 D (二)、编程题

22新建一个工程,向窗体中添加两个列表框(名称分别为List1和List2),再向窗体中加入两个命令按钮(名称分别为Command1和COmmand2),该程序的功能是:

37

当单击COInImnd1命令按钮时,可将List1列表框中被选择的列表项加入到List2 列表框中,同时将其从List1列表框中清除;当单击Commana命令按钮时,可将 List2列表框中被选择的列表项重新加回到Listl列表框中,同时将其从List2列 表框中清除。各事件过程代码如下: Private Sub Commandl-Click()

'将listl列表框中被选择的列表项加人到list2列表框中 List2.AddItem List1.List(List1.ListIndex) ListL RemoveItem List1.ListIndex End Sub

Private Sub Command2-Click()

'将list2列表框中被选择的列表项加人到listl列表框中 List1.AddItem List2.List(List2.ListIndex) List2.RemoveItem List2.ListIndex End Sub

Private Sub Form-Load()

‘窗体装人时,向List1列表框中加入一些列表项 List1.AddItem\项目1\List1.AddItem\项目2\ListL AddItem\项目3\List1.AddItem\项目4\List1.AddItem\项目5\List1.AddItem\项目6\List1.AddItem\项目7\End Sub

23读者可用\画图\或其他绘图程序制作一幅图,并保存到某个文件夹中。在Visual Basic集成开发环境中,向窗体中添加一个图片框,利用下列方法之一进行设置:

方法1:在设计阶段,利用属性窗口,将图片框的Picture属性设置为自己所制 作的图片。

方法22在窗体的Form-Load()事件过程中,利用语句:图片框名.Picture=

38

LoadPicture(\图片文件名\

24新建一个工程,向窗体中添加3个文本框(名称分别为Text1、Text2和Text3),再向窗体中添加两个命令按钮(名称分别为Command1和Command2),该程序的作用是:当程序运行时,单击Command1命令按钮,可以将文本框Text1和Text2中

的文本连接起来形成一个新的字符串,并将其显示到Text3文本框中;当单击 Command2命令按钮时,退出程序。为此编写命令按钮Commandl和Command2 的Click事件过程。程序代码如下: Private Sub Command1-click() Text3.Text =Text1.Text &Text2.Text End Sub

Private Sub Command2-ClickO End i End Sub

五、选择程序结构

(一)、选择题

1设窗体的Click事件过程代码如下: Private Sub Form-Click()

Dim k As Integer,a As Integer k=1

If k<=1 Then a =2*k If k<=2 Then a =2*k十1 If k<=3Then a =k Print k,a End Sub

则当程序运行时,在窗体上单击鼠标时的输出结果是: (A)1 2 (B)1 3 (C)1 1 (D)3 1 2设窗体的Click事件过程代码如下: Private Sub Form-Click()

Dim x As Integer,y As Integer

39

x=-2

If Not x>0 Then x=y-3 Else y =x+3 Print x-y;g y-x

End Sub

则当程序运行时,在窗体上单击鼠标时的输出结果是

(A)-3 3 (B)5 -8 8 -5 (C)3 -3 (D)25 -25 3以下哪个程序段的执行结果为\ (A) (B)

Dim y As Integer Dim y As Integer y=10 y=20 Select Case y Select Case y Case 11 To 1 Case Is>20,Is<20 Print \ Print \ End Select End Select (C) (D)

Dim y As Integer Dim y As Integer y=6 y=10

Select Case y Select Case y Case Is>6,1,2 to 5 Case 1,3,Is>6 Print \ Print \ End Select End Select (二)、编程题

4编写一程序,输入一个整数,判断能否被3或5整除,如能整除就打印该数,否则不打印,请将程序代码

写在窗体的Click事件过程中。

5输入3条线段的长度,判断这3条线段能否构成三角形,如能构成三角形则计算三角形的面积,如果

不能构成三角形则打印出错误信息。请将程序代码写在窗体的Click事件过程中,输入3条线段请用InputBox函数。

6输入一个年份,判断它是否为闰年。闰年的条件是:年号能被4整除但不能被100整除,或者能被400

整除的年份。

7输入3个数,要求按从小到大输出。

8输入一个0----99999之间的整数,判断输入的是几位数。如:如果输人586,则输出结果为3。

40

9设计一个销售彩电(3000元/台)、冰箱(2500元/台)、洗衣机(1000元/台)的程序(商店送货上门时需加收100元)。设计程序时,窗体中包括2个框架、3个选择按钮(用于选择商品)、3个文本框(用于输入商品的台数)、2个单选按钮(用于选择送货方式:自取或送货)、1个命令按钮(用于计算金额)和1个文本框(用于显示总合额) 参考答案: (一)、选择题

1 C 2 A 3 D (二)、编程题

4将程序代码写在窗体的Click事件过程中。程序代码如下: Private Sub Form-Click() Dim x As Integer

x=Cint(Val(InputBox(\输人一个整数\输入\If x Mod 3=0 Or x Mod 5=0 Then Print x;\能被3或5整除\End If End Sub

5任意三条边能否构成三角形的条件是:三边都必须大于零,同时任意两边之和必须大于第三边。程序代码如下:

Private Sub Form-Click()

Dim a As Single,b As Single,C As Single,s As Single,area As Single a =Val(InputBox(\输入第一条边的长度\输入\b =Val(InputBox(\输入第二条边的长度\输入\C =Val(InputBox(\输入第三条边的长度\输入\If a >0 And b >0 And c >0 Then

If a +b >c And b +c >a And a +c >b Then

s =(a+b +c)/2

area=Sqr(s*(s-a)*(s-b)*(s-c))

Print \面积area=\” ” Else

41

Print \错误!任意两边之和需大于第三边。\End If Else

print\错误!边长需大于零。\End If End Sub

6是闰年的条件是:年号能被4整除并且同时不能被100整除,或者年号能被400整除。程序代码如下: Private Sub Form-Click() Dim y As Integer

y=CInt(Val(InputBox(\输入年号\输人\

If(y Mod 4=0 And y Mod 100<>0)Or (y Mod 400=0)Then

Print y;\是闰年\Else

Print y;\不是闰年\End if End Sub

7程序代码如下: Private Sub Form-Click()

Dim a As Single,b As Single,C As Single,t As Single a =Val(InputBox(\输入第一个数\输入\b =Val(InputBox(\输人第二个数\输入\c =Val(InputBox(\输入第三个数\输入\If a >b Then t=a : a =b: b =t If a >C Then t=a : a =c: c=t If b >c Then t =b: b =c: c =t Print \从小到大的顺序是:”;a;b;c End Sub

8程序代码如下: Private Sub Form-Click()

42

Dim x As Long

x=Val(InputBox(\输人一个0~99999间的整数\输人”)) If x\\10=0 Then Print X;\是1位数\ElseIf x\\100=0 Then Print x;\是2位数\ElseIf x\\1000=O0Then Print x;\是3位数\ElseIf x\\10000=0 Then Print x;\是4位数\Else

Print x;\是5位数\End If End Sub

9新建一个工程,在窗体上添加2个框架(标题分别为\商品\和\取货方式”),在第1个框架内添加3个选择框和3个文本框,3个选择框的名称分别为Check1、

check2、chck3,分别表示选择购买彩电、冰箱和洗衣机;3个文本框的名称分别为

Text1、Text2和TeE币,分别表示3种商品需要购买的数量。在第2个框架内添加2个单选按钮,名称分别为Option1和Option2,分别表示\商店送货\和\自取\。最后在窗体上添加一个命令按钮和一个文本框,名称分别为Command1和Text4,分别用于计算金额和显示金额。程序代码如下: Private Sub Commandl-Click() Dim sum As Single sum =0#

If Check1.Value Then sum =sum +3000*Val(Text1.Text) End If

If Check2.Value Then

sum =sum +2500*Val(Text2.Text) End If

43

If Check3.Value Then

sum =sum +1000*Val(Text3.Text) End If

If Option1.Value =True Then sum =sum +100 End If

Text4.Text =sum End Sub

六、循环程序结构(一)、选择题

1对于下面结构的循环语句

Do Until条件

循环体 loop 正确的描述是:

(A) 如果\条件\是一个为0的常数,则不执行循环体 (B) 如果\条件\是一个为0的常数,则至少执行一次循环体 (C) 如果\条件\是一个不为0的常数,则至少执行一次循环体 (D)不论条件是否为\真\至少要执行一次循环体 2序运行时,在窗体上单击左键,则输出结果为: Private Sub Form-click()

Dim m As Integer,n s Integer, j as integer, k As Integer n=0 For m=1 To 3

For j=1 Tom

For k=j To3

n=n+1

Next k,j,m Print n

44

End Sub

(A) 6 (B) 10 (C) 14 (D) 21 3设有以下程序段: Dim i As Integer,j As Integer i=1

Do While i <4

i=i+l

For j=5 To 1 Step-1

Print i*j Next j loop

则其中的语句Print i*j 的执行次数是:

(A)15 (B)16 (C)17 (D)18 4下面程序执行时,当在窗体上单击左键时的输出结果是: Private Sub Form-Click() Dim k As Integer,y As Integer y =3:k=5

For k =l To 5 Step-1

y =y+k Next k Print y;k End Sub

(A)3 1 (B)3 5 (C)8 6 (D)3 6 5下面程序执行时,当在窗体上单击左键时的输出结果是: Private Sub Form_Click()

Dim x As Integer,a As Integer,y As Integer For x=l To 2

a =0 For y=l To x+1

a =a +1 Next y

45

Print a; Next x End Sub

(A)1 1 (B)2 3 (C)0 0 (D)1 2 6下面程序执行时,当在窗体上单击左键时的输出结果是: Private Sub Form_Click()

Dim x As Integer,y As Integer,i As Integer x=2:y=3

For i=x To x+y

x=x+2 Next i Print x End Sub

(A)8 (B)9 (C)10 7执行语句a=IIf(5>10,1,-1)后,变量a的值为:

(A)5 (B)10 (C)1 8下面程序的执行结果为: Private Sub Form-Click()

Dim k As Integer,n As Integer,m As Integer k=1:m=1:n=10 Do While k〈=n

m=m*2 k=k +1 loop print m End Sub

(A)20 (B)1 (C)1024 9设有以下循环 X=1 Do

x=x十3

(D)11 (D)-1 (D)200 46

Loop Until x>10 Print x

该程序段的输出结果为:

(A)1 (B)4 (C)12 (D)13 10下面程序执行时,当在窗体上单击左键时的输出结果是: Private Sub Form_Click() Dim x As Integer,y As Integer x=1

For y=1 To 50

If x>=10 Then Exit For End If

If x Mod 2=l Then x=x+5 Else x==x-3 End If Next y Print x End Sub

(A)4 (B)6 (C)8 (D)10 11下面程序执行时,当在窗体上单击左键时的输出结果是: Private Sub Form-Click()

Dim i As Integer,j As Integer,s As Single For i=6 To 5 Step-1

s =0#

For j=i To 4 Step -1

s =s +i*j Next j Next i Print s

47

End Sub

(A)90 (B)45 (C)135 (D)60 12下面程序执行时,当在窗体上单击左键时的输出结果是: Private Sub Form-Click() Dim k As Integer,c As String*l k=0: C=\Do

Select Case C Case \

k=k+l Case \

k=k-1 Case \

k=k+2 Case \Case \

k=k*2 Case Else

k=k/3 End Select c =Chr(Asc(c)+1) k=k+1 Loop While c<\Print k End Sub

(A)2 (B)5 (C)6 (二)、编程题

13编写程序求:1!+2!+?+10!的值。

14编写程序求:1-1/2+1/3-1/4+?+1/99-1/100的值。 (D)13 48

15已知斐波那契数列的第1项与第2项的值分别为1和1,其后每一项都是其前面两项的和,形

如:1,1,2,3,5,8,?,写一程序求出该数列的前20项及前20项的和。

16设1995年我国有12亿3千万人口,以年人口平均增长率为1%、1.5%和2%计算,从1995年起,经

过几年我国人口就会增长到16亿。

17写一程序将某个整数分解因式,如:24分解成1*2*2*2*3,一42分解成-1*2*3*7。 18新建一个窗体,在窗体上加入4个文本框(设名称为Text1、Text2、Text3和

Text4)和1个命令按钮(设名称为Commandl)。程序运行时,在文本框Textl中输入1个字符串,单击命令按钮Command1时,程序能统计出输入的字符串中数字字符个数、字母个数和其他字符的个数,并将统计出来的结果分别显示到文本框Text2、Text3和Text4中。 参考答案: (一)、选择题

1 B 2 C 3 A 4 A 5 B 6 C 7 D 8 C 9 D 10 D 11 B 12 D (二)、编程题

13将程序代码写在窗体的Click事件过程中。程序代码如下: Private Sub Form-Click()

Dim s As Single,t As Single,i As Integer s =0# t=1 For i=l To 10

t==t*E s =s +t Next i

Print “总和为:”;S End Sub

14将程序代码写在窗体的Click事件过程中。程序代码如下: Private Sub Form-Click() Dim s As Single,i As Integer s =0# For i=1To 100

49

s =s +(-l)^(i-1)/i Next i

Print \总和为:\“0.000000\

End Sub

15将程序代码写在窗体的Click事件过程中。程序代码如下 Private Sub Form-Click() Dim s As Single,i As Integer Dim xl As Integer,x2 As Integer xl=1: X2=1 s =0# For i=1To 10 Print xl;x2; s =s +x1+x2 xl=xl+x2 x2=x1+x2 Next i Print

Print \前20项之和为:\End Sub

16将程序代码写在窗体的Click事件过程中。程序代码如下 Private Sub Form-Click()

Dim t As Single,r As Single,n As Integer For r=0.0l To 0.02 Step 0.005 n=0 t=0 Do While t <16

n=n+l t=12.3*(1+r)^n Loop

50

本文来源:https://www.bwwdw.com/article/6nto.html

Top