当前位置:首页 >> 其它课程 >>

vb习题集和答案


第一章 选择题 1. VB 是一种面向对象的可视化程序设计语言,采取了( (A)事件驱动 (C)从主程序开始执行 2. 以下不属于 VB 的工作模式的是(c (A) 运行 3. (B)设计 A )的编程机制。

(B) 按过程顺序执行 (D) 按模块顺序执行 )模式。 (C) 编译 (D)中断

在 VB 集成环境创建 VB 应用程序时,除

了工具箱窗口、窗体窗口、属性窗口外,必不可少的窗口是 ( C ) 。 (B)立即窗口 B (C)代码窗口 ) 。 (C)\ (D)Windows (D)监视窗口

(A)窗体布局窗口 4.

保存新建工程时,默认的路径是( (A)My Documents (B)VB98

5.

将调试通过的 VB 工程经“文件”菜单的“生成.exe 文件”编译成.exe 后,将该可执行文件拿到其他机器 上不能运行的主要原因是( (A)运行的机器上无 VB 系统 (C)该可执行文件有病毒 A ) 。 (B)缺少.frm 窗体文件 (D)以上原因都不对 D ) 。

6. VB6.0 集成开发环境可以(

(A)编辑、调试、运行程序,但不能生成可执行程序 (B)编辑、调试、生成可执行程序,但不能运行程序 (C)编辑、生成可执行程序、运行程序,但不能调试 (D)编辑、调试、运行程序,也能生成可执行程序 7. VB6.0 集成环境的主窗口中不包含( (A)菜单栏 8. (B)状态栏 B ) 。 (C)标题栏 (D)工具栏 C ) 。

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

9.

下面四个选项中,不是 VB6.0 工具箱的标准控件的是( C

) 。

1

(A)滚动条 10. VB6.0 的( C (A)初级版 11.

(B)定时器

(C)多媒体

(D)框架

)版本,可供专业编程人员开发功能强大的组内分布式应用程序。 (B)学习版 A ) 。 (B)结构化程序设计语言 (D)可视化程序设计 B ) 。 (D)选择视图菜单中的“代码窗口” (C)单击工程资源管理器中的“查看代码”按钮 C ) 。 (C).bas (D).vbp (C)企业版 (D)专业版

英文缩写“OOP”的含义是( (A)面向对象程序设计 (C)事件驱动的编程机制

12.

不能打开代码窗口的操作是(

(A)双击窗体设计器的任意地方 (B)按下 F4 键 13. 标准模块的扩展名是( (A).frm 14.

(B).bmp ) 。

窗体文件的扩展名是( A (A).frm

(B).bmp ) 。

(C).bas

(D).vbp

15.

工程文件的扩展名是( D (A).frm

(B).vbg D ) 。

(C).bas

(D).vbp

16.

不能打开属性窗口的操作是(

(A)单击工具栏上的“属性窗口”按钮 (B)选择视图菜单中的“属性窗口” (C)按下 F4 键 17. 不能打开对象窗口的操作是( A (A)按下 F2 键 (C)按下 Shift+F7 组合键 18. 不能打开资源管理器窗口的是( (D)选择工程菜单中的“属性窗口” ) 。

(B)单击工程资源管理器中的“查看对象”按钮 (D)选择视图菜单中的“对象窗口” B ) 。

(A)单击工具栏上的“工程资源管理器”按钮 (B)在窗体上单击右键,从弹出的快捷菜单中选择“工程资源管理器”选项 (C)选择视图菜单中的“工程资源管理器” 19. (D)按 Ctrl+R B ) 。

下面四个选项中,不是工程资源管理器管理的文件是(

2

(A)窗体文件 20.

(B)图形文件

(C)标准模块文件 B

(D)工程文件 ) 。

与传统的程序设计语言相比,vb6 最突出的特点是( (A)结构化程序设计 (C)集成开发环境

(B)事件驱动编程机制 (D)程序调试技术 A ) 。

21. VB 窗体设计器的主要功能是( (A)建立用户界面 (C)画图 22.

(B)编写员程序代码 (D)显示文字 D ) 。 (D)添加模块

用标准工具栏中的工具按钮不能执行的操作是( (A)添加窗体 (B)添加工程

(C)打开工程 B ) 。

23.

下属选项中,属于 VB 的程序设计方法是( (A)面向对象、顺序驱动 (C)面向过程,事件驱动

(B)面向对象,事件驱动 (D)面向过程,顺序驱动

二、填空题 1. 当进入 VB 集成环境,发现没有显示“工具箱”窗口时,应选择( 选项,使“工具箱”窗口显示。 2. VB6.0 集成环境的主窗口由标题栏、菜单栏和(工具栏)组成。 3. VB6.0 集成环境有三种工作状态,工作状态显示在(标题栏 ) 。 ) 。 视图 )菜单的( 工具箱 )

4. VB6.0 提供了 3 种版本,这三种版本是(学习版,专业版,企业版

5. VB6.0 有设计、中断和运行三种工作状态,立即窗口不能在(运行)状态下使用。 三、简答题 1. 运行 VB6.0 需要什么样的最小硬件环境?只要能运行 Windows9x 或 Windows NT 并具有 140MB 以上的 硬盘空间即可。 2. 当正常安装 VB6.0 后,误把 Windows 子目录删除。当重新安装 Windows 后,是否要再安装 VB6.0?要 再安装 Visual Basic6.0。因为安装 VB6.0 时,有些 VB 程序系统自动安装在 Windows98 目录下,所以一 旦删除 Windows98 子目录,就必须再安装 VB6.0。 3. VB6.0 有学习版、专业版和企业版,怎样知道所安装的是哪个版本?在启动 VB6.0 的启动封面上,能显 示对应的版本。 3

4.

VB6.0 有多种类型的窗口,若想在设计时看到代码窗口,怎样操作? 法: (1)热键 F7 (2)―视图‖—> ―代码窗口‖

(3)在窗体窗口中双击任一控件或窗体本身 (4)从工程窗口中选择窗体或模块后单击―查看代码‖按钮。

5.

如何使各窗口显示或不显示?单击要操作窗口的“关闭”按钮时,则不显示该窗口;选择“视图”菜单 的对应的窗口命令显示所需的窗口。

6.

叙述 VB6.0 的特点。 VB 的特点: (1)具有面向对象的可视化设计工具; (2)事件驱动的编程机制; (3)提供了易学易用的应用程序集成开发环境; (4)结构化的程序设计语言; (5)支持多种数据库系统的访问; (6)Active 技术; (7)VB 6.0 在开发环境上、网络功能等的增强; (8)完备的 help 联机帮助功能。 第二章一.选择题

1.

假定已在窗体上画了多个控件,并有一个控件是活动的,为了在属性窗口中设置窗体的属性,预先执行 的操作是( A ) 。 (B)单击任一个控件 (D)双击窗体的标题栏 C ) ,它是应用程序的基石,是其它控件的容器。 (B)命令按钮 (D)标签

(A)单击窗体上没有控件的地方 (C)不执行任何操作 2. 在 VB 中最基本的对象是( (A)文本框 (C)窗体

4

3.

有程序代码如下:text1.text=“visual basic” 则:text1、text 和“visual basic”分别代表( (A)对象,值,属性 (C) 对象,属性,值 (B) 对象,方法,属性 (D) 属性,对象,值 A )不是面向对象系统所包含的三要素。 (D)方法

C

) 。

4. VB 是一种面向对象的程序设计语言, ( (A)变量 5. (B)事件 B

(C)属性

VB 的一个应用程序至少包括一个( ( ) 、对象相应的(

)文件,该文件存储窗体上使用的所有控件对象和有关的 )代码。

)过程和(

(A)模块、方法、事件、程序 (C)窗体、程序、属性、事件 6.

(B)窗体、属性、事件、程序 (D)窗体、属性、事件、方法 C ) 。

在 VB6.0 环境已有应用程序的情况下,要重新建立一个工程的操作是( (A)单击工具栏上的“添加工程”按钮

(B)在工程资源管理器窗口上单击右键,在弹出的快捷菜单中选择“新建工程”选项 (C)选择“文件”菜单中的“新建工程” (D)选择“视图”菜单中的“新建工程” 7. 为了把窗体上的某个控件变为活动,应执行的操作是( B (A)单击窗体的边框 (C)双击该控件 8. (B)单击该控件的内部 (D)双击窗体 C ) 。 ) 。

确定一个控件在窗体上的位置的属性是( (A)Width 和 Height (C)Top 和 Left

(B)Width 或 Height (D)Top 或 Left ) 。

9.

确定一个窗体或控件的大小的属性是( B (A)Width 和 Height (C)Top 和 Left

(B)Width 或 Height (D)Top 或 Left D )属性可以在程序运行时进行设置。 (C)Name (D)Left C )属性进行设置。

10.

对于窗体,下面( (A)MaxButton

(B)BorderStyle

11.

要使 Print 方法在 Form_Load 事件中起作用,要对窗体的(

5

(A)BackColor 12.

(B)BorderStyle

(C)AutoRedraw D

(D)Caption

要使标签控件显示时不覆盖其背景内容,要对( (A)BackColor (B)BorderStyle

)属性进行设置。 (D)BackStyle

(C)ForeColor A )属性设置。 (C)BackColor

13.

要使对象看得见而不可操作,要对( (A)Enabled (B)Visible D )属性。 (B)Visible

(D)Caption

14.

文本框没有( (A)Enabled

(C)BackColor B )属性。

(D)Caption

15.

不论任何控件,共同具有的是( (A)Text (B)Name

(C)ForeColor B

(D)Caption

16.

要使某控件在运行时不可见,应对( (A)Enabled (B)Visible

)属性进行设置。 (D)Caption B )属性设置

(C)BackColor

17.

要使窗体在运行时不可改变窗体的大小和没有最大化、最小化按钮,只要对下列( 就有效。 (A)MaxButton (B)BorderStyle (C)Width A (D)MinButton

18.

当运行程序时,系统自动执行启动窗体的( (A)Load (B)Click

)事件过程。 (D)GotFocus B ) 。

(C)Unload

19.

当文本框的 ScrollBars 属性设置了非零值,却没有效果,原因是( (A)文本框中没有内容 (C)文本框的 MultiLine 属性为 True

(B)文本框的 MultiLine 属性为 False (D)文本框的 Locked 属性为 True。 B ) 属性能使鼠标单击文本框而不触发文本框的 Click

20.

下面是文本框的四个属性, 在程序运行时, ( 事件。 (A)Visible (B)Enabled

(C)Locked A

(D)MultiLine )不能用程序代码设置属性值。 (D)Picture A ) 。

21.

下面四个选项都是 VB 中对象的属性名称, ( (A)Name (B)Enabled

(C)BackColor

22.

以下选项中“=”的左边是用户界面上的对象名,不正确的赋值语句是( (A)Form1=‖sdfs‖ (B)Command1=True

6

(C)Text1=‖abcd‖ 23. 以下叙述中正确的是( A ) 。

(D)Label1=‖等级考试‖

(A)窗体的 Name 属性指定窗体的名称,用来标识一个窗体 (B)窗体的 Name 属性的值是显示在窗体标题栏中的文本 (C)可以在运行期间改变对象的 Name 属性的值 (D)对象的 Name 属性值可以为空 24. 以下四个选项都是 VB 中对象的属性名称,在界面设计时, ( D (A)Name 25. (B)Enabled (C)WindowState ) 。 (C)Interval B ) 。 (D)Enabled )属性值的设置需要利用对话框。

(D)Picture

以下选项中,框架的控件值是(A (A)Caption (B)Value

26.

.以下选项中,不是布尔类型的属性是( (A)单选按钮的 Value (C)命令按钮的 Value

(B)复选框的 Value (D)Enabled

27.

要连续在窗体的不同位置上画出多个相同类型的控件,在用鼠标点击工具箱中控件之前,应该做的操作 是( C ) 。 (B)按下 Shift C (C)按下 Ctrl 键 (D)按下 F4 键

(A)按下 Alt 键 28. 以下选项中, ( (A)Caption 29.

)是窗体的特有属性。 (B)Visible (C)WindowState D )属性。 (D)MultiLine (D)Left

改变文本框的滚动条配备,需要先设置( (A)Visible (B)Enabled

(C)Locked

30.

下面四个选项, (D (A)MinButton

)不是窗体的属性。 (B)MaxButton A (C)Caption (D)ReSize

31.

下面四个选项, ( (A)Load

)是窗体的特有事件。 (C)Click (D)KeyPress B ) 。

(B)Locked

32.

假定窗体的名称(Name 属性)为 Form1,则把窗体的标题设置为“VBTest”的语句为( (A)Form1=‖VB Test‖ (B)Caption=‖VB Test‖

7

(C)Form1.Text=‖VB Test‖ 33. 为了保存一个 VB 应用程序,应当( D (A)只保存窗体文件

(D)Form1.Name=‖VB Test‖ ) 。

(B)分别保存工程文件和标准模块文件

(C)只保存工程文件(D)分别保存工程文件、窗体文件和标准模块文件 34. 为了装入一个 VB 应用程序,应当( C (A)只装入窗体文件 ) 。

(B)分别装入工程文件和标准模块文件

(C)只装入工程文件 (D)分别装入工程文件、窗体文件和标准模块文件 35. 命令按钮不能响应的事件是( (A)DblClick 36. A ) 。 (C)MouseDown C ) 。 (D)BackStyle B ) 。 (D)MouseUp

(B)Click

决定窗体标题栏上显示内容的属性是( (A)Text (B)Name

(C)Caption

37.

当窗体最小化时缩小为一个图标,设置这个图标的属性是( (A)MouseIcon (B)Icon (C)Picture D

(D)MousePointer )属性设置为 False。 (D)MaxButton

38.

为了仅取消窗体的最大化功能,需要把它的( (A)ControlBox (B)MinButton

(C)Enabled A ) 。 (C)Enabled

39.

决定窗体有无控制菜单的属性是( (A)ControlBox (B)MinButton

(D)MaxButton

40.

为了使文本框同时具有水平和垂直滚动条,应先把 MultiLine 属性设置为 True,然后再把 ScrollBars 属 性设置为( (A)0 D ) 。 (B)1 C ) 。 (C)SetFocus (D)LostFocus ) 。 (D)False C ) 。 (D)3 (C)2 (D)3

41.

使文本框获得焦点的方法是( (A)Change

(B)GotFocus

42.

为了使标签覆盖背景,应把 BackStyle 属性设置为( A (A)0 (B)1 (C)True

43.

为了使标签的内容居中显示,应把 AlignMent 属性设置为( (A)0 (B)1 (C)2

8

44.

决定标签内显示内容的属性是( (A)Text (B)Name

C

) 。 (C)Caption (D)Enabled

45.

为了在按下回车键时执行某个命令按钮的事件过程,需要把该命令按钮的一个属性设置为 True,这个属 性是( (A)Value B ) 。 (B)Default (C)Cancel (D)Enabled

46.

为了在按下 ESC 键时执行某个命令按钮的事件过程,需要把该命令按钮的一个属性设置为 True,这个 属性是( (A)Value C ) 。 (B)Default (C)Cancel D ) 。 (D)Value (D)Enabled

47.

下面四个选项中,不是文本框属性的是( (A)TabIndex (B)PassWordChar

(C)ScrollBars D ) 。

48.

以下能够触发文本框 Change 事件的操作是( (A)文本框失去焦点 (C)设置文本框的焦点

(B)文本框获得焦点 (D)改变文本框的内容 A ) 。 (C)Top (D)Name

49.

文本框的默认属性是( (A)Text

(B)Caption B ) 。

50.

标签的默认属性是( (A)Text

(B)Caption

(C)Top ) 。

(D)Name

51.

若要设置标签的背景颜色,使用的属性是( B (A)Color (B)BackColor

(C)ForeColor

(D)FontBold ) 。 (D)BackStyle

52.

若要设置文本框中所显示的文本颜色,使用的属性是( C (A)FillColor (B)BackColor B ) 。 (C)Scroll (C)ForeColor

53.

命令按钮能响应的事件是( (A)DblClick (B)Click

(D)Load

54.

下面选项中, ( (A)MultiLine

C )不是文本框的属性。 (B)MaxLength (C)TextBox (D)Loaded

二、填空题

9

1.

程序运行时,为了让命令按钮不可操作,并且呈现灰色,必须将其(Enabled

)属性设置为 False。 2. 3. 4. 5. 6. 7. 改变文本框的滚动条配备,需先设置 MultiLine 属性,然后设置( 文本框能返回 ASCII 码值的事件是( KeyPress) 。 当程序运行后,用鼠标双击对象时主要触发的事件是(DblClick) 。 文本框的控件值是( Text, ) ,命令按钮的控件值是( Value ) 。 事件 ) 。 ScrollBars )属性。

在 VB 中,由系统事先设定的,能被对象识别和响应的动作称为( 一个控件在窗体上的位置由( )属性决定。 Left )和(

Top )属性决定,其大小由(Width)和( Height

8. 9.

对象属性设置主要有两种方法,分别是(在属性窗口直接设置)和(在代码窗口中设置) 。 在程序代码中设置属性值的一般格式为(.[对象.]属性=属性值) 。 10. 当窗体的大小改变时,触发( ReSize)事件。 Ctrl )键,然后单击每个控件。 ) 、 (编写代码 )和(保

11. 12.

为了选择多个控件,可以按住(

在用 VB 开发应用程序时,一般需要(界面设计) 、 ( 属性设置 存和运行程序 )四步。 属性窗口 )设置,不能在( )和(

13. 14. 15.

控件和窗体的 Name 属性只能通过(

运行 vbp) 。

)期间设置。

在 VB 中,窗体文件和工程文件的扩展名分别是( frm 为了把一个 VB 应用程序装入内存,只要装入( 工程

)文件即可。 ) 、 (标准模块 窗体 ) ( 类模块 ) 。

16. VB 应用程序通常由 3 类模块组成,分别是( 窗体模块 17.

在刚建立工程时,使窗体上的所有控件具有相同的字体格式,应对( 进行设置。

)的(Font 系列 )属性

18.

当对文本框的 ScrollBars 属性设置为 2 (有垂直滚动条) ,但没有垂直滚动条显示时,是没有把 ( MultiLine )属性设置为 True 的原因。

19.

在代码窗口对窗体的 BoerderStyle、MaxButton 属性进行了设置,但运行后没有效果,原因是这些属性 (只能在属性窗口设置 ) 。

20.

当对命令按钮的 Picture 属性装入.bmp 图形文件后,此按钮上并没有显示所设置的图形,原因是没有对 ( Style )属性设置为 1(Graphical) 。

10

21.

要对文本框中已有的内容进行编辑,按下键盘上的按键,就是不起作用,原因是设置( Locked 属性为 True。 22.

)的

在窗体上已建立多个控件如 Text1、 Label1、 Command1, 若要使程序一运行焦点就定位在 Command1

控件上,应把 Command1 控件的( TabIndex )属性的值设置为 0。 23. 为了使标签能自动调整大小以显示全部文本内容,应把标签的( True。 24. 25. 假定有一个文本框,其名称为 Text1,为了使该文本框具有焦点,应执行的语句是( Text1.SetFocus ) 。 为了使一个标签透明且没有边框,必须把它的 BorderStyle 属性设置为( 属性设置为( 三、简答题 1. 2. 叙述建立一个完整的应用程序的过程。 当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。问该工程涉及到多少文件要保存?若 要保存该工程中的所有文件,正确的操作应先保存什么文件?再保存什么文件?若不这样做,系统会出 现什么信息? 3. 4. 5. 6. 7. 8. 假定在 Windows 环境中,要保存工程文件时,若不改变目录名,则系统默认的目录是什么? 为了使一个控件在运行时不可见,应对该控件的什么属性进行何种设置? 为了防止用户编辑文本框内的内容,应对该控件的什么属性进行何种设置? 为了使标签框的大小由 Caption 属性的值进行扩展或缩小,应对该控件的什么属性进行何种设置? VB6.0 提供的大量图形文件在那个目录下?若您的计算机上没有安装,则怎样安装这些图形? 在 VB6.0 中,命令按钮的显示形式可以有标准的或图形的两种选择,这通过什么属性来设置?若选择图 形的,则通过什么属性来装入图形?若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能 显示图形,而显示的是 Caption 属性设置的文字,怎样改正? 9. 标签和文本框的区别是什么? 0 ) 。 0 ) ,并把 BackStyle AutoSize )属性 设置为

10. 当窗体上有 3 个文本框和一个命令按钮,若程序运行时,要求焦点定位在私邸三个文本框(Text3)处, 应对何控件的什么属性进行何种设置? 11. 若要对窗体上的 3 个文本框输入数据,各控件焦点的移动可通过 Tab 键(系统本身具有的) ,也可以通过

11

回车键,则要对文本框的什么事件进行编程? 12. 当某文本框输入数据后(按了回车键) ,进行判断认为数据输入错,怎样删除原来数据?怎样使焦点回到 该文本框重新输入? 13. 当运行程序前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一 般放在什么事件中?例如,程序要将命令按钮定位在窗体的中央,请写出事件过程。 1. 设计界面、设置属性、编写代码、保存和运行程序 2. 涉及到 2 个文件需要保存。 先保存窗体文件, 再保存工程文件。 若先保存工程文件, 系统会先弹出 “文 件另存为”对话框,要求把窗体文件先保存。 3. 系统默认的目录是 VB98。 4. 将该控件的 Visible 属性设置为 False。 5. 将文本框的 Locked 属性设置为 True。 6. 将标签的 AutoSize 属性设置为 True。 7. 大量的图形文件存放在 Graphics 目录下。直接在带有 VB6.0 系统的光盘上找到 Graphics 子目录,将 其复制到硬盘的 VB 目录下。 8. 通过 Style 属性设置图形的或标准的。通过 Picture 属性来装入图形。不能显示图形是因为 Style 的值 设置了 Standard,只要改为 Graphical,一般将 Caption 的值设置为空。 9. 标签和文本框的共同点都可以在窗体上显示文字。不同点在于:标签的内容在 Caption 属性内,在窗 体上只能显示文字,不能编辑;文本框内容在 Text 属性内,在窗体上可直接对内容进行编辑。 10. 应将 Text3 控件的 TabIndex 属性设置为 0。 11. 对文本框的 KeyPress 事件编成。 例如, 当焦点在 Text1 时, 输入数据按 Enter 键后, 让焦点跳到 Text2 文本框,程序段如下: Private Sub Text1_KeyPress(KeyAscii as Integer) If KeyAscii=13 then Text2.SetFocus ? End If End Sub

12

12. 假定文本框的名称为 Text1,则事件过程如下: Private Sub Text1_KeyPress(KeyAscii as Integer) If KeyAscii=13 then If 出错条件判断成立 then Text1=‖‖ Text1.SetFocus End If ? End If End Sub 13. 这些代码一般放在窗体的 Load 事件过程中。将窗体定位在屏幕的中央,只能通过属性窗口对 Form1 窗口的 StartUpPosition 属性设置为 2(表示屏幕的中心) ,该属性不能在运行时设置。 要将按钮定位在窗体的中央,事件过程如下: Private Sub Form_Load() Command1.Left=Form1.ScaleWidth\2-command1.Width\2 Command1.Top=Form1.ScaleHeight\2-command1.Height\2 End Sub 第三章 一、选择题 1. 在一行上写多条语句时,每个语句之间用( (A) , 2. (B) : (C) 、 C B )符号分隔。

(D) ; )符号作为续行符。 (D)?

一个语句要在下一行继续写,用( (A)+ (B)A (C)_

3. 下面(

)是合法的变量名。 (B)123abc )是不合法的整常数。 (B)&O100 )是合法的字符常数。 (C)&H100 (D)%100 (C)integer (D)X-Y

(A)X_yz 4. 下面( D

(A)100 5. 下面( B

13

(A)ABC$ 6. 下面( A

(B)‖ABC‖

(C)’ABC’

(D)ABC

)是合法的单精度型变量。 (B)sum% (C)xinte$ (D)mm#

(A)num! 7. 下面( D

)是不合法的单精度常数。 (B)100.0 (C)1E+2 ) 。 (C)20 B ) 。 (D)2 (D)100.0D+2

(A)100! 8.

表达式 16/4-2^5*8/4 mod 5\2 的值为( B (A)14 (B)4

9.

数学关系 3≤x<10 表示成正确的 VB 表达式为*( (A)3<=x<10 (C)x>=3 or x<10

(B)3<=x and x<10 (D)3<=x and <10 C ) 。 (D)* D ) 。 (D)a*b/3*c*d

10.

/、\、Mod、*四个算术运算符中,优先级别最低的是( (A)\ (B)/ (C)Mod

11.

与数学表达式

ab 对应,VB 的不正确表达式是( 3cd
(B)a/3*b/c/d B )值。 (C)0.1234 ) 。 (C)198.56

(A)a*b/(3*c*d) 12.

(C)a*b/3/c/d

Rnd 函数不可能为下列( (A)0

(B)1

(D)0.0005

13.

Int(198.555*100+0.5)/100 的值是( C (A)198 (B)199.6

(D)200 B ) 。

14.

已知 A$=‖12345678‖,则表达式 Val(Left$(A$,4)+Mid$(A$,4,2))的值为( (A)123456 (B)123445 (C)1279

(D)‖123445‖ ) 。 (D)2000-3-1 C ) 。

15. Print DateAdd(―m‖,1,#1/30/2000#)语句显示的结果是( A (A)2000-2-29 16. (B)2000-2-28 (C)2000-2-30

表达式 DateDiff(‖d‖,#12/30/1999#,#1/13/2000#)的结果是( (A)1 (B)11 (C)14

(D)99

17.

表达式 Len(‖123 程序设计 ABC‖)的值是(A ) 。 (A)10 (B)14 (C)20 C ) 。 (D)17 C ) 。 (D)17

18.

表达式 LenB(‖123 程序设计 ABC‖)的值是( (A)10 (B)14 (C)20

19.

设 a=1,b=2,c=3,d=4,下面逻辑表达式的值为真的是(

14

(A)Sqr(d)>b 20.

(B)Not(c-b)<b

(C)d>c and b>a C ) 。 (D)Mod ) 。

(D)Abs(a-d)<c

在以下的运算符中,优先级最高的是( (A)/ (B)\ (C)^

21.

设 a=‖visual basic‖,下面使 b=‖basic‖的语句是( B (A)b=Left(a,8,12) (C)b=Right(a,5,5) (B)b=Mid(a,8,5) (D)b=Left(a,8,5)

22.

从键盘上输入两个字符串,分别保存在变量 str1、str2 中。确定第二个字符串在第一个字符串中起始位 置的函数是( (A)Left D ) 。 (B)Mid (C)String B (D)Instr ) 。

23.

设 a=2,b=3,c=4,d=5,表达式 a>b and c<=d or 2*a>c 的值是( (A)True (B)False (C)-1

(D)0 B ) 。

24.

设 a=2,b=3,c=4,d=5,表达式 3>2*b or a=c and b<>c or c>d 的值是( (A)True (B)False (C)-1 (D)0

25.

设 a=2,b=3,c=4,d=5,表达式 not a<=c or 4*c=b^2 and b<>a+c 的值是( (A)True (B)False (C)-1 (D)0

B

) 。

26.

假定 Picture1 和 Text1 分别为图片框和文本框的名称,下列不正确的语句是( (A)Print 25 (C)Text1.Print 25 (B)Picture1.Print 25 (D)Debug. Print 25 ) 。 (C)0 (D)1 C ) 。

C

) 。

27.

语句 Print 5*5\5/5 的输出结果是( B (A)5 (B)25

28.

语句 Print Sgn(-6^2)+Abs(-6^2)+Int(-6^2)的输出结果是( (A)-36 (B)1 (C)-1 ) 。 (C)6 B ) 。

(D)-72

29.

表达式 4+5\6*7/8 Mod 9 的值为(B (A)4 (B)5

(D)7

30.

设有整数 x,如果 Sgn(x)的值为-1,则 x 的值是( (A)整数 (C)等于 0 的整数 (B)大于 0 的整数 (D)小于 0 的整数

31.

可以同时删除字符串前导和尾部空白的函数是( C (A)Ltrim (B)Rtrim (C)Trim

) 。 (D)Mid

32.

m,n 是整数,且 n>m,在下面的选项中,能将 x 赋值为一个 m~n 之间(含 m,n)的任意数的语句是 15

( A

) 。 (B)x= Int(Rnd*n)+m (D)x=Int(Rnd*(n-m))+m ) 。 (D)错误表达式

(A)x=Int(Rnd*(n-m+1))+m (C)x=Int(Rnd*m)+n 33. VB6.0 表达式‖123‖+Abs(1)的值是( C (A)123-1 (B)1231

(C)124 D ) 。 (C)121 C

34. VB6.0 表达式‖12a‖+Abs(1)的值是( (A)12b 35. (B)12a1

(D)错误表达式 ) 。 (D)0

当用 Const a%=19.8 定义后,a 的值是( (A)19 (B)19.8

(C)20

二、填空题 1. 在 VB 中,1234、123456&、1.2346E+5、1.2346D+5 四个常数分别表示( 整型,长整型,单精度、双

精度 )类型。 2. 整型变量 x 中存放了一个两位数,要将两位数交换位置,例如,13 变成 31,实现的表达式是( (x mod

10)*10+x\10) 。 3. 数学表达式

a?b 的 VB 算术表达式为( (a+b)/(1/(c+5)-c*d/2) ) 。 1 1 ? cd c?5 2

4. 5. 6. 7. 8.

表示 x 是 5 的倍数或是 9 的倍数的逻辑表达式为( x mod 5=0 or x mod 9=0) 。 已知 a=3.5,b=5.0,c=2.5,d=True,则表达式:a>=0 and a+c>b+3 or not d 的值是( Int(-3.5)、Int (3.5)、Fix(-3.5)、Fix(3.5)、Round(-3.5)、Round(3.5)的值分别是( 表达式 Ucase(Mid(―abcdefgh‖,3,4))的值是(CDEF ) 。 在直角坐标系中, (x,y)是坐标系中任意点的位置,用 x 与 y 表示在第一象限或第三象限的表达式是 ( x*y>0 ) 。 false ) 。

-4,3,-3,3,-4,4 ) 。

9.

要 以 × × × × 年 × × 月 × × 日 形 式 显 示 当 前 机 器 内 日 期 的 Format 函 数 表 达 式 为 ( format(date,‖yyyy-mm-dd‖) ) 。 datediff(―d‖,date,‖2000-1-1‖)) 。

10. 11.

计算已近入 21 世纪有多少天的函数表达式是(

计 算 离 你 毕 业 ( 假 定 毕 业 时 间 为 2006 年 6 月 28 日 ) 还 有 多 少 个 星 期 的 函 数 表 达 式 是 (datediff(―w‖,date,‖2006-6-28‖) ) 。

12.

表示 s 字符变量是字母字符(大小写字母不区分)的逻辑表达式为(ucase(s)>=‖A‖ and ucase(s)<=‖Z‖ ) 。 7 ) 。

13. VB6.0 表达式 Len(Left("abcd‖,3)+Right(‖商丘师范学院‖,4) )的值是( 14. 数学式 2cos2y+e2x 的 VB6.0 表达式是(2*cos(2*y)+exp(2*x)) 。

16

15. 16.

产生一个在[-50,-5]范围内的随机负整数(包含-50 和-5)的表达式是(–int(rnd*46+5) 设 y 是整型变量,判断 y 为奇数的表达式是(y mod 2<>0 ) 。 0 ) 。 -35 ) 。

) 。

17. VB6.0 表达式 3\3*3 mod 3 的值为( 18.

表达式 Fix(-11.85)+Int(-23.01)的值是(

19. 在 VB 中,字符串常量要用(―‖)括起来,日期/时间型常量要用(##)括起来。 20. 在 VB6.0 中,字符采用(Unicode)编码方式。在这种编码方式中,一个中文字符或一个西文字符均视 为(一个)字符,每个字符用(2 )个字节编码。 21. 22. 23. 24. 25. 语句 Print Int( (12345.6789*100+0.5)/100)的输出结果是( 12345) 语句 Print ―25+32=‖;25+32 的输出结果是(25+32=57 ) 。 若 a=4,b=9,则语句 Print a>b mod 4 的输出结果是( true 语句 Print 语句 Print ―123‖+‖456‖+3 的输出结果是(123459 ―234‖+10+‖123‖的输出结果是( 367 ) 。 ) 。 ) 。

三、简答题 1. 说明下列哪些是 VB 合法的直接常量,分别指出它们是什么类型: (1)100.0 (2)%100 (8)‖1234‖ &H123 (3)1E1(4)123D3(5)123,456(6)0100 (12 )&0100 ( 7 ) ‖ASDF‖ (14 )

(9)#2000/10/7# (10)100#(11)π

(13 )&O78

(15)True(16)T

(17)&H12ag (18)-1123! (1)合法,单精度 (2)不合法 (3)合法,单精度(4)合法,双精度 ( 5 ) 123,456 (6)

合法,二进制整数(7)合法,字符型 不合法 (16)不合法

(8)不合法 (9)合法,日期型 (10)合法,单精度 (11) (14)合法,十六进制 (15)合法,逻辑型

(12)合法,八进制(13)不合法 (17)不合法

(18)合法,单精度

2.

下列符号中,哪些是 VB 合法的变量名? (1)a123 (6)XYZ (12)π (1)合法 (7)不合法 (2)合法 (3)不合法 (9)合法 (4)不合法 (5)不合法(6)合法 (12)不合法 (2)a12_3 (7)False (3)123_a (8)sin(x) (9)sinx (4)a 123 (5)Integer

(10)变量名(11)abcdefg

(8)不合法

(10)合法(11)合法

17

3.

把下列算术表达式写成 VB 表达式

(1)|x+y|+z5

abs(x+y)+z^5

(2)(1+xy)6

(1+x*y)^6(3)

10x ? 3 y xy

10*x+sqr(3*y))/(x*y)(4)

? b ? b 2 ? 4ac 2a

(-b+sqr(b*b-4*a*c))/(2*a)

( 5 )

1 1 1 1 ? 2 ? 3 1 r r r

1/(1/r1+1/r2+1/r3) ( 6 )

sin450+

e10 ? ln 10 x ? y ?1

sin(45*3.14/180)+(exp(10)+log(10))/sqr(x+y+1)

4.

根据条件写一个 VB 表达式: (1)产生一个‖C‖~‖L‖ 范围内的大写字符。 chr(int(rnd*10+67))

(2)产生一个 100~200(包括 100 和 200)范围内的正整数。 int(rnd*101+100) (3)已知直角坐标系中任意一个点(x,y) ,表示该点在第一或第三象限内。x*y>0 (4)表示 x 是 5 或 7 的倍数。x mod 5=0 or x mod 7=0 (5)将任意一个两位数 x 的个位数与十位数对换。例如, x=78,则表达式的应为 87。 10)*10+x\10 (6)将变量 x 的值按四舍五入保留小数点后两位。例如,x 的值为 123.2389,表达式的值为 123.24。 round(x*100)/100 (7)表示字符变量 C 是字母字符(大小写不区分) 。 (8)取字符变量 S 中第五个字符起的 6 个字符。 (9)表示 10≥x<20 的关系表达式。 (10)x、y 中有一个小于 z。 (11)x、y 都大于 z。 5. 写出下列表达式的值: (1)123+23 Mod 10\7+Asc(―A‖) (2)100+‖100‖ & 100 (3)Int(68.555*100+0.5)/100 ―200100‖ 68.56 87654 188 ucase(C)>=‖A‖ and ucase(C)<=‖Z‖ (x mod

Mid(s,5,6)

(x>=10) and (x<20)

x<z or y<z

x>z and y>z

(4)已知 A$=‖87654321‖,求表达式 Val(Left$(A$,4)+Mid$(A$,4,2))的值 (5)DateAdd(―m‖,1,#1/30/2000#) (6)Len(―VB 程序设计‖) 6 #2/29/2000#

18

6. 7. 8. 9.

利用 SHELL()函数,在 VB 程序中分别执行画图和 WORD 应用程序。略 VB 提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么? 哪种数据类型需要的内存容量最少,且可以存储例如 3.2345 这样的值? 将数字字符串转换为数值,用什么函数?判断是否是数字字符串,用什么函数?取字符串中的某几个字 符,用什么函数?大小写字母间的转换用什么函数? 略

10. 要使单精度变量 x、y、z 分别保留 1 位、2 位、3 位小数位,并在窗体显示,使用什么函数?如何写对应 的 Print 方法? 8. 单精度 9. val 函数,isnumeric 函数,mid 函数,ucase 或 lcase 函数 10. 用 format 函数,print format(x, ‖0.0‖),format(y, ‖0.00‖),format(z, ‖0.000‖) 第五章选择题 1. 如下数组声明语句, (B (A)Dim a[3,4] as integer (C)Dim a(n,n) as integer )正确。 (B)Dim a(3,4) as integer (D)Dim a(3 4) as integer

?1.1 2.2 3.3? ? ? 2. 要分配存放如下方阵 ? 4.4 5.5 6.6 ? ,可使用声明语句( C ? 7.7 8.8 9.9 ? ? ?
(A)Dim a(9) as single (C)Dim a(-1 to 1,-5 to -3) as single 3.

)来实现(不能浪费空间) 。.

(B)Dim a(3,3) as single (D)Dim a(-3 to -1,5 to 7) as integer A ) 。

数组声明语句 Dim a(3,-2 to 2,5) as integer 中,数组 a 包含的元素个数为( (A)120 (B)75 (C)60 (D)13 ) 。 (D)9 C ) 。 (D)24

4.

用语句 Dim a(-3 to 5) as integer 所定义的数组的元素个数是(D (A)6 (B)7 (C)8

5.

用语句 Dim a(3 to 5,-2 to2)所定义的数组的元素个数是( (A)20 (B)12 C (C)15

6.

下面的 B 中有( Dim B :

)个数组元素。

B=Array(1,2,3,4,5,6,7,8,9) (B)8 (C)9 (D)10

(A)任意多

一、 填空题 19

1. 2. 3.

控件数组的名字由( Name

)属性指定,而数组中的每个元素由( )类型。 )个数组元素。

Index

)属性指定。

由 Array 函数建立的数组的名字必须是( 变体 数组定义 Dim D(20) ,数组 D 有( 21

三、分析程序的运行结果

1. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: option base 1 private sub command1_click() dim a a=array(1,2,3,4) j=1 for i=4 to 1 step -1 s=s+a(i)*j j=j*10 next i print s end sub 程序运行后,单击 command1,输出结果为:1234

2. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: option base 1 private sub command1_click() dim a,b(3,3) a=array(1,2,3,4,5,6,7,8,9) for i=1 to 3 for j=1 to 3 b(i,j)=a(i*j) if j>=I then print tab(j*3);b(I,j); 20

next j print next I end sub 程序运行后,单击 command1,输出结果为: 1 2 4 3 6 9

3. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: option base 1 private sub command1_click() dim a%(3,3) for i=1 to 3 for j=1 to 3 if j>1 and i>1 then a(i,j)=a(a(i-1,j-1),a(i,j-1))+1 else a(i,j)=i*j end if print a(i,j);‖ ―; next j print next I end sub 1 2 2 3 2 3 1 3

程序运行后,单击 command1,输出结果为: 3

4. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: option base 1 private sub command1_click() dim a%(10),p(3) as integer k=5 for i=1 to 10 a(i)=i 21

next i for i=1 to 3 p(i)=a(i*i) next i for i=1 to 3 k=k+p(i)*2 next i print k end sub 程序运行后,单击 command1,输出结果为:33 5. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: option base 1 private sub command1_click() dim a%(4,4) for i=1 to 4 for j=1 to 4 a(i,j)=(i-1)*3+j next j next i for i=1 to 4 for j=1 to 4 print a(j,i); next j print next I end sub 1 2 4 7 5 8 10 11

3 6 7

9 12 10 13

程序运行后,单击 command1,输出结果为:4

6. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: option base 1 22

private sub command1_click() dim a%(5,5) for i=1 to 3 for j=1 to 4 if j>1 and i>1 then a(i,j)=i*j end if next j next i for n=1 to 2 for m=1 to 3 print a(m,n); next m print next n end sub 0 0 0 4 6

程序运行后,单击 command1,输出结果为:0

7. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim a%(5) for i=0 to 4 a(i)=i+1 t=i+1 if t=3 then print a(i); a(t-1)=a(i-2) else a(t)=a(i) endif if i=3 then a(i+1)=a(t-4) 23

a(4)=1 print a(i); next i end sub 程序运行后,单击 command1,输出结果为:1 2 3 1 4 1

8. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim a%(3,3) dim b b=array(1,2,3,4,5,6,7,8,9) j=1 for i=0 to 8 j=i mod 3 k=i\3 a(j,k)=b(i) next i k=1 for j=0 to 2 print tab(3*(j+1));a(k,j); next j end sub 程序运行后,单击 command1,输出结果为:2 5 8

9. 在窗体上画一个命令按钮 command1,一个文本框 text1,然后编写如下事件过程: private sub command1_click() dim b b=array(34,5,13,35,9,6,42) for i=1 to ubound(b,1) if b(i)>b(i-1) then x=b(i) for j=i-1 to 0 step -1 24

if b(j)>x then exit for b(j+1)=b(j) next j b(j+1)=x end if next i text1=”” for i=0 to ubound(b,1) text1=text1+str(b(i))+‖,‖ next i end sub 运行程序后,文本框 text1 中的内容是:42, 35, 34, 13, 9, 6, 5, 10. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim a(3,3) for i=0 to 3 for j=0 to 3 a(i,j)=(i+1)*10+j next j,i for i=0 to 3 for j=0 to 3 if i<j then x=a(i,j) :a(i,j)=a(j,i) : a(j,i)=x end if next j,i for i=0 to ubound(a,1) for j=0 to ubound(a,2) print a(i,j); next j print 10 20 30 40 25

next I end sub

11 12

21 22 23

31 32 33

41 42 43

运行程序后,文本框 text1 中的内容是:13

11. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim arr1%(10),arr2(10) n=3 for i=1 to 5 arr1(i)=i arr2(n)=2*n+i next i print arr2(n);arr1(n) end sub 程序运行后,单击 command1,输出结果为:11 3

12. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim m%(10) for k=1 to 10 m(k)=12-k next k x=6 print m(2+m(x)) end sub 程序运行后,单击 command1,输出结果为:4

13. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim b b=array(56,22,16,67,26,14,9,87) 26

k=3 do while k<ubound(b,1) b(k)=b(k+1) k=k+1 loop print b(5) end sub 程序运行后,单击 command1,输出结果为:9

14. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim b,a(2,4) b=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14) for i=0 to 2 for j=0 to 4 a(i,j)=b(i*(ubound(a,2)+1)+i) next j next i print b(i*(ubound(a,2)+1)-3) end sub 程序运行后,单击 command1,输出结果为:13

15. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim a(5 to 16) dim b b=array(1,2,3,4,5,6,7,8,9) for i=1 to 8 a(5+i)=b(i) 27

next i print a(7) end sub 程序运行后,单击 command1,输出结果为:3 16. 在窗体上画一个命令按钮 command1,然后编写如下事件过程: private sub command1_click() dim b,a(3,3) b=array(1,2,3,4,5,6,7,8,9) j=1 for i=0 to 8 k=i\3 : j=I mod 3

a(k,j)=b(i) print a(k,j); if j=2 then print next I end sub 1 4 2 3 5 6 8 9

程序运行后,单击 command1,输出结果为:7

17. 在窗体上画一个名称为 Command1 的命令按钮,然后编写如下程序: Private Sub Command1_Click() Dim i As Integer,j As Integer Dim a(10,10)As Integer For i=1 To 3 For j=1 To 3 a(i,j)=(i-1)*3+j Print a(i,j); Next j Print Next i

28

End Sub 程序运行后,单击命令按钮,窗体上显示的是 同 17 题

18. 在窗体上画一个名称为 Text1 的文本框和一个名称为 Command1 的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim array1(10,10) As Integer Dim i,j As Integer For i=1 To 3 For j=2 To 4 array1(i,j)=i+j Next j Next I Text1.Text=array1(2,3)+array1(3,4) End Sub 程序运行后,单击 command1,文本框中显示的结果为:12 四、简答题 1. 要分配存放 12 个元素的整形数组,下列数组声明(若无下界,按默认规定)哪些符合要求? (1)n=12 Dim a(1 to n)as integer (2)Dim a%() n=11 ReDim a(n) (3)Dim a%[2,3] (5)Dim a%(10) ReDim a(1 to 12) (7)Dim a%(2,3) 2. (4)Dim a(1,1,2) as integer (6)Dim a!() ReDim a(3,2)as integer (8)Dim a(1 to 3 1 to 4)as integer

已知下面的数组声明,写出它的数组名、数组类型、维数、各维的上下界、数组的大小,并按行的顺序 列出各元素。 Dim a(-1 to 2,3) as single

3.

静态数组和动态数组的区别是什么?在声明静态数组、重定义动态数组时的下标都可以用变量来表示 吗?

4. 5.

已声明了静态数组 a(3,4),能否在下面再用重定义动态数组 a(4,4)来重定义 A 数组的大小? 使用 ReDim 语句可以改变数组类型吗?

29

6. 7.

在 ReDim 语句中加了 Preserve 关键字,对重定义数组有何限制? 利用随机数生成两个四行四列的矩阵(数据不一定相同,前者范围在 30~70,后者为 101~135) 。要求: (1)将两个矩阵相加结果放入 C 矩阵中。 (2)将 a 矩阵转置。 (3)求 C 矩阵中元素的最大值和下标。 (4)以下三角形式显示 A 矩阵、上三角形式显示 B 矩阵。 (5)将 A 矩阵第一行与第三行对应元素交换位置,即第一行元素放到第三行,第三行元素放到第一行。 (6)将 A 矩阵两条对角线元素之和。 (7)将 A 矩阵按列的次序把各元素放入一位数组 D 中,显示结果。

8.

声明一个有 20 个元素的一维字符类型数组,要求: (1)由随机数形成小写字母构成的数组,每个元素的字符个数由随机数产生,范围 1~11。 (2)要求将生成的数组分四行显示。 (3)显示生成的字符数组中字符最多的元素。

9.

自定义一个职工类型,包含职工号、姓名和工资。声明一个职工类型的动态数组。输入 n 个职工的数据, 要求按工资递减的顺序排序,并显示排序的结果,每个职工一行显示三项信息。

1. (2) 、 (4) 、 (7)符合要求。 2. 数组名为 a、数组类型为单精度,二维数组,各维的下界分别为-1 和 0、上界分别为 2 和 3,数组的 大小为 4*4 共 16 个元素,各元素排列顺序如下: a(-1, 0) a(0, 0) a(1, 0) a(2, 0) a(-1, 1) a(0, 1) a(1, 1) a(2, 1) a(-1, 2) a(0, 2) a(1, 2) a(2, 2) a(-1, 3) a(0, 3) a(1, 3) a(2, 3)

3. 静态数组在声明数组时的下标必须是常数,以后不能改变其大小;动态数组在 Dim 声明时不要声明 数组的大小,在以后的程序中可以用 ReDim 语句重新声明数组的大小,ReDim 语句中的下标可以出现有确 定值的变量或表达式。 4. 已声明了的静态数组不能再用重定义语句来重新定义静态数组的大小。 5. 可以反复地改变数组的大小和数组的维数,但是不能改变数组的类型。 6. 在 ReDim 语句中加上了 Preserve 关键字,就只能重定义数组最后一维的大小,且根本不能改变数组

30

的维数。例如,如下语句: Dim a() ReDim a(3,4) ReDim Preserve a(4,5) 程序执行到 ReDim Preserve a(4,5)时显示“下标越界”出错信息,也就是只能改变第二个下标的 大小,而不能改变第一个下标的大小。 7. 利用随机数生成两个矩阵: Dim a%(1 to 4, 1 to 4), b%(1 to 4, 1 to 4), c%(1 to 4, 1 to 4) Private Sub Form_Click() For i=1 to 4 For j=1 to 4 a(i,j)=int(rnd*41+30) b(i,j)=int(rnd*35+101) next j, i End Sub (1)将两个矩阵相加结果放入矩阵 C 中: for i=1 to 4 for j=1 to 4 c(i,j)=a(i,j)+b(i,j) next j, i (2)将矩阵 a 转置: for i=1 to 4 for j=1 to i-1 t=a(i,j): next j, i (3)统计矩阵 c 最大值和下标: a(i,j)=a(j,i): a(j,i)=t

31

dim max%, maxi%, maxj% max=c(1,1): maxi=1: maxj=1 for i=1 to 4 for j=1 to 4 if c(i,j)>max then max=c(i,j): maxi=i: maxj=j end if next j, i (4)以下三角形式显示矩阵 a、上三角形式显示矩阵 b: 输出下三角元素: for i=1 to 4 for j=1 to i print a(i,j); space(4-len(a(i,j))); next j print next i 输出上三角元素: for i=1 to 4 for j=i to 4 print tab(j*4);b(i,j); next j print next i

(5)将矩阵 a 第一行与第三行对应元素交换位置,即第一行元素放在第三行;第三行元素放在第一 行: for j=1 to 4 t=a(1,j) : a(1,j)=a(3,j) : a(3,j)=t 32

next j (6)求矩阵 a 两条对角线之和: s=0 for i=1 to 4 s=s+a(i,i)+a(i,5-i) next i (7)将矩阵 a 按列的次序把各元素放入一维数组 d 中,显示结果: dim d%(1 to 16) ,k% for i=1 to 4 for j=1 to 4 k=(j-1)*4+i d(k)=a(i,j) next j, i 8. 声明一个有 20 个元素的一维字符类型数组,要求: (1)由随机数形成小写字母构成的数组,每个元素的字符个数由随机数产生,范围 1~11。 Dim st(1 to 20) as string, c as string*1 Dim i%, n% For i=1 to 20 n=int(rnd*11+1) for j=1 to n c=chr(int(rnd*26+97)) st(i)=st(i) & c next j print st(i) next i (2)要求将生成的数组分四行显示。

33

For i=1 to 20 Print st(i); space(15-len(st(i))); If i mod 5=0 then print Next i (3)显示生成的字符数组中字符最多的元素。 Maxlen=0 Maxstr=‖‖ For i=1 to 20 If len(st(i))>maxlen then Maxlen=len(st(i)) Maxstr=st(i) End if Next i Print maxlen, maxstr 9. 自定义一个职工类型,包含职工号、姓名和工资。声明一个职工类型的动态数组。输入 n 个职工的数 据,要求按工资递减的顺序排序,并显示排序的结果,每个职工一行显示三项信息。 Dim a() As zg, i% Private Sub Command1_Click() i=i+1 If i < n Then MsgBox ("人数超过"): Exit Sub With a(i) .gh = Val(Text1) .xm = Text2 .gz = Val(Text3) End With Text1 = "": Text2 = "": Text3 = ""

34

End Sub Private Sub Command2_Click() Picture1.Cls Dim j%, k%, t As zg For j = 1 To i - 1 For k = j + 1 To i If a(k).gz > a(k - 1).gz Then t = a(k): End If Next k Next j For j = 1 To i Picture1.Print a(j).gh; a(j).xm; a(j).gz Next j End Sub Private Sub Form_Load() Dim n% n = InputBox("输入人数") ReDim a(1 To n) i=0 End Sub 第六章 一、选择题 1. 下列叙述中正确的是( C ) 。 a(k) = a(k - 1): a(k - 1) = t

(A)在窗体的 Form_Load 事件中定义的变量是全局变量 (B)局部变量的作用域可以超出所定义的过程 (C)在某个 Sub 过程中定义的局部变量可以与其他事件过程中定义的局部变量同名,但其作用域只局 限于该过程。

35

(D)在调用过程时,所有局部变量被系统初始化为 0 2. 下列四个叙述中,错误的是(C ) 。

(A)过程内用 Dim 语句定义的变量,它的作用域是此过程 (B)过程内用 Static 语句定义的变量,它的生存期与整个过程的运行期相同 (C)过程内用 Dim 语句定义的变量,它的生存期与整个过程的运行期相同 (D)若在模块的“通用声明”中写上语句:Option Explicit,则该模块的所有变量必须先说明后引用 3. 在过程定义中用(C (A)Var 4. )表示形参的传值。 (B)ByDef (C)ByVal (D)Value

若已编写了一个 Sort 子过程,在该工程中有多个窗体,为了方便地调用 Sort 子过程,应该将该过程放在 ( B )中。 (B)标准模块 (C)类模块 (D)工程 )关

(A)窗体模块 5.

在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用( D 键字在过程中定义局部变量。 (A)Dim (B)Private D ) 。 (B)Sub f1(n%) as integer (D)Function f1(Byval n%) C ) 。 (C)Public (D)Static

6.

下面子过程语句说明合法的是( (A)Sub f1(Byval n%()) (C)Function f1%(f1%)

7.

要想从子过程调用后返回两个结果,下面子过程语句说明合法的是( (A)Sub f1(Byval n%, Byval m%) (C)Sub f1(n%, m%) (B)Sub f1(n%, Byval m%) (D)Sub f1(Byval B ) 。 n%, m%)

8.

在 VB 应用程序中,以下正确的描述是(

(A)过程的定义可以嵌套,但过程的调用不能嵌套 (B)过程的定义不可以嵌套,但过程的调用可以嵌套 (C)过程的定义和调用均不可以嵌套 (D)过程的定义和调用均可以嵌套 9. 以下叙述中错误的是( C ) 。

(A)一个工程中只能有一个 Sub Main 过程 (B)窗体的 Show 方法的作用是将指定的窗体装入内存并显示该窗体 (C)窗体的 Hide 方法和 Unload 方法的作用完全相同 (D)若工程文件中有多个窗体,可以根据需要指定一个窗体为启动窗体 36

10.

以下叙述中错误的是(

D ) 。

(A)如果过程被定义为 Static 类型,则该过程中的局部变量都是 Static 类型 (B)Sub 过程中不能嵌套定义 Sub 过程 (C)Sub 过程中可以嵌套调用 Sub 过程 (D)事件过程中可以像通用过程一样由用户定义过程名 11. 定义带可变参数的过程,使用的关键字是( C (A)Optional 12. (B)Option A ) 。 (C)ParamArray ) 。 (C)ParamArray (D)Private (D)Private

定义带可选参数的过程,使用的关键字是( (A)Optional (B)Option

二、填空题

1.

在过程定义的首部出现的变量名叫做(

形式

)参数,而在调用过程中传送给过程的(常数、变

量、数组元素、表达式)叫做( 实在 )参数。 2. 定义和调用函数或过程时参数传递的两种方法是(按值传递,按地址传递) 。

3. 在窗体的通用段用 Dim 语句定义的变量是(窗体)级变量,它只能在(本窗体)中使用。 4. 全局级过程在定义时可以默认,也可以使用关键字( Public )进行显示声明;窗体/模块级的过程声明时 要用关键字( Private) 。 5. 6. 用 ParamArray 关键字声明可变参数时,被声明的参数只能是(变体类型数组) 。 在带可选参数的过程中,使用(IsMissing )函数来测试可选参数是否被选。

三、分析运行结果

1. 阅读程序 Function f(a As Integer) Static c b = 0: b=b+1

c = c + 1: f = a + b + c End Function Private Sub command1_click() 37

Dim a As Integer a=2 For i = 1 To 3 Print f(a); Next i End Sub 程序运行后,单击命令按钮,输出结果为:4 2. 阅读程序 Sub s(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, b As Single a=5 b=4 s a, b Print a, b End Sub 程序运行后,单击命令按钮,输出结果为:1.25 3. 阅读程序 Function M(x%, y%) As Integer M = IIf(x > y, x, y) End Function Private Sub command1_click() Dim a As Integer, b As Integer a=1 b=2 Print M(a, b) 1 5 6

38

End Sub 程序运行后,单击命令按钮,输出结果为:2 4. 阅读程序 Sub Inc(a As Integer) Static x As Integer x=x+a Print x; End Sub Private Sub command1_click() Inc 2 Inc 3 Inc 4 End Sub 程序运行后,单击命令按钮,输出结果为:2 5. 阅读程序: Sub p(b() As Integer) For i = 1 To 4 b(i) = 2 * i Next i End Sub Private Sub command1_click() Dim a(1 To 4) As Integer a(1) = 5 a(2) = 6 a(3) = 7 a(4) = 8 p a() For i = 1 To 4 Print a(i); Next i 39 5 9

End Sub 程序运行后,单击命令按钮,输出结果为:2 6. 阅读程序: Function fun(ByVal num As Long) As Long Dim k As Long k=1 num = Abs(num) Do While num k = k * (num Mod 10) num = num \ 10 Loop fun = k End Function Private Sub command1_click() Dim n As Long, r As Long n = Val(InputBox("请输入一个数:")) r = fun(n) Print r End Sub

4

6

8

程序运行后,单击命令按钮,输入 1234,输出结果为:24 7. 阅读程序: Function func(a%, b%) As Integer Static m As Integer, i As Integer m=0 i=2 i=i+m+1 m=i+a+b func = m End Function Private Sub command1_click() Dim k%, m%, p% 40

k=4 m=1 p = func(k, m) Print p; p = func(k, m) Print p End Sub 程序运行后,单击命令按钮,输出结果为:8 8. 阅读程序: Dim a%, b%, c% Public Sub p1(x%, y%) Dim c% x = 2 * x: y = y + 2: c = x + y End Sub Public Sub p2(x%, ByVal y%) Dim c% x = 2 * x: y = y + 2: c = x + y End Sub Private Sub command1_click() a = 2: b = 4: c=6 8

Call p1(a, b) Print a, b, c Call p2(a, b) Print a, b, c End Sub 4 6 6 6 6

程序运行后,单击命令按钮,输出结果为:8

9. 阅读程序: Private Sub command1_click() Dim m%, i%, x%(10) 41

For i = 0 To 4 x(i) = i + 1 Next i For i = 1 To 2 Call proc(x()) Next i For i = 0 To 4 Print x(i) Next i End Sub Public Sub proc(a%()) Static i% Do a(i) = a(i) + a(i + 1) i=i+1 Loop While i < 2 End Sub 程序运行后,单击命令按钮,输出结果为:3 10. 阅读程序: Private Sub command1_click() Print p1(3, 7) End Sub Public Function p1!(x!, n%) If n = 0 Then p1 = 1 Else If n Mod 2 = 1 Then p1 = x * p1(x, n \ 2) Else p1 = p1(x, n \ 2) \ x 42 5 7 4 5

End If End If End Function 程序运行后,单击命令按钮,输出结果为:27 11. 阅读程序: Private Sub command1_click() Dim x%, y%, z%, w% x=9 y=8 z=2 w=6 Call s1(x, y, z, w) Print x; y; z; w End Sub Private Sub s1(a%, b%, ByVal c%, ByVal d%) a=a+1 b=b+2 c=c+3 d=d+4 End Sub 程序运行后,单击命令按钮,输出结果为:10 12. 阅读程序: Private Sub command1_click() Dim x%, y% x = 9: y=8 10 2 6

Call s1(5, 7, x, y) Print x; y End Sub Private Sub s1(a%, b%, ByVal c%, ByVal d%) c = c + a: d = d + b End Sub 程序运行后,单击命令按钮,输出结果为:9 13. 阅读程序: 43 8

Private Sub command1_click() Dim x%, y%, z% x = 5: y = 7: z = 0 Call s1(x, y, z) Print x; y; z End Sub Private Sub s1(ByVal a%, ByVal b%, c%) c=a+b End Sub 程序运行后,单击命令按钮,输出结果为:5 14. 阅读程序: Private i As Integer Private Sub abc() a$ = Chr(Asc("A") + i) Print a$; ";"; End Sub Private Sub command1_click() For i = 0 To 4 abc Next i End Sub 程序运行后,单击命令按钮,输出结果为:A;B;C;D;E; 15. 阅读程序: Private Sub abc() a$ = Chr(Asc("A") + i) Print a$; ";"; End Sub Private Sub command1_click() For i = 0 To 4 abc Next i End Sub 程序运行后,单击命令按钮,输出结果为:A;A;A;A;A; 44 7 12

16. 阅读程序: Function M(x%, y%) As Integer M = IIf(x > y, x, y) End Function Private Sub command1_click() Dim a As Integer, b As Integer a = 100 b = 200 Print M(a, b) End Sub 程序运行后,单击命令按钮,输出结果为:200 17. 阅读程序: Private i As Integer Private Sub abc() a$ = Chr(Asc("A") + i) b$ = Chr(Asc("Z") - x) Print a$ & b$; ";"; End Sub Private Sub command1_click() Dim x As Integer For i = 0 To 4 x=x+1 abc Next i End Sub 程序运行后,单击命令按钮,输出结果为:AZ;BZ;CZ;DZ;EZ; 四、简答题 1. 2. 3. 4. 子过程与函数过程的异同点是什么? 什么是形参?什么事实参? 调用子过程或函数过程时,实参与形参的对应关系如何?应注意什么问题? 值传递与地址传递的选择与其特点是什么?

45

5.

在 VB 中,形参若是数组,不要说明数组元素的个数,即以数组名和圆括号表示,在过程体内如何表示 数组的上下界?

6. 7. 8.

在 Form1 窗体通用声明部分声明的变量,可否在 Form2 窗体中的过程被访问? 要使变量在某事件过程中保值,有哪几种变量声明的方法? 指出下面过程语句说明中的错误: (1)Sub f1(n%) as integer (3)Sub f1(ByVal n%() ) (2)Function f1%(f1%) (4)Sub f1(x(i)as integer)

9.

已知有如下求两个平方数和的 fsum 子过程: Public Sub fsum(sum%, byval m%, byval n%) Sum=m*m+n*n End Sub 在事件过程中有如下变量声明: Dim a%,b%,c! a=10 b=20 则指出如下过程调用语句错误所在: (1)fsum 3,4,5 (3)fsum a+b, a, b (2)fsum c, a, b (4)call fsum(sqr(c), sqr(a), sqr(b)) (5)call fsum c, a, b

1. 子过程和函数过程的相同点:函数过程和子过程都是功能相对独立的一种子过程结构,它们有各自的 过程头、变量声明和过程体。在程序中使用它们不但可以避免频繁的书写重复的程序语句,缩短代码,而且 使程序条理清晰,容易阅读。 子过程和函数过程的不同点: (1)过程声明的关键字不同,子过程用 Sub,函数过程用 Function。 (2)子过程名无值就无类型声明,函数过程有值就有类型声明。 (3)函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值一次;而子过程名在过程内 不能赋值。 (4)调用方式不同,子过程是一句独立的语句,可用 call 子过程名或省略 call 直接以子过程名调用;函 数过程不是一句独立的语句,是一个函数值,必须参与表达式的运算。 (5)一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数定义的形式,并在子过程的

46

形参表中增加一个地址传递的形参来传递结果。但反过来,用一个函数过程去替代一个子过程,有时是不容 易实现的。 2. 形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个数、类型、位置,形参的名字 并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。 形参不能是常量、表达式或数组元素,只能是变量。 实参是调用子过程时提供给过程形参的初始值或通过过程体处理过后获得的结果。 3. 调用时用实参代替形参,实参与形参在个数、位置、类型一一对应,但实参与形参名相同与否无关。 VB 在调用过程时,提供了命名参数的功能,在调用时使用形参名,而位置可任意;同时 VB 还提供了 可选参数的功能,也就是实参与形参个数不一定相等。 4. 仅要从调用者获得初值,应使用值传递;要将过程运算结果提供给调用者,必须是地址传递。数组、 记录类型和对象必须使用地址传递。 调用时地址传递对应的实参不应该是表达式或常量。在 VB 中尽管不显示出错信息,但得不到所期望的 值。 能够用值传递实现的,尽量用值传递,减少过程间关联,有利于程序的调试。 5. 利用 VB 提供的函数 LBound 和 UBound 确定数组的上、下界。 6. 可以,条件是要在 Form1 窗体通用声明部分声明的变量是 Public;Form2 窗体中的过程被访问时变量 名前加 Form1。 7.方法一:在标准模块中声明 Public 的变量; 方法二:在某事件过程所在的窗体的通用声明段声明变量; 方法三:在某事件过程以 Static 关键字声明的变量。 8. (1)错误为 Sub 子过程名无返回值,也就没有类型 (2)函数名与形参名相同 (3)形参 n 为数组,不允许声明为 ByVal 值传递 (4)形参 x(i)不允许为数组元素 9. (1)fsum 子过程的第一个形参是地址传递,因此对应的实参 3 不应该是常量。 (2)fsum 子过程的第一个形参是整型且地址传递,对应得实参 c 是单精度,类型不匹配。 (3)fsum 子过程的第一个形参是地址传递,因此对应的实参 a+b 不应该是表达式。 (4)fsum 子过程的第一个形参是地址传递,因此对应的实参(sqr(c) 不应该是表达式。 (5)用 call 语句调用 fsum 子过程,必须加圆括号括起实参。. 第七章 1. 一、选择题 )事件中判断。 (D)KeyPress 47

要判断在文本框中是否按了 Enter 键,应在文本框的( D (A)Change (B)KeyDown (C)Click

2.

以下选项中,没有 Caption 属性的对象是( (A)命令按钮 (B)组合框 D ) 。

B

) 。 (D)单选框

(C)窗体

3.

计时器控件的控件值是( (A)Caption

(B)Value B

(C)Interval

(D)Enabled

4.

以下选项中, ( (A)DragDrop

)不是鼠标操作事件。 (B)GotFocus (C)DblClick (D)MouseDown

5.

以下选项中, ( (A)KeyUp

A )是键盘操作事件。 (B)GotFocus (C)DblClick B ) 。 (D)Value A ) 。 (D)MouseDown

6.

设置复选框或单选按钮标题对齐方式的属性是( (A)Align (B)AlignMent

(C)Sorted

7.

为了使列表框中的项目分为多列显示,需要设置的属性为( (A)Columns (B)Style (C)List

(D)MultiLine

8.

要想不使用 shift 或 ctrl 键就能在列表框中同时选择多个项目,则应把该列表框的 MultiSelect 属性设置为 ( B ) 。 (B)1 (C)2 D ) 。 (D)RemoveItem )事件。 (D)SetFocus )属性获得。 (D)ListCount (D)其他

(A)0 9.

删除列表框中指定的项目所使用的方法为( (A)Move (B)Remove

(C)Clear C

10.

当拖动滚动条中的滚动块时,将触发滚动条的( (A)Move (B)Change

(C)Scroll C

11.

用户在组合框中输入或选择的数据可以通过( (A)List (B)ListIndex

(C)Text B ) 。

12.

下列控件中,没有 Caption 属性的是( (A)框架 (B)文本框 B

(C)复选框 ) 。

(D)单选按钮

13.

复选框的 Value 属性为 1 时,表示( (A)复选框未被选中 (C)复选框内有灰色的勾

(B)复选框被选中 (D)复选框操作有错误 C ) 。 (C)FontBold A (D)FontSize )语句。

14.

用来设置粗体字的属性是( (A)FontItalic

(B)FontName

15.

将数据项“china”添加到列表框 List1 中成为第一项应使用( (A)List1.AddItem ―china‖, 0

(B)List1.AddItem ―china‖, 1 48

(C)List1.AddItem 0, 16.

―china‖

(D)List1.AddItem 1, ―china‖ B ) 。

引用列表框 List1 最后一个数据项应使用( (A)List1.List(List1.ListCount) (C)List1.List(ListCount)

(B)List1.List(List1.ListCount-1) (D)List1.List(ListCount-1) )语句。

17.

假如列表框 List1 有四个数据项,那么把数据项‖china‖添加到列表框的最后,应使用( D (A)List1.AddItem ―china‖, 3 (B)List1.AddItem ―china‖, List1.ListCount-1 (C)List1.AddItem 3, ―china‖

(D)List1.AddItem ―china‖, List1.ListCount 18. 假如列表框 List1 中没有被选定的项目,则执行 List1.RemoveItem List1.ListIndex 语句的结果是 ( D ) 。 (B)移去最后一项 (D)以上都不对

(A)移去第一项 (C)移去最后加入列表的一项

19. 假如列表框 List1 中只有一个被选定的项目,则执行 Debug.print List1.Selected(List1.ListIndex)语句的结果 是( B ) 。

(A)在 Debug 窗口中输出被选定的项目的索引值 (B)在 Debug 窗口中输出 True (C)在窗体上输出被选定的项目的索引值 20 在下列说法中,正确的是( B ) 。 (D)在窗体上输出 True

(A)通过适当的设置,可以在程序运行期间,让时钟控件显示在窗体上 (B)在列表框中不能进行多项选择 (C)框架也有 click 和 dblclick 事件

(D)在列表框中能够将项目按字母顺序从大到小排列 21. 为了防止用户随意将光标置于控件之上,应( D (A)将控件的 TabIndex 属性设置为 0 (B)将控件的 TabStop 属性设置为 True (C)将控件的 TabStop 属性设置为 False (D)将控件的 Enabled 属性设置为 False 22. 下列( D )控件没有 Min、Max 和 Value 属性。 (B)ProgressBar (C)UpDown (D)SSTab ) 。

(A)Slider 23.

当 Slider 控件的 Min 属性为 1,Max 属性为 40,TickFrequency 属性为 4 时,滑标上的可见刻度数是 49



A

)个,划分了( (B)21,20

)等分。 (C)31,30 (D)41,40

(A)11,10 24.

一个 UpDown 控件与文本框“捆绑”在一起,其 Min、Max、Value 和 Increment 分别为 0、10、9 和 3, 并且选定了“换行”功能,当用鼠标单击向上的箭头时,文本框中的值应是( A (A)10 (B)12 (C)0 D ) 。 (D)2 ) 。

25.

下面关于拖放和 OLE 拖放的叙述中,正确的是(

(A)只要对控件的属性进行适当的设置,就能将控件从一个地方移动到另一个地方 (B)文本框、图片框和列表框完全支持自动 OLE 拖放 (C)当 OLEDropMode 属性为 1 时,控件自动实现 OLE“放”操作 (D)当控件的 DragMode 设置为 1 时,它不能接受 Click 和 MouseDown 事件 26. 在下面关于常用的 ActiveX 控件的说法中,正确的是( B ) 。

(A)在 Animation 控件中,当用 Open 方法打开 AVI 文件后直接自动播放 (B)Slider 控件有 Scroll 和 Change 事件 (C)UpDown 不能与 Slider“捆绑” (D)选项卡只可以出现在控件的顶端 27. 当用户按下并且释放一个键后会触发 KeyPress、KeyUp 和 KeyDown 事件,这三个事件发生的顺序是 ( B ) 。

(A)KeyPress、KeyDown、KeyUp (B)KeyDown 、KeyPress、KeyUp (C)KeyDown、KeyUp、KeyPress 28. (D)没有规律 D ) 。

在下列关于键盘事件的描述中,正确的是(

(A)按下键盘上的任意一个键,都会引发 KeyPress 事件 (B)大键盘上的“1”键和数字键盘的“1”键的 KeyCode 码相同 (C)KeyDown 和 KeyUp 事件过程中有 KeyAscii 参数 (D)大键盘上的“4”键的上档字符是“$” ,当同时按下 Shift 和大键盘上的“4”键时,KeyPress 事 件过程中的 KeyAscii 参数值是“$‖的 ASCII 值 29. 在 KeyDown 和 KeyUp 事件过程中,能用来检查 Ctrl 和 F3 是否同时按下的表达式为 ( (A)(Button=vbCtrlMask) And (KeyCode=vbKeyF3) (B)KeyCode=vbKeyControl+vbKeyF3 (C)(kEYcODE=vbKeyF3) And (Shift And vbCtrlMask) 50 C ) 。

(D)(Shift And vbCtrlMask) And (KeyCode And vbKeyF3) 30. 确保文本框中输入的全部是数字的最佳方法是( D ) 。

(A)在 KeyDown 或 KeyUp 事件过程中摒弃非数字输入 (B) 在 Validate 事件过程中利用 IsNumeric 事件过程中摒弃非数字输入 31. 当用户将焦点移动到另一个应用程序时,当前应用程序的活动窗体将( (A)发生 DeActivate 事件 (C)发生 LostFocus 事件 32. (B)发生 DeActivate 和 LostFocus 事件 (D)DeActivate 和 LostFocus 事件都不发生 C ) 。 (D)文本框 ) 。 (D)Style D ) 。 (D)Interval D ) 。 (C) 在 Change 事件过程中利用 IsNumeric (D) 在 KeyPress

只能用来显示字符信息的控件是( (A)图像框 (B)图片框

(C)标签 B

33.

确定复选框是否被选中,应访问的属性是( (A)Selected (B)Value

(C)Checked

34.

要设置计时器控件的定时时间,需设置的属性是( (A)Value (B)Caption

(C)Enabled A) 。

35.

不能触发滚动条 Change 事件的操作是( (A)拖动滚动条中滑块 (C)单击滚动条两端箭头

(B)单击滚动条中滑块 (D)单击箭头与滑块之间的滚动条 ) 。

36.

计时器控件,如果希望每秒产生 10 个事件,则要将 Interval 属性的值设置为(C (A)1 (B)10 (C)100 (D)1000

37.

在窗体上画两个单选按钮 Option1、Option2 和一个复选框 Chech1,要求程序运行时,Option1 单选按钮 和 Check1 复选框被选中,为了完成要求而要使用的语句序列是( (A)Option1.Value=True (B)Option1.Value=True (C)Option2.Value=False (D)Option1.Value=True : : Check1.Value=False Check1.Value=True D ) 。

: Check1.Value=True : Check1.Value=1 ) 。

38.

以下叙述中错误的是( C

(A)在 KeyUp 和 KeyDown 事件过程中,从键盘上输入 A 或 a 被视作相同的字母 (B)在 KeyUp 和 KeyDown 事件过程中,将键盘上的“1”和右侧小键盘上的“1”视作不同的数字(即 具有不同的 KeyCode) (C)KeyPress 事件中不能识别键盘上某个键的按下与释放 51

(D)KeyPress 事件中能识别键盘上某个键的按下与释放 39. 不能作为容器使用的对象是(C) 。 (A)Picture 40. (B)Frame ) 。 (C)Image (D)Label (C)Image (D)Form

能作为容器使用的对象是( A (A)Picture (B)TextBox ) 。

41.

滚动条的默认属性是( C (A)Min (B)Max

(C)Value C ) 。 (C)KeyPress C ) 。 (C)Cls

(D)Name

42.

文本框能返回 ASCII 码值的事件是( (A)KeyDown (B)KeyUp

(D)KeyMove

43.

下面选项中,不能用于列表框控件的方法是( (A)AddItem (B)RemoveItem

(D)Clear

44.

组合框有 3 种风格,可以通过( C (A)BackStyle (B)BorderStyle B

)属性改变组合框的风格。 (C)Style )属性。 (D)Max (D)Sorted

45.

若要获得滚动条的当前值,可访问( (A)Min (B)Value

(C)LargeChange ) 。

46. 关于鼠标的 MouseDown 事件下列说法正确的是( C (A)MouseDown 事件不能判断鼠标的位置 (B)MouseDown 事件的 Button 参数是用来判断组合键的 (C)MouseDown 事件可以判断用户是否使用组合键 (D)MouseDown 事件是鼠标向下移动时被触发的事件 47.

在窗体上画一个文本框和一个命令按钮,并把窗体的 KeyPreview 属性设置为 True,然后编写如下代码: Dim SaveAll as string Private Sub Command1_Click() Text1.Text=Ucase(SaveAll) End Sub Private Sub Form_KeyPress(KeyAscii as integer) SaveAll=SaveAll+Chr(KeyAscii) End Sub 程序运行后,在键盘上输入‖abcdefg‖,单击命令按钮,则文本框中显示的内容为( (A)abcdefg (B)不显示任何信息 52 C ) 。

(C)ABCDEFG 48.

(D)出错

在窗体上画一个文本框和一个命令按钮, 并把窗体的 KeyPreview 属性设置为 False, 然后编写如下代码: Dim SaveAll as string Private Sub Command1_Click() Text1.Text=Ucase(SaveAll) End Sub Private Sub Form_KeyPress(KeyAscii as integer) SaveAll=SaveAll+Chr(KeyAscii) End Sub 程序运行后,在键盘上输入‖abcdefg‖,单击命令按钮,则文本框中显示的内容为( (A)abcdefg (B)不显示任何信息 (C)ABCDEFG (D)出错 B ) 。

49.

在窗体上画一个文本框,再编写如下事件过程: Private Sub Text1_KeyPress(KeyAscii as integer) Dim ch as string Ch=Chr(KeyAscii) KeyAscii=ASC(Ucase(ch)) Text1.Text=string(6, KeyAscii) End Sub 程序运行后,如果在键盘上输入字母‖a‖,则文本框中显示的内容为( (A)a (B)A (C)aaaaaaa D ) 。

(D)AAAAAAA

50.

把窗体的 KeyPreview 属性设置为 True,然后编写如下代码: Private Sub Form_KeyDown(KeyCode as integer, Shift as integer) Print Chr(KeyCode) End Sub Private Sub Form_KeyUp(KeyCode as integer, Shift as integer) Print Chr(KeyCode+2) End Sub 程序运行后,在键盘上 a 按‖A‖键,则输出结果为( C (A)A A (B)A B (C)A C ) 。 (D)A D 53

51.

编写如下事件过程: Private Sub Form_MouseDown(Button as integer, Shift as integer, x as single, y as single) If shift=6 And Button=2 then print ―BBBB‖ End Sub 程序运行后,为了在窗体上输出‖BBBB‖,应执行的操作为( D ) 。

(A)同时按下 Shift 键和鼠标左键 (B)同时按下 Ctrl、Alt 键和鼠标左键 (C)同时按下 Shift 键和鼠标右键 (D)同时按下 Ctrl、Alt 键和鼠标右键 52. 当一个对象的 DragOver 事件被触发时,其 State 参数值为 1,则表示鼠标正( B (A)进入 53. (B)退出 (C)位于 (D)不确定 )对象的区域。

在 Form1 窗体上有两个命令按钮 Command1、Command2,程序代码如下: Private Sub Form_Load() Command1.DragMode=0 Command2.DragMode=0 End Sub Private Sub Command1_Click() Command2.Drag 1 End Sub 程序运行后,用鼠标单击命令按钮 Command1 之后,鼠标的位置是( (A)在 Command1 上 (C)在窗体上 (B)在 Command2 上 (D)以上都不正确 B ) 。

54.

在窗体上有两个命令按钮 cmd1、cmd2,如果在 cmd1 上按下鼠标左键,然后鼠标移动到 cmd2 上松开, 这一操作将触发三个鼠标事件:MouseDown、MouseUp 和 MouseMove 事件。在下面选项中,正确的是 ( B ) 。

(A)MouseDown 在 cmd1 上发生,MouseMove 在窗体上发生,MouseUp 在 cmd2 上发生 (B)MouseDown、MouseMove 和 MouseUp 都在 cmd1 上发生 (C)MouseDown、MouseMove 和 MouseUp 都在 cmd2 上发生 (D)MouseDown 在 cmd1 上发生,MouseUp 在 cmd2 上发生,MouseMove 在 cmd1、窗体和 cmd2 上 依次发生

二、填空题 54

1. VB 中的控件包括三类,分别是(标准控件、ActiveX 控件、可插入对象 2. 3. 4. 计时器事件之间的时间间隔通过( Interval)属性设置。

) 。

有时候需要暂时关闭计时器,这可以通过( Enabled 组合框有三种不同的类型,这 3 种类型是( ( Style )属性设置为( 0 ) 、 (1 ) 、 ( 2

)属性来实现。

下拉式组合框、简单组合框、下拉式列表框, ) ,分别把 )来实现。 下拉式列表框 ) 。

5. 6. 7. 8. 9.

在 3 种不同的组合框中,只能选择而不能输入数据的组合框是(

复选框的(Value )属性设置为 2—Grayed 时,变成灰色,禁止用户选择。 (AlignMent )属性设置为 1,单选按钮和复选框的标题显示在左边。 ( Style )属性设置为 1,单选按钮和复选框以图形方式显示。 在程序运行时,如果将框架的( Enabled )属性设为 False,则框架的标题呈灰色,表示框架内的所有对 象均被屏蔽,不允许用户对其进行操作。

10. 11. 12. 13. 14.

列表框中项目的序号是从( ( ListCount-1

0

)开始的。

)表示列表框中最后一项的序号。

(Clear )方法可清除列表框的所有内容。 列表框中的(List,Selected )属性是数组。 组合框是组合了文本框和列表框的特性而形成的一种控件, (下拉式列表框)风格的组合框不允许用户 输入列表框中没有的项。

15. 16. 17. 18. 19. 20.

滚动条响应的重要事件有( Scroll,Change) 。 当用户单击滚动条的空白处时,滑块移动的增量值由(LargeChange)属性决定。 滚动条产生 Change 事件是因为(Value )值改变了。 如果要每隔 15s 产生一个 Timer 事件,则 Interval 属性应设置为( 15000 在设计状态,由 Tabs 和(TabsPerRow ) 。

)属性决定 SSTab 控件中的选项卡总行数。

当用户单击鼠标右键时, MouseDown 、 MouseUp 和 MouseMove 事件过程中的 Button 参数值为 ( 2) 。

21.

当用户同时按下 Ctrl 和 Shift 键并单击鼠标时, MouseDown、 MouseUp 和 MouseMove 事件过程中的 Shift 参数值为( 3 ) 。 )属性为 vbCustom,再设置( MouseIcon )

22.

要改变鼠标的形状,必须先设置( MousePointer 属性。

55

23. 24.

只要将 MousePointer 属性设置为(

0

) ,鼠标指针就恢复原样。

如果窗体的 (KeyPreview ) 属性设置为 True, 则控件的 KeyPress 事件过程可以接收到在窗体的 KeyPress 过程中修改过的 KeyAscii 值。

25. 26.

控件的( DragMode)属性设置为 1 时启动自动拖放模式。 当源对象被拖动到目标对象上方时,在目标对象上将引发( DragOver ( DragDrop)事件。 )事件,释放 时又会引发

27. 28. 29. 30.

控件的(DragIcon)属性决定控件被拖动时显示的图标。 从列表框中删除一个项目使用的方法是( RemoveItem ) 。 Clear ) 。 ) 。

向列表框添加项目所使用的方法是( AddItem

使用代码从列表框中删除所有项目所使用的方法是(

31 在执行 KeyPress 事件过程中 KeyAscii 是所按键的(AscII 码)值对于有上档字符和下挡字符的键当执行 KeyDown 事件过程时 KeyCode 是(下档键 )字符的(AscII 码)值。 32. 为了定义自己的鼠标光标,首先将( MousePointer )属性设置为(99) ,然后把(MouseIcon)属性设 置为一个图标文件。 33. 为了执行自动拖放,必须把( DragMode 放,必须把该属性设置为( 34. 0 ) 。 1,2,3 )时,分别代表(Shift、Ctrl、Alt) )属性事件设置为( 1 ) ;而为了执行手工拖

在 KeyDown 和 KeyUp 事件过程中,当参数 Shift 的值为( 键。

35.

在 MouseDown 和 MouseUp 事件过程中,当参数 Button 的值为( 1 代表(左键、右键、中键)键。

) 、 ( 2

) 、 (

3 )时,分别

36. 37.

在 MouseDown 事件中,当 Shift 参数值为 2 时,表明是按( 右)键产生的。 在命令按钮上按下鼠标按钮时,所触发的事件是( MouseDown ) ,释放鼠标按钮时所触发的事件是 ( MouseUp ) 。

三、简答题

1. 2. 3. 4.

VB 中的控件有几种?它们的区别是什么? “工程”菜单中的“部件”命令和“引用”命令的作用有什么区别? 框架的作用是什么?如何在框架中建立控件? 有哪几种方法可以在列表框添加选项?列表框中的选项在程序运行期间能否修改? 56

5. 6. 7. 8. 9.

组合框有哪几种类型?能否用文本框加列表框实现组合框的功能? 如果时钟控件每 0.5 分钟发生一个 Timer 事件,则 Interval 属性应设置为多少? 在 VB 中实现动画有哪几种方法? 指出在何时发生对象的 MouseDown、MouseUp 和 MouseMove 事件? MouseDown 事件发生在 MouseUp 和 Click 事件之前,但 MouseUp 和 Click 事件发生的次序与对象有关。 请编写一个小程序测试在命令按钮和标签上 MouseDown、MouseUp 和 Click 事件发生的顺序。

10. 如何在程序运行期间改变鼠标的形状? 11. 在 KeyDown 事件过程中,如何检测 Ctrl 和 F3 是否同时按下? 12. KeyDown 与 KeyPress 事件的区别是什么? 13. 计算机键盘上的“4”键的上档字符是“$” ,当同时按下 shift 和键盘上的“4”键时,KeyPress 事件发 生了几次?过程中的值是多少? 14. 确保文本框中输入的全部是数字的最佳方法是什么? 15. 窗体的 KeyPreview 属性的作用是什么?当 KeyPreview 属性为 True 时从键盘输入的数据需经过那几个平 台才能到达文本框? 16. 如果在 KeyDown 事件过程中将 KeyCode 设置为 0,KeyPress 的 KeyAscii 参数会不会受影响? 17. 请说明键盘扫描代码(KeyAscii)与键盘码(KeyCode)的]区别。 18. 请说明普通拖放和 OLE 拖放的区别。 1. VB 中的控件有三种:标准控件、ActiveX 控件和可插入对象。 标准控件也称为 VB 的内置控件,总是出现在工具箱中,可以直接使用,不需要加载,也不能从工具箱 中删除,共 20 个。 ActiveX 控件是四种 ActiveX 部件之一,由 VB 或第三方开发商提供的控件。ActiveX 部件是可以重复使 用的编成代码和数据,是由用 ActiveX 技术创建的一个或多个对象所组成。用户在使用之前需用“工程”菜 单中的“部件”命令把它们加载到工具箱中,加载后可以像标准控件一样使用。另外,大多数 ActiveX 控件 具有属性页,可以简单地在属性页中设置属性,而不必在属性窗口中设置。 一个 Microsoft Excel 工作表或者一个 Microsoft Project 日历都是可插入对象。 因为这些对象能添加到工具 箱中,所以可把它们当作控件使用。其中一些对象还支持自动化(正式的 OLE 自动化) ,使用这种控件就可 以在 VB 中编程控制另一个应用程序对象。 2. “工程”菜单中的“部件”命令的作用是加载 ActiveX 控件,加载后工具箱中出现相应的图标。除了 ActiveX 控件之外,ActiveX 部件中还有 ActiveX.DLL 和 ActiveX.Exe,它们需要用“工程”菜单中的“引用”

57

命令设置对对象库的引用,引用后工具箱上没有图标显示,但是可以用“对象浏览器”查看其中的对象、属 性、方法和事件。 3. 框架的作用是将窗体上其它类型的控件框起来,对窗体的各种功能进行分类,以便于用户识别。在使 用框架控件将同一个窗体上的单选按钮分组后,每一组单选按钮都是独立的,也就是说,在一组单选按钮中 进行操作不会影响其它组单选按钮的选择。 在窗体上创建框架及内部控件时,必须先建立框架,然后在其中建立各种控件。创建控件不能使用双击 工具箱上工具的自动方式,而应该先单击工具箱上的工具,然后用出现的“ +”指针,在框架内适当位置拖 动出适当大小的控件。如果要用框架将现有控件分组,则可以先选定所有控件,执行“剪切”和“粘贴”的 操作。 4. 有两种方法可以对列表框添加项目: (1)在设计状态,通过 List 属性进行设置; (2)在程序中,用 AddItem 方法添加。 在程序运行期间,列表框中的项目一般不需要修改。若要修改,则应该先用 RemoveItem 方法删除要修 改的项目,然后用 AddItem 方法添加新项目。 5. 组合框有三种类型:下拉式组合框(Style 属性为 0) 、简单组合框(Style 属性为 1)和下拉式列表框 (Style 属性为 2) 。下拉式组合框和简单组合框允许用户在文本框中输入不属于列表内的选项。 组合框是组合了文本框和列表框的特性而形成的一种控件,可以用文本框加列表框实现组合框的功能。 6. 时钟控件是以 Interval 属性的值作为时间间隔激发计时器事件的。 Interval 的值以 ms 为单位, 当 Interval 属性值作为 30000 时,每 0.5min 发生一个 Timer 事件。 7. 在 VB 中实现动画的两种方法有两个:一是通过时钟控件连续播放图片达到动画效果;二是使用 Animation 控件播放无声的 AVI 文件。 8. 当鼠标的任意一个按钮被按下时,触发 MouseDown 事件;当鼠标的任意一个按钮被释放时,触发 MouseUp 事件;当鼠标被移动时,触发 MouseMove 事件。 9. 在窗体上创建一个命令按钮 command1 和一个标签 Label1,然后编写下列事件过程,就可以测试这三 个事件发生的先后顺序了。 Sub Command1_click() print "命令按钮的 CLICK 事件" End sub 58

Sub Command1_MouseDown(Button as integer,shift as integer,x as single,y as single) print "命令按钮的 MouseDown 事件" End sub Sub Command1_MouseUp(Button as integer,shift as integer,x as single,y as single) print "命令按钮的 MouseUp 事件" End sub Sub Label1_click() print "标签的 CLICK 事件" End sub Sub Label1_MouseDown(Button as integer,shift as integer,x as single,y as single) print "标签的 MouseDown 事件" End sub Sub Label1_MouseUp(Button as integer,shift as integer,x as single,y as single) print "标签的 MouseUp 事件" End sub 测试可以发现,在标签上发生的顺序是:MouseDown、MouseUp、click,而在命令按钮上发生的顺序是: MouseDown、click、MouseUp。 10.鼠标的形状由 MousePointer 属性决定。可以在属性窗口中设置,也可以在程序代码中设置。在程序 运行期间,通过对该属性的设置可以改变鼠标的形状。如果想使用一个自定义图标,则应把 MousePointer 属性设置为 99(vbCustom),然后将图标文件用 LoadPicture 函数装入 MouseIcon 属性中,或者某个图形框 中的图标直接赋值给 MouseIcon 属性。 11.使用(KeyCode=vbKeyF3) and (Shift=vbCtrlMask) 或者(KeyCode=114) and (Shift=2)表达式,可以 检测 Ctrl 和 F3 是否同时按下,F3 的键盘扫描码是 114。 12.用户按下并且释放一个会产生 ASCII 码的键时, 触发 KeyPress 事件; 用户按下键盘上任意一个键时, 触发 KeyDown 事件。KeyDown 与 KeyPress 事件的主要区别有: (1)从时间上来说,按下键盘上的一个键,立即触发 KeyDown 事件,但此时没有引发 KeyPress 事件。 只有在释放该键时触发 KeyPress 事件。

59

(2)用户按下键盘上的任一键,就会在相应对象引发 KeyDown 事件,但是并不是按下和释放键盘上的任 意一个键都会引发 KeyPress 事件,KeyPress 事件只对会产生 ASCII 码的按键有反映,包括数字、大小写字 母、Enter、Backspace、ESC、Tab 等。对于如方向键这样的不会产生 ASCII 码的按键,KeyPress 事件不会被 触发。 13.KeyPress 事件发生了一次, KeyAscii 参数值是 36, 也就是 “$” 字符的 ASCII 码为 36。 因为 KeyPress 事件是在输入一个 ASCII 码字符时发生的事件,尽管在输入“$”字符时按了两个键,但是输入了一个字符, 所以 KeyPress 事件发生了一次。 14.如果窗体上只有一个文本框,则在文本框或窗体的 KeyPress 事件进行数据过滤都是很好的方法;如 果有多个文本框,则应在窗体的 KeyPress 事件中进行处理,好处是只需一个 KeyPress 事件过程,不必为每 一个文本框都编写事件过程。 文本框的 KeyPress 事件过程中: Sub Text1_KeyPress(KeyAscii as integer) if KeyAscii<Asc("0") or KeyAscii>Asc("9") then KeyAscii=0 End Sub 窗体的 KeyPress 事件过程中: '将窗体的 KeyPreview 属性设置为 True 后才有效 Sub Form_KeyPress(KeyAscii as integer) if KeyAscii<Asc("0") or KeyAscii>Asc("9") then KeyAscii=0 End Sub 15.窗体的 KeyPreview 属性决定是否触发窗体的 KeyPress、KeyUp 和 KeyDown 事件。如果它为 True,则 当焦点在某个控件上进行键盘操作时,首先触发窗体键盘事件,然后发生控件的键盘事件。 当窗体的 KeyPreview 属性为 True 时, 从键盘输入的数据经过窗体的 KeyPress 事件过程, 再经过文本框 的 KeyPress 事件过程,最终文本框。如果在 KeyPress 事件过程中修改了 KeyAscii 参数,则会影响文本框接 收的数据。 16.如果在 KeyDown 事件中将 KeyCode 设置为 0,KeyPress 的 KeyAscii 参数不会受影响,如果输入对象 是文本框,那文本框的内容也不会受影响。 17.键盘扫描代码是对键盘上按键的编码,它告诉事件过程用户所操作的物理键。也就是说,大写字母和 小写字母使用同一个键,它们的 KeyCode 相同。对于有上档字符和下档字符的键,其 KeyCode 也是相同的, 60

为下档字符的 ASCII 码。 18.普通拖放是用鼠标将控件等对象从一个地方拖动到另一个地方再放下, 一般来说, 它拖放的对象是控 件;而 OLE 拖放是将数据从一个地方或应用程序中移到另一个控件或应用程序中,一般来说,它拖放的对象 不是整个控件,而是控件中的项目或数据。 第九章 一、选择题 1. 下面关于顺序文件的描述,正确的是( (A)每条记录的长度必须相同 D ) 。

(B)文件的组织结构复杂

(C)可通过编程对文件中的某条记录方便的修改 (D)数据只能以 ASCII 码形式存放在文件中,所以可通过文本编辑软件显示 2. 下面关于随机文件的描述,不正确的是( B (A)文件的组织结构比顺序文件复杂 (C)每条记录的长度必须相同 3. 按文件的组织方式分为( (A)顺序文件和随机文件 (C)程序文件和数据文件 4. 顺序文件是因为( D ) 。 A ) 。 (B)ASCII 文件和二进制文件 (D)磁盘文件和打印文件 ) 。

(B)一个文件中记录号不必唯一

(D)可通过编程对文件中的某条记录方便的修改

(A)文件中按每条记录的记录号从小到大排序好的 (B)文件中按每条记录的长度从小到大排序好的 (C)文件中按记录的某关键数据项的从大到小的顺序 (D)记录按进入的先后顺序存放的,读出也是按原先写入的先后顺序读出 5. 随机文件是因为( C ) 。 (B)文件中的记录号是通过随机数产生的

(A)文件中的内容是通过随机数产生的

(C)可对文件中的记录根据记录号随机读写 (D)文件的每条记录的长度是随机的 6. 文件号最大可取的值为( (A)255 7. B ) 。 (C)512 D ) 。 (C)清屏幕 ) 。 (C)子程序名 (D)以上都不是 (D)删除磁盘上的文件 (D)256

(B)511

Kill 语句在 VB 语言中的功能是( (A)清内存 (B)清病毒

8. Print #1,Str1$中的 Print 是( A (A)文件的写语句

(B)在窗体上显示的方法

61

9.

为了建立一个随机文件,其中每一条记录由多个不同数据类型的数据项组成,应使用( (A)记录类型 (B)数组 (C)字符串类型 (D)变体类型 )正确。

A

) 。

10.

要从磁盘上读入一个文件名为“c:\t1.txt”的顺序文件,下列( A (A)F=‖c:\t1.txt‖ (B)F=‖c:\t1.txt‖ : : Open F For Input As #1 Open ―F‖ For Input As #2

(C)Open ―c:\t1.txt‖ For Output As #1 11. 全局记录类型定义语句应出现在( B (A)窗体模块 (C)窗体模块、标准模块都可以 12.

(D)Open c:\t1.txt For Input As #2 ) 。 (B)标准模块 (D)窗体模块、标准模块都不可以

要建立一个学生成绩的随机文件,如下定义了学生的记录类型,由学号、姓名、三门课程成绩(百分制) 组成,程序段( C (A)Type stud no as integer name as string mark(1 To 3) as single End Type (B)Type stud no as integer name as string*10 mark() as single End Type )正确。

(C)Type stud no as integer name as string*10 mark(1 To 3) as single End Type

(D)Type stud no as integer 62

name as string*10 mark(1 To 3) as string End Type 13. 在用 Open 语句打开文件时,如果省略“For 方式” ,则打开的文件的存取方式是( (A)顺序输入方式 (C)随机存取方式 14. (B)顺序输出方式 (D)二进制方式 ) 。 ) 。

关于顺序文件和随机文件的说法错误的是(A (A)随机文件的操作与顺序文件相同

(B)随机文件读写操作比顺序文件灵活

(C)顺序文件中记录的逻辑顺序与存储顺序是一致的 (D)随机文件的结构特点是固定记录长度以及每条记录均有记录号 15. 下列关于打开文件的说法正确的是( A ) 。

(A)用 Open 语句可以打开随机文件、二进制文件 (B)VB6.0 在引用文件之前无需将其打开 (C)Open 语句的文件号可以是整数或字符表达式 (D)使用 For Output 参数不能建立新的文件 16. 目录列表框的 Path 属性的作用是( A ) 。

(A)显示当前驱动器或指定驱动器上的目录结构 (B)显示当前驱动器或指定驱动器上的某目录下的文件名 (C)显示根目录下的文件名 17. 以下叙述中正确的是( B ) 。 (D)显示该路径下的文件

(A)一个记录中所包含的各个元素的数据类型必须相同 (B)随机文件中每个记录的长度是固定的 (C)Open 命令的作用是打开一个已经存在的文件 (D)使用 Input #语句可以从随机文件中读取数据 18. 以下叙述中错误的是( B ) 。

(A)一个工程中可以包含多个窗体文件 (B)在一个窗体文件中用 Private 定义的通用过程能被其他窗体调用 (C)在设计程序时窗体、标准模块、类模块等需要分别保存为不同类型的磁盘文件 (D)全局变量必须在标准模块中定义 19. 随机文件以( B )为单位来进行文件读取。 63

(A)字节 20.

(B)记录

(C)字符 )不是。

(D)字段

顺序文件有 3 种打开方式,下面( A (A)Random (B)Input

(C)Output ) 。

(D)Append

21.

在 VB6.0 中,文件操作的一般顺序是( D (A)打开文件?操作 (C)操作?关闭文件

(B)打开文件?关闭文件?操作 (D)打开文件?操作?关闭文件

二、填空题

1.

根据不同的标准,文件可分为不同的类型。例如,根据数据性质,可分为(程序 件;根据数据的存取方式和结构,可分为( 方式,可分为( 顺序 )文件和( 随机

)文件和(数据 )文

)文件;根据数据的编码

二进制 )文件和( ASCⅡ码)文件。 ) 。在该语句中,可 )

2.

打开文件所使用的语句为( Open 文件名 For 模式 As [#]文件号 [len=记录长度]

以设置的输入输出方式包括 ( Input、 Output、 Append、Random、 Binary ) , 若省略, 则为( Random 方式。存取类型分为(Read、Write、Read Write 3. )3 种。

顺序文件是通过( Print)语句或( Write)语句把缓冲区中的数据写入磁盘,但只有在满足三个条件之 一时才写盘,这三个条件是(关闭文件、缓冲区已满、缓冲区未满担执行下一个 Print 语句 ) 。

4.

在 VB 中,顺序文件的读操作通过( Input 或 Line Input )语句或( 写操作分别通过(Get,Put )语句实现。

Input)函数实现。随机文件的读

5.

在窗体上画一个驱动器列表框、 一个目录列表框和一个文件列表框, 其名称分别为 Drive1、 Dir1 和 File1, 为了使它们同步操作,必须触发(Drive1、Dar1)的( Change ) 。 )事件,在这两个事件中执行的语句

分别为(Dir1.path=drive1.drive )和( File1.path=dir1.path

三、补充程序

1.

顺序文件的建立。建立文件名为‖c:\stud1.txt‖的顺序文件,内容来自文本框,每按 Enter 键写入一条记录, 然后清除文本框的内容,直到文本框内输入‖END‖字符串。 Private Sub Form_Load() (1) Text1.Text=‖‖ 64

End Sub Private Sub Text1_KeyPress(KeyAscii as integer) If KeyAscii=13 then If (2) Close #1 End Else (3) Text1.Text=‖‖ End if End if End sub 2. (1)open c:\stud1.txt‖ for output as #1 (2)ucase(text1)=‖END‖ (3)print #1,text1 then

将 C 盘根目录下的一个文本文件 old.dat 复制到新文件 new.dat 中, 并利用文件操作语句将 old.dat 文件从

磁盘上删除。 Private Sub Command1_Click() Dim str1$ Open ―c:\old.dat‖ Open ―c:\new.dat‖ Do While (4) Print #2,str1 Loop (5) (6) End sub (1)for input (2)for output as #2 (3)not eof(1) (4)line input #1,str1 65 (3) (1) (2) as #1

(5)close #1,#2 (6)kill ―c:\old.dat‖ 3. 文本文件合并。将文本文件‖ttxt‖合并到‖t1.txt‖文件中. Private Sub Command1_Click() Dim s$ Open ―t1.txt‖ Open ―ttxt.txt‖ Do While Not EOF(2) Line Input #2, s Print #1,s Loop Close #1, #2 End sub (1)for append as #1 (2)for input as #2 4. 将任一整数插入递增次序的数组 a 中,使数组仍有序。数组 a 各元素的值从 C 盘根目录文件名为 data.txt (1) (2)

中读取,各数据项间以逗号分隔。 Option Base 1 Private Sub Form_Click() Dim b%,a%(),k%,i% i=1 Open (1) for input as #1

Do while net EOF(1) ReDim Preserve a(i) Input i=i+1 Loop B=val(InputBox(―输入待插入的数‖)) ReDim Preserve a(i) (2)

66

K=i Do while a(k)=a(k-1) (4) Loop a(k)=b Print ―插入后为:‖; For k=1 to i Print a(k); Next k End sub (1)―c:\data.txt‖ (2)#1,a(i) (3)(k>1) and a(k-1)>b (4)k=k-1 5. 随机文件的修改。对已建立的有若干条记录的文件名为‖c:\stud.dat‖的随机文件,记录类型由学号、姓名、 (3)

三门课程成绩组成。要求读出记录号为 5 的那条记录,显示在窗体上,然后将其第 2 门课成绩加 5 分,再写 入原记录的位置,再读出,显示修改成功与否。 Private Sub Command1_Click() Dim s as stud, (1)

Open ―c:\stud.dat‖ for random as #1 len=len(s) (2) Print s.no, s.name, s.mark(1), s.mark(2),s.mark(3) (3) Put #1, 5, s (4) Print d.no, d.name, d.mark(1), d.mark(2), d.mark(3) Close #1 End sub

67

(1)d as stud (2)get #1,5,s (3)s.mark(2)=s.mark(2)+5 (4)get #1,5,d 6. 顺序文件的修改。磁盘文本文件‖c:\my\zg.dat‖存放了职工的工资和职称情况,每条记录由工号、工资、

职称组成,之间用逗号分隔。现对有职称的职工加工资,规定“教授”或“副教授”加原有工资的 15%, “讲 师”加原有工资的 10%, “助教”加原有工资的 5%,其他人员不加工资。本程序要求根据加工资的条件修改 原文件内各类人员的相应工资。 Private Sub Command1_Click() Dim no%, gz!, zc$ Open ―c:\my\zg.txt‖ for input as #1 Open ―c:\my\Lszg.txt‖ for output as #2 Do while not eof(1) (1) Select case zc (2) Gz=gz*1.15 Case ―讲师‖ (3) Case ―助教‖ Gz=gz*1.05 End select (4) Loop Close #1, #2 Open ―c:\my\zg.txt‖ Open ―c:\my\Lszg.txt‖ Do while not eof(2) Input #2, no, gz, zc (5) (6)

68

(7) Loop Close #1, #2 End sub (1)input #1,no,gz,zc (2)case ―教授‖,‖副教授‖ (3)gz=gz*1.10 (4)write #2,no,gz,zc (5)for output as #1 (6)for input as #2 (7)write #1,no,gz,zc 7. 统计文本文件中各个字母出现的个数(大小写不区分) ,存放在 S 字符串数组中,统计结果在窗体上显示 出现过的字母和出现的次数。要求: (1) 统计的文件名通过文件列表框获得, 文件列表框的名称为 File1, 文件列表框仅显示扩展名为.txt 文件。 (2)当双击文件列表框的某选中的文件时,将文件内容全部读入文本框,然后对其进行统计。 Private sun Drive1_change() Dir1.path=Drive1.Drive End sub Private sub Dir1_change() File1.Path=Dir1.Path End sub Private sub File1_DblClick() Dim s%(1 to 26), i%, c$, j%, fname$ For i=1 to 26 a(i) next i if right(file1.path, 1)=‖\‖ then fname=file1.path+file1.filename else 69 (1)

fname= end if

(2)

label1=‖选中的文件名‖+fname Open fname for input as #1 Text1.text= (3)

For j=1 to len(text1.text) c= (4)

If c>=‖A‖ and c<=‖Z‖ then i= s(i)=s(i)+1 end if next j print ―出现的字母及个数‖ for i=1 to 26 if next i End sub (1)=0 (2)file1.path+‖\‖+file1.filename (3)input(lof(1),1) (4)ucase(mid(text1,i,1)) (5)asc?-asc(―A‖)+1 (6)s(i)>0 then print chr(i+64);‖:‖;s(i); 四、简答题 1. 2. 3. 4. 什么是文件?什么是记录? 根据访问模式,文件分为那几种类型? 文件列表框的 FileName 属性中是否包含路径? 构造满足下列条件的 Open 语句: (1)建立一个新的顺序文件 Seqnew.dat,供用户写入数据,指定文件号为 1。 70 (6) (5)

(2)打开一个老的顺序文件 Seqold.dat,用户将从该文件读出数据,指定文件号为 2。 (3)打开一个老的顺序文件 Sepappend.dat,用户将在该文件后面添加数据,文件号通过调用 FreeFile 函数获得。 5. 6. 7. 8. 9. 请用三种不同的方法,将文本文件 Text.dat 中的内容读入变量 strText$中(写出程序代码片断) 。 请说明 Print#与 Write#语句的区别。 请说明 EOF()和 LOF()函数的功能。 随机文件与二进制文件的读写操作有何不同? 请写出程序代码片断,将磁盘上的两个文件合并。 (提示:把它们作为二进制文件打开)

10. 为什么有时不使用 Close 语句关闭文件会导致数据文件的丢失? 11. VB 中 Kill 语句的作用是什么? 12. 在何种情况下 Name 语句的作用是移动文件? 1. 文件是指存放在外部介质上的以文件名标识的数据的集合。记录是指计算机存取数据的基本单位,它 由若干相互关联的数据项组成。 2. 根据访问模式文件分成顺序文件、随机文件、二进制文件。顺序文件可按记录、按行、按字符数三种 方式读出;随机文件按记录为单位读出;二进制文件按字节为单位读出。 3. 文件列表框的 FileName 属性不包含路径, 要包含路径, 必须在文件名前增加文件列表框的 Path 属性, 而且还要考虑根目录与子目录的使用差别。 4.(1)open ―seqnew.dat‖ for output as #1 (2)open ―seqnew.dat‖ for input as #2 (3)dim no% no=freefile open ―seqnew.dat‖ for append as #no 5. 三种不同的方法为按字符读、按行读、整个文件一次读入 按字符读 strTest=‖‖ do while not eof(1) strtest=strtest+input(1,#1) loop 71

按行读: strTest=‖‖ do while not eof(1) line input #1,s strtest=strtest+s+vbcrlf loop 整个文件一次读入 strtest=input(lof(1),1) 6. print 语句数据项之间既无逗号分隔,字符串又无双引号引起;write 语句输出在数据项之间自动插入 “, ” ,并给字符串加上双引号,以区分数据项和字符串类型。因此,为了以后读取数据项的方便,输出列表 有多个数据项组成时,建议使用 Write 语句。 7. EOF 函数判断文件指针是否到了文件结束标志。该函数在读取文件中全部记录很有用,作为循环结构 中循环终止与否的标志。 LOF 函数,返回文件的字节数。 8.随机文件以记录为单位读/写,二进制文件以字节为单位读/写。 9.顺序文件合并方式是将一个文件接在另一个文件的后面;随机文件按记录为单位读写,合并时两个文 件的记录类型应相同,各并的思路与顺序文件思路相同;否则采取二进制方式以字节为单位读写。 将两个二进制文件合并成第三个二进制文件程序段如下: Private Sub Command1_Click() Dim char as Byte open "t1.dat" for binary as #1 open "t2.dat" for binary as #2 open "t3.dat" for binary as #3 do while not eof(1) get #1,,char put #3,,char loop 72

do while not eof(2) get #2,,char put #3,,char loop close #1,#2,#3 End Sub 10.对文件进行读写操作时,VB 在内存开辟一个―文件缓冲区‖,从文件中读取得内容到内存数据区、从 内存数据区向文件中写入的内容都必须先送到缓冲区。使用―文件缓冲区‖的好处可提高文件对文件读写的速 度。所以实际上写语句是将数据送到缓冲区,关闭文件时才将缓冲区中数据全部写入文件。不使用 close 语 句关闭文件将会导致文件数据的丢失。 11.删除文件。 12.Name 具有移动文件的功能, 即重新命名的文件在另一个不同的文件夹中就可以了。 例如以下程序段: Private Sub Command1_Click() CommonDialog1.Action=1 CommonDialog2.Action=2 Name CommonDialog1.FileName as CommonDialog2.FileName End Sub

73


相关文章:
vb习题集和答案
vb习题集和答案_其它课程_高中教育_教育专区。第一章 选择题 1. VB 是一种面向对象的可视化程序设计语言,采取了( (A)事件驱动 (C)从主程序开始执行 2. 以下...
VB习题及习题解答
VB习题及习题解答_IT认证_资格考试/认证_教育专区。习题一一、简答题 1. 简述...习题六参考答案一、单项选择题 1.答:C 2.答:B 3.答:C 4.答:A 5.答:...
vb练习题答案
vb 答案 简单应用题 1.Option Explicit PrivatenCount As Long PrivateSub Form_Load() nCount = 1 EndSub PrivateSub timeClock_Timer() lblClock = nCount ...
VB复习题及参考答案
VB习题及参考答案_IT认证_资格考试/认证_教育专区。VB试题 复习题及参考答案 一、选择题 (1) 使“Microsoft”在当前窗口上输出的语句是( B )。 A)Picture...
vb试题及答案
在线互动式文档分享平台,在这里,您可以和千万网友分享自己手中的文档,全文阅读其他用户的文档,同时,也可以利用分享文档获取的积分下载文档
VB习题集-答案2013
VB习题集-答案2013_IT认证_资格考试/认证_教育专区 暂无评价|0人阅读|0次下载|举报文档 VB习题集-答案2013_IT认证_资格考试/认证_教育专区。目录第 1 章 ...
VB复习题(含答案)
第一部分:单选,填空,程序填空,读程序写结果 VB 考试一 1、能够获得一个文本框中被选取文本的内容的属性是___。 C:SelText D:Text 参考答案:C 参考答案: D...
vb课后习题答案
vb课后习题答案_理学_高等教育_教育专区。A2 Public Class SyA_2 Private Sub ...("欢迎您使用 VB.NET!") End Sub End Class A3 Public Class SyA_3 ...
VB复习题及参考答案
复习题及参考答案 一、选择题 (1) 使“Microsoft”在当前窗口上输出的语句是(...VB程序设计复习题及答案 11页 免费 VB练习题 190页 免费 ©2016 Baidu 使用...
vb试卷习题和答案
inData Text1.Text = Text1.Text & inData Loop Close #1 End Sub 2003 年 9 月全国计算机等级考试二级 VB 语言笔试试卷参 考答案 一、 选择题 (1) C (...
更多相关标签: