vb习题集和答案

发布时间:2018-11-10 20:55:38

第一章 选择题

1. VB是一种面向对象的可视化程序设计语言,采取了( A )的编程机制。

A)事件驱动 (B) 按过程顺序执行

C)从主程序开始执行 (D) 按模块顺序执行

2. 以下不属于VB的工作模式的是(c )模式。

(A) 运行 (B)设计 (C) 编译 (D)中断

3. VB集成环境创建VB应用程序时,除了工具箱窗口、窗体窗口、属性窗口外,必不可少的窗口是( C )。

A)窗体布局窗口 B)立即窗口 C)代码窗口 D)监视窗口

4. 保存新建工程时,默认的路径是( B )。

AMy Documents BVB98 C\ DWindows

5. 将调试通过的VB工程经“文件”菜单的“生成.exe文件”编译成.exe后,将该可执行文件拿到其他机器上不能运行的主要原因是( A )。

A)运行的机器上无VB系统 B)缺少.frm窗体文件

C)该可执行文件有病毒 D)以上原因都不对

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

A)编辑、调试、运行程序,但不能生成可执行程序

B)编辑、调试、生成可执行程序,但不能运行程序

C)编辑、生成可执行程序、运行程序,但不能调试

D)编辑、调试、运行程序,也能生成可执行程序

7. VB6.0集成环境的主窗口中不包含( B )。

A)菜单栏 B)状态栏 C)标题栏 D)工具栏

8. 在设计阶段,当双击窗体上的某个控件时,所打开的窗口是( C )。

A)工程资源管理器窗口 B)工具箱窗口

C)代码窗口 D)属性窗口

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

A)滚动条 B)定时器 C)多媒体 D)框架

10. VB6.0的( C )版本,可供专业编程人员开发功能强大的组内分布式应用程序。

A)初级版 B)学习版 C)企业版 D)专业版

11. 英文缩写“OOP”的含义是( A )。

A)面向对象程序设计 B)结构化程序设计语言

C)事件驱动的编程机制 D)可视化程序设计

12. 不能打开代码窗口的操作是( B )。

A)双击窗体设计器的任意地方 D)选择视图菜单中的“代码窗口”

B)按下F4 C)单击工程资源管理器中的“查看代码”按钮

13. 标准模块的扩展名是( C )。

A.frm B.bmp C.bas D.vbp

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

A.frm B.bmp C.bas D.vbp

15. 工程文件的扩展名是( D )。

A.frm B.vbg C.bas D.vbp

16. 不能打开属性窗口的操作是( D )。

A)单击工具栏上的“属性窗口”按钮 B)选择视图菜单中的“属性窗口”

C)按下F4 D)选择工程菜单中的“属性窗口”

17. 不能打开对象窗口的操作是( A )。

A)按下F2 B)单击工程资源管理器中的“查看对象”按钮

C)按下Shift+F7组合键 D)选择视图菜单中的“对象窗口”

18. 不能打开资源管理器窗口的是( B )。

A)单击工具栏上的“工程资源管理器”按钮

B)在窗体上单击右键,从弹出的快捷菜单中选择“工程资源管理器”选项

C)选择视图菜单中的“工程资源管理器” D)按Ctrl+R

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

A)窗体文件 B)图形文件 C)标准模块文件 D)工程文件

20. 与传统的程序设计语言相比,vb6最突出的特点是( B )。

A)结构化程序设计 B)事件驱动编程机制

C)集成开发环境 D)程序调试技术

21. VB窗体设计器的主要功能是( A )。

A)建立用户界面 B)编写员程序代码

C)画图 D)显示文字

22. 用标准工具栏中的工具按钮不能执行的操作是( D )。

A)添加窗体 B)添加工程 C)打开工程 D)添加模块

23. 下属选项中,属于VB的程序设计方法是( B )。

A)面向对象、顺序驱动 B)面向对象,事件驱动

C)面向过程,事件驱动 D)面向过程,顺序驱动

二、填空题

1. 当进入VB集成环境,发现没有显示“工具箱”窗口时,应选择( 视图 )菜单的( 工具箱 )选项,使“工具箱”窗口显示。

2. VB6.0集成环境的主窗口由标题栏、菜单栏和(工具栏)组成。

3. VB6.0集成环境有三种工作状态,工作状态显示在(标题栏 )。

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

5. VB6.0有设计、中断和运行三种工作状态,立即窗口不能在(运行)状态下使用。

三、简答题

1. 运行VB6.0需要什么样的最小硬件环境?只要能运行Windows9xWindows NT并具有140MB以上的硬盘空间即可。

2. 当正常安装VB6.0后,误把Windows子目录删除。当重新安装Windows后,是否要再安装VB6.0要再安装Visual Basic6.0。因为安装VB6.0时,有些VB程序系统自动安装在Windows98目录下,所以一旦删除Windows98子目录,就必须再安装VB6.0

3. VB6.0有学习版、专业版和企业版,怎样知道所安装的是哪个版本?在启动VB6.0的启动封面上,能显示对应的版本。

4. VB6.0有多种类型的窗口,若想在设计时看到代码窗口,怎样操作?

法:

1)热键F7 2视图”—> “代码窗口

3)在窗体窗口中双击任一控件或窗体本身

4)从工程窗口中选择窗体或模块后单击查看代码按钮。

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

6. 叙述VB6.0的特点。

VB的特点:

1)具有面向对象的可视化设计工具;

2)事件驱动的编程机制;

3)提供了易学易用的应用程序集成开发环境;

4)结构化的程序设计语言;

5)支持多种数据库系统的访问;

6Active技术;

7VB 6.0在开发环境上、网络功能等的增强;

8)完备的help联机帮助功能。

第二章一.选择题

1. 假定已在窗体上画了多个控件,并有一个控件是活动的,为了在属性窗口中设置窗体的属性,预先执行的操作是( A )。

A)单击窗体上没有控件的地方 B)单击任一个控件

C)不执行任何操作 D)双击窗体的标题栏

2. VB中最基本的对象是( C ),它是应用程序的基石,是其它控件的容器。

A)文本框 (B)命令按钮

C)窗体 (D)标签

3. 有程序代码如下:text1.text=visual basic 则:text1text和“visual basic”分别代表( C )。

A)对象,值,属性 (B) 对象,方法,属性

C 对象,属性,值 (D) 属性,对象,值

4. VB是一种面向对象的程序设计语言,( A )不是面向对象系统所包含的三要素。

A)变量 (B)事件 (C)属性 (D)方法

5. VB的一个应用程序至少包括一个( B )文件,该文件存储窗体上使用的所有控件对象和有关的( )、对象相应的( )过程和( )代码。

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

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

6. VB6.0环境已有应用程序的情况下,要重新建立一个工程的操作是( C )。

A)单击工具栏上的“添加工程”按钮

B)在工程资源管理器窗口上单击右键,在弹出的快捷菜单中选择“新建工程”选项

C)选择“文件”菜单中的“新建工程”

D)选择“视图”菜单中的“新建工程”

7. 为了把窗体上的某个控件变为活动,应执行的操作是( B )。

A)单击窗体的边框 B)单击该控件的内部

C)双击该控件 D)双击窗体

8. 确定一个控件在窗体上的位置的属性是( C )。

AWidthHeight BWidthHeight

CTopLeft DTopLeft

9. 确定一个窗体或控件的大小的属性是( B )。

AWidthHeight BWidthHeight

CTopLeft DTopLeft

10. 对于窗体,下面( D )属性可以在程序运行时进行设置。

AMaxButton BBorderStyle CName DLeft

11. 要使Print方法在Form_Load事件中起作用,要对窗体的( C )属性进行设置。

ABackColor BBorderStyle CAutoRedraw DCaption

12. 要使标签控件显示时不覆盖其背景内容,要对( D )属性进行设置。

ABackColor BBorderStyle CForeColor DBackStyle

13. 要使对象看得见而不可操作,要对( A )属性设置。

AEnabled BVisible CBackColor DCaption

14. 文本框没有( D )属性。

AEnabled BVisible CBackColor DCaption

15. 不论任何控件,共同具有的是( B )属性。

AText BName CForeColor DCaption

16. 要使某控件在运行时不可见,应对( B )属性进行设置。

AEnabled BVisible CBackColor DCaption

17. 要使窗体在运行时不可改变窗体的大小和没有最大化、最小化按钮,只要对下列( B )属性设置就有效。

AMaxButton BBorderStyle CWidth DMinButton

18. 当运行程序时,系统自动执行启动窗体的( A )事件过程。

ALoad BClick CUnload DGotFocus

19. 当文本框的ScrollBars属性设置了非零值,却没有效果,原因是( B )。

A)文本框中没有内容 B)文本框的MultiLine属性为False

C)文本框的MultiLine属性为True D)文本框的Locked属性为True

20. 下面是文本框的四个属性,在程序运行时,( B )属性能使鼠标单击文本框而不触发文本框的Click事件。

AVisible BEnabled CLocked DMultiLine

21. 下面四个选项都是VB中对象的属性名称,( A )不能用程序代码设置属性值。

AName BEnabled CBackColor DPicture

22. 以下选项中“=”的左边是用户界面上的对象名,不正确的赋值语句是( A )。

AForm1=”sdfs” BCommand1=True

CText1=”abcd” DLabel1=”等级考试

23. 以下叙述中正确的是( A )。

A)窗体的Name属性指定窗体的名称,用来标识一个窗体

B)窗体的Name属性的值是显示在窗体标题栏中的文本

C)可以在运行期间改变对象的Name属性的值

D)对象的Name属性值可以为空

24. 以下四个选项都是VB中对象的属性名称,在界面设计时,( D )属性值的设置需要利用对话框。

AName BEnabled CWindowState DPicture

25. 以下选项中,框架的控件值是(A )。

ACaption BValue CInterval DEnabled

26. .以下选项中,不是布尔类型的属性是( B )。

A)单选按钮的Value B)复选框的Value

C)命令按钮的Value DEnabled

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

A)按下Alt B)按下Shift C)按下Ctrl D)按下F4

28. 以下选项中,( C )是窗体的特有属性。

ACaption BVisible CWindowState DLeft

29. 改变文本框的滚动条配备,需要先设置( D )属性。

AVisible BEnabled CLocked DMultiLine

30. 下面四个选项,(D )不是窗体的属性。

AMinButton BMaxButton CCaption DReSize

31. 下面四个选项,( A )是窗体的特有事件。

ALoad BLocked CClick DKeyPress

32. 假定窗体的名称(Name属性)为Form1,则把窗体的标题设置为“VBTest”的语句为( B )。

AForm1=”VB Test” BCaption=”VB Test”

CForm1.Text=”VB Test” DForm1.Name=”VB Test”

33. 为了保存一个VB应用程序,应当( D )。

A)只保存窗体文件 B)分别保存工程文件和标准模块文件

C)只保存工程文件(D)分别保存工程文件、窗体文件和标准模块文件

34. 为了装入一个VB应用程序,应当( C )。

A)只装入窗体文件 B)分别装入工程文件和标准模块文件

C)只装入工程文件 D)分别装入工程文件、窗体文件和标准模块文件

35. 命令按钮不能响应的事件是( A )。

ADblClick BClick CMouseDown DMouseUp

36. 决定窗体标题栏上显示内容的属性是( C )。

AText BName CCaption DBackStyle

37. 当窗体最小化时缩小为一个图标,设置这个图标的属性是( B )。

AMouseIcon BIcon CPicture DMousePointer

38. 为了仅取消窗体的最大化功能,需要把它的( D )属性设置为False

AControlBox BMinButton CEnabled DMaxButton

39. 决定窗体有无控制菜单的属性是( A )。

AControlBox BMinButton CEnabled DMaxButton

40. 为了使文本框同时具有水平和垂直滚动条,应先把MultiLine属性设置为True,然后再把ScrollBars属性设置为( D )。

A0 B1 C2 D3

41. 使文本框获得焦点的方法是( C )。

AChange BGotFocus CSetFocus DLostFocus

42. 为了使标签覆盖背景,应把BackStyle属性设置为( A )。

A0 B1 CTrue DFalse

43. 为了使标签的内容居中显示,应把AlignMent属性设置为( C )。

A0 B1 C2 D3

44. 决定标签内显示内容的属性是( C )。

AText BName CCaption DEnabled

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

AValue BDefault CCancel DEnabled

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

AValue BDefault CCancel DEnabled

47. 下面四个选项中,不是文本框属性的是( D )。

ATabIndex BPassWordChar CScrollBars DValue

48. 以下能够触发文本框Change事件的操作是( D )。

A)文本框失去焦点 B)文本框获得焦点

C)设置文本框的焦点 D)改变文本框的内容

49. 文本框的默认属性是( A )。

AText BCaption CTop DName

50. 标签的默认属性是( B )。

AText BCaption CTop DName

51. 若要设置标签的背景颜色,使用的属性是( B )。

AColor BBackColor CForeColor DFontBold

52. 若要设置文本框中所显示的文本颜色,使用的属性是( C )。

AFillColor BBackColor CForeColor DBackStyle

53. 命令按钮能响应的事件是( B )。

ADblClick BClick CScroll DLoad

54. 下面选项中,( C )不是文本框的属性。

AMultiLine BMaxLength CTextBox DLoaded

二、填空题

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

)属性设置为False

2. 改变文本框的滚动条配备,需先设置MultiLine属性,然后设置( ScrollBars )属性。

3. 文本框能返回ASCII码值的事件是( KeyPress)。

4. 当程序运行后,用鼠标双击对象时主要触发的事件是(DblClick)。

5. 文本框的控件值是( Text ),命令按钮的控件值是( Value )。

6. VB中,由系统事先设定的,能被对象识别和响应的动作称为( 事件 )。

7. 一个控件在窗体上的位置由( Left )和( Top )属性决定,其大小由(Width)和( Height )属性决定。

8. 对象属性设置主要有两种方法,分别是(在属性窗口直接设置)和(在代码窗口中设置)。

9. 在程序代码中设置属性值的一般格式为(.[对象.]属性=属性值)。

10. 当窗体的大小改变时,触发( ReSize)事件。

11. 为了选择多个控件,可以按住( Ctrl )键,然后单击每个控件。

12. 在用VB开发应用程序时,一般需要(界面设计)、( 属性设置 )、(编写代码 )和(保存和运行程序 )四步。

13. 控件和窗体的Name属性只能通过( 属性窗口 )设置,不能在( 运行 )期间设置。

14. VB中,窗体文件和工程文件的扩展名分别是( frm )和( vbp)。

15. 为了把一个VB应用程序装入内存,只要装入( 工程 )文件即可。

16. VB应用程序通常由3类模块组成,分别是( 窗体模块 )、(标准模块 )( 类模块 )。

17. 在刚建立工程时,使窗体上的所有控件具有相同的字体格式,应对( 窗体 )的(Font系列 )属性进行设置。

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

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

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

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

22. 在窗体上已建立多个控件如Text1Label1Command1,若要使程序一运行焦点就定位在Command1控件上,应把Command1控件的( TabIndex

)属性的值设置为0

23. 为了使标签能自动调整大小以显示全部文本内容,应把标签的( AutoSize )属性 设置为True

24. 假定有一个文本框,其名称为Text1,为了使该文本框具有焦点,应执行的语句是( Text1.SetFocus )。

25. 为了使一个标签透明且没有边框,必须把它的BorderStyle属性设置为( 0 ),并把BackStyle属性设置为( 0 )。

三、简答题

1. 叙述建立一个完整的应用程序的过程。

2. 当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。问该工程涉及到多少文件要保存?若要保存该工程中的所有文件,正确的操作应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息?

3. 假定在Windows环境中,要保存工程文件时,若不改变目录名,则系统默认的目录是什么?

4. 为了使一个控件在运行时不可见,应对该控件的什么属性进行何种设置?

5. 为了防止用户编辑文本框内的内容,应对该控件的什么属性进行何种设置?

6. 为了使标签框的大小由Caption属性的值进行扩展或缩小,应对该控件的什么属性进行何种设置?

7. VB6.0提供的大量图形文件在那个目录下?若您的计算机上没有安装,则怎样安装这些图形?

8. VB6.0中,命令按钮的显示形式可以有标准的或图形的两种选择,这通过什么属性来设置?若选择图形的,则通过什么属性来装入图形?若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能显示图形,而显示的是Caption属性设置的文字,怎样改正?

9. 标签和文本框的区别是什么?

10. 当窗体上有3个文本框和一个命令按钮,若程序运行时,要求焦点定位在私邸三个文本框(Text3)处,应对何控件的什么属性进行何种设置?

11. 若要对窗体上的3个文本框输入数据,各控件焦点的移动可通过Tab键(系统本身具有的),也可以通过回车键,则要对文本框的什么事件进行编程?

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. 假定文本框的名称为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. 在一行上写多条语句时,每个语句之间用( B )符号分隔。

A), B): C)、 D);

2. 一个语句要在下一行继续写,用( C )符号作为续行符。

A+ B- C_ D)…

3. 下面( A )是合法的变量名。

AX_yz B123abc Cinteger DX-Y

4. 下面( D )是不合法的整常数。

A100 B&O100 C&H100 D%100

5. 下面( B )是合法的字符常数。

AABC$ B”ABC” C’ABC’ DABC

6. 下面( A )是合法的单精度型变量。

Anum Bsum% Cxinte$ Dmm#

7. 下面( D )是不合法的单精度常数。

A100 B100.0 C1E+2 D100.0D+2

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

A14 B4 C20 D2

9. 数学关系3x<10表示成正确的VB表达式为* B )。

A3<=x<10 B3<=x and x<10

Cx>=3 or x<10 D3<=x and <10

10. /\Mod*四个算术运算符中,优先级别最低的是( C )。

A\ B/ CMod D*

11. 与数学表达式对应,VB的不正确表达式是( D )。

Aa*b/(3*c*d) Ba/3*b/c/d Ca*b/3/c/d Da*b/3*c*d

12. Rnd函数不可能为下列( B )值。

A0 B1 C0.1234 D0.0005

13. Int198.555*100+0.5/100的值是( C )。

A198 B199.6 C198.56 D200

14. 已知A$=”12345678”,则表达式Val(Left$(A$,4)+Mid$(A$,4,2))的值为( B )。

A123456 B123445 C1279 D”123445”

15. Print DateAdd(“m”,1,#1/30/2000#)语句显示的结果是( A )。

A2000-2-29 B2000-2-28 C2000-2-30 D2000-3-1

16. 表达式DateDiff”d”,#12/30/1999#,#1/13/2000#)的结果是( C )。

A1 B11 C14 D99

17. 表达式Len”123程序设计ABC”)的值是(A )。

A10 B14 C20 D17

18. 表达式LenB”123程序设计ABC”)的值是( C )。

A10 B14 C20 D17

19. a=1,b=2,c=3,d=4,下面逻辑表达式的值为真的是( C )。

ASqr(d)>b BNot(c-b)Cd>c and b>a DAbs(a-d)

20. 在以下的运算符中,优先级最高的是( C )。

A/ B\ C^ DMod

21. a=”visual basic”,下面使b=”basic”的语句是( B )。

Ab=Left(a,8,12) Bb=Mid(a,8,5)

Cb=Right(a,5,5) Db=Left(a,8,5)

22. 从键盘上输入两个字符串,分别保存在变量str1str2中。确定第二个字符串在第一个字符串中起始位置的函数是( D )。

ALeft BMid CString DInstr

23. a=2,b=3,c=4,d=5,表达式a>b and c<=d or 2*a>c的值是( B )。

ATrue BFalse C-1 D0

24. a=2,b=3,c=4,d=5,表达式3>2*b or a=c and b<>c or c>d的值是( B )。

ATrue BFalse C-1 D0

25. a=2,b=3,c=4,d=5,表达式not a<=c or 4*c=b^2 and b<>a+c的值是( B )。

ATrue BFalse C-1 D0

26. 假定Picture1Text1分别为图片框和文本框的名称,下列不正确的语句是( C )。

APrint 25 BPicture1.Print 25

CText1.Print 25 DDebug. Print 25

27. 语句Print 5*5\5/5的输出结果是( B )。

A5 B25 C0 D1

28. 语句Print Sgn-6^2+Abs-6^2+Int-6^2)的输出结果是( C )。

A-36 B1 C-1 D-72

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

A4 B5 C6 D7

30. 设有整数x,如果Sgnx)的值为-1,则x的值是( B )。

A)整数 B)大于0的整数

C)等于0的整数 D)小于0的整数

31. 可以同时删除字符串前导和尾部空白的函数是( C )。

ALtrim BRtrim CTrim DMid

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

Ax=Int(Rnd*(n-m+1))+m Bx= Int(Rnd*n)+m

Cx=Int(Rnd*m)+n Dx=Int(Rnd*(n-m))+m

33. VB6.0表达式”123”+Abs(1)的值是( C )。

A123-1 B1231 C124 D)错误表达式

34. VB6.0表达式”12a”+Abs(1)的值是( D )。

A12b B12a1 C121 D)错误表达式

35. 当用Const a%=19.8 定义后,a的值是( C )。

A19 B19.8 C20 D0

二、填空题

1. VB中,1234123456&1.2346E+51.2346D+5四个常数分别表示( 整型,长整型,单精度、双精度 )类型。

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

3. 数学表达式VB算术表达式为( (a+b)/(1/(c+5)-c*d/2) )。

4. 表示x5的倍数或是9的倍数的逻辑表达式为( x mod 5=0 or x mod 9=0)。

5. 已知a=3.5b=5.0c=2.5d=True,则表达式:a>=0 and a+c>b+3 or not d的值是( false )。

6. Int(-3.5)Int (3.5)Fix(-3.5)Fix(3.5)Round(-3.5)Round(3.5)的值分别是( -4,3,-3,3,-4,4 )。

7. 表达式Ucase(Mid(“abcdefgh”,3,4))的值是(CDEF )。

8. 在直角坐标系中,(xy)是坐标系中任意点的位置,用xy表示在第一象限或第三象限的表达式是( x*y>0 )。

9. 要以××××年××月××日形式显示当前机器内日期的Format函数表达式为( format(date,”yyyy-mm-dd”) )。

10. 计算已近入21世纪有多少天的函数表达式是( datediff(“d”,date,”2000-1-1”))。

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

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

13. VB6.0表达式LenLeft"abcd”3+Right商丘师范学院4))的值是( 7 )。

14. 数学式2cos2y+e2xVB6.0表达式是(2*cos(2*y)+exp(2*x))。

15. 产生一个在[-50-5]范围内的随机负整数(包含-50-5)的表达式是(–int(rnd*46+5) )。

16. y是整型变量,判断y为奇数的表达式是(y mod 2<>0 )。

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

18. 表达式Fix-11.85+Int-23.01)的值是( -35 )。

19. VB中,字符串常量要用(“”)括起来,日期/时间型常量要用(##)括起来。

20. VB6.0中,字符采用(Unicode)编码方式。在这种编码方式中,一个中文字符或一个西文字符均视为(一个)字符,每个字符用(2 )个字节编码。

21. 语句Print Int((12345.6789*100+0.5/100)的输出结果是( 12345

22. 语句Print “25+32=”;25+32的输出结果是(25+32=57 )。

23. a=4,b=9,则语句Print a>b mod 4 的输出结果是( true )。

24. 语句Print “123”+”456”+3的输出结果是(123459 )。

25. 语句Print “234”+10+”123”的输出结果是( 367 )。

三、简答题

1. 说明下列哪些是VB合法的直接常量,分别指出它们是什么类型:

1100.0 2%100 31E14123D35123,45660100 7”ASDF” 8”1234” 9#2000/10/7# 10100#11)π 12&0100 13&O78 14&H123 15True16T

17&H12ag 18-1123!

1)合法,单精度 2)不合法 3)合法,单精度(4)合法,双精度 5123,456 6)合法,二进制整数(7)合法,字符型 8)不合法 9)合法,日期型 10)合法,单精度 11)不合法 12)合法,八进制(13)不合法 14)合法,十六进制 15)合法,逻辑型(16)不合法 17)不合法 18)合法,单精度

2. 下列符号中,哪些是VB合法的变量名?

1a123 2a12_3 3123_a 4a 123 5Integer

6XYZ 7False 8sin(x) 9sinx 10)变量名(11abcdefg 12)π

1)合法 2)合法 3)不合法 4)不合法 5)不合法(6)合法 7)不合法 8)不合法 9)合法 10)合法(11)合法 12)不合法

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

1|x+y|+z5 abs(x+y)+z^5 2(1+xy)6 (1+x*y)^6310*x+sqr(3*y))/(x*y)4 (-b+sqr(b*b-4*a*c))/(2*a) 51/(1/r1+1/r2+1/r3) 6sin450+ 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(包括100200)范围内的正整数。 int(rnd*101+100)

3)已知直角坐标系中任意一个点(x,y),表示该点在第一或第三象限内。x*y>0

4)表示x57的倍数。x mod 5=0 or x mod 7=0

5)将任意一个两位数x的个位数与十位数对换。例如,x=78,则表达式的应为87 (x mod 10)*10+x\10

6)将变量x的值按四舍五入保留小数点后两位。例如,x的值为123.2389,表达式的值为123.24 round(x*100)/100

7)表示字符变量C是字母字符(大小写不区分)。 ucase(C)>=”A” and ucase(C)<=”Z”

8)取字符变量S中第五个字符起的6个字符。 Mid(s,5,6)

9)表示10x<20的关系表达式。 (x>=10) and (x<20)

10xy中有一个小于z x

11xy都大于z x>z and y>z

5. 写出下列表达式的值:

1123+23 Mod 10\7+Asc(“A”) 188

2100+”100” & 100 “200100”

3Int(68.555*100+0.5)/100 68.56

4)已知A$=”87654321”,求表达式Val(Left$(A$,4)+Mid$(A$,4,2))的值 87654

5DateAdd(“m”,1,#1/30/2000#) #2/29/2000#

6Len(“VB程序设计”) 6

6. 利用SHELL()函数,在VB程序中分别执行画图和WORD应用程序。略

7. VB提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么?

8. 哪种数据类型需要的内存容量最少,且可以存储例如3.2345这样的值?

9. 将数字字符串转换为数值,用什么函数?判断是否是数字字符串,用什么函数?取字符串中的某几个字符,用什么函数?大小写字母间的转换用什么函数?

10. 要使单精度变量xyz分别保留1位、2位、3位小数位,并在窗体显示,使用什么函数?如何写对应的Print方法?

8. 单精度

9. val函数,isnumeric函数,mid函数,ucaselcase函数

10. format函数,print format(x, ”0.0”),format(y, ”0.00”),format(z, ”0.000”)

第五章选择题

1. 如下数组声明语句,(B )正确。

ADim a[3,4] as integer BDim a(3,4) as integer

CDim a(n,n) as integer DDim a(3 4) as integer

2. 要分配存放如下方阵,可使用声明语句( C )来实现(不能浪费空间)。.

ADim a(9) as single BDim a(3,3) as single

CDim a(-1 to 1,-5 to -3) as single DDim a(-3 to -1,5 to 7) as integer

3. 数组声明语句Dim a(3,-2 to 2,5) as integer中,数组a包含的元素个数为( A )。

A120 B75 C60 D13

4. 用语句Dim a(-3 to 5) as integer所定义的数组的元素个数是(D )。

A6 B7 C8 D9

5. 用语句Dim a(3 to 5-2 to2)所定义的数组的元素个数是( C )。

A20 B12 C15 D24

6. 下面的B中有( C )个数组元素。

Dim B : B=(1,2,3,4,5,6,7,8,9)

A)任意多 B8 C9 D10

一、 填空题

1. 控件数组的名字由( Name )属性指定,而数组中的每个元素由( Index )属性指定。

2. 函数建立的数组的名字必须是( 变体 )类型。

3. 数组定义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);

next j

print

next I 1 2 3

end sub 4 6

程序运行后,单击command1,输出结果为: 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 1 2 3

end sub 2 3 1

程序运行后,单击command1,输出结果为: 3 2 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

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 1 4 7 10

next I 2 5 8 11

end sub 3 6 9 12

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

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

option base 1

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

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

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)

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

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

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

next I 11 21 31 41

end sub 12 22 32 42

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

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)

k=3

do while k

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)

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 1 2 3

end sub 4 5 6

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

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

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个元素的整形数组,下列数组声明(若无下界,按默认规定)哪些符合要求?

1n=12 2Dim a%()

Dim a1 to nas integer n=11

ReDim an

3Dim a%[2,3] 4Dim a(1,1,2) as integer

5Dim a%10 6Dim a!()

ReDim a1 to 12 ReDim a3,2as integer

7Dim a%2,3 8Dim a1 to 3 1 to 4as integer

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

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

4. 已声明了静态数组a(3,4),能否在下面再用重定义动态数组a(4,4)来重定义A数组的大小?

5. 使用ReDim语句可以改变数组类型吗?

6. ReDim语句中加了Preserve关键字,对重定义数组有何限制?

7. 利用随机数生成两个四行四列的矩阵(数据不一定相同,前者范围在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、数组类型为单精度,二维数组,各维的下界分别为-10、上界分别为23,数组的大小为4*416个元素,各元素排列顺序如下:

a(-1, 0) a(-1, 1) a(-1, 2) a(-1, 3)

a(0, 0) a(0, 1) a(0, 2) a(0, 3)

a(1, 0) a(1, 1) a(1, 2) a(1, 3)

a(2, 0) a(2, 1) a(2, 2) a(2, 3)

3. 静态数组在声明数组时的下标必须是常数,以后不能改变其大小;动态数组在Dim声明时不要声明数组的大小,在以后的程序中可以用ReDim语句重新声明数组的大小,ReDim语句中的下标可以出现有确定值的变量或表达式。

4. 已声明了的静态数组不能再用重定义语句来重新定义静态数组的大小。

5. 可以反复地改变数组的大小和数组的维数,但是不能改变数组的类型。

6. ReDim语句中加上了Preserve关键字,就只能重定义数组最后一维的大小,且根本不能改变数组的维数。例如,如下语句:

Dim a()

ReDim a34

ReDim Preserve a45

程序执行到ReDim Preserve a45)时显示“下标越界”出错信息,也就是只能改变第二个下标的大小,而不能改变第一个下标的大小。

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): a(i,j)=a(j,i): a(j,i)=t

next j, i

3)统计矩阵c最大值和下标:

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

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)要求将生成的数组分四行显示。

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 = ""

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): a(k) = a(k - 1): a(k - 1) = t

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)在窗体的Form_Load事件中定义的变量是全局变量

B)局部变量的作用域可以超出所定义的过程

C)在某个Sub过程中定义的局部变量可以与其他事件过程中定义的局部变量同名,但其作用域只局限于该过程。

D)在调用过程时,所有局部变量被系统初始化为0

2. 下列四个叙述中,错误的是(C )。

A)过程内用Dim语句定义的变量,它的作用域是此过程

B)过程内用Static语句定义的变量,它的生存期与整个过程的运行期相同

C)过程内用Dim语句定义的变量,它的生存期与整个过程的运行期相同

D)若在模块的“通用声明”中写上语句:Option Explicit,则该模块的所有变量必须先说明后引用

3. 在过程定义中用(C )表示形参的传值。

AVar BByDef CByVal DValue

4. 若已编写了一个Sort子过程,在该工程中有多个窗体,为了方便地调用Sort子过程,应该将该过程放在( B )中。

A)窗体模块 B)标准模块 C)类模块 D)工程

5. 在过程中定义的变量,若希望在离开该过程后,还能保存过程中局部变量的值,则应使用( D )关键字在过程中定义局部变量。

ADim BPrivate CPublic DStatic

6. 下面子过程语句说明合法的是( D )。

ASub f1(Byval n%()) BSub f1(n%) as integer

CFunction f1%(f1%) DFunction f1(Byval n%)

7. 要想从子过程调用后返回两个结果,下面子过程语句说明合法的是( C )。

ASub f1(Byval n%, Byval m%) BSub f1(n%, Byval m%)

CSub f1(n%, m%) DSub f1(Byval n%, m%)

8. VB应用程序中,以下正确的描述是( B )。

A)过程的定义可以嵌套,但过程的调用不能嵌套

B)过程的定义不可以嵌套,但过程的调用可以嵌套

C)过程的定义和调用均不可以嵌套

D)过程的定义和调用均可以嵌套

9. 以下叙述中错误的是( C )。

A)一个工程中只能有一个Sub Main过程

B)窗体的Show方法的作用是将指定的窗体装入内存并显示该窗体

C)窗体的Hide方法和Unload方法的作用完全相同

D)若工程文件中有多个窗体,可以根据需要指定一个窗体为启动窗体

10. 以下叙述中错误的是( D )。

A)如果过程被定义为Static类型,则该过程中的局部变量都是Static类型

BSub过程中不能嵌套定义Sub过程

CSub过程中可以嵌套调用Sub过程

D)事件过程中可以像通用过程一样由用户定义过程名

11. 定义带可变参数的过程,使用的关键字是( C )。

AOptional BOption CParam DPrivate

12. 定义带可选参数的过程,使用的关键字是( A )。

AOptional BOption CParam DPrivate

二、填空题

1. 在过程定义的首部出现的变量名叫做( 形式 )参数,而在调用过程中传送给过程的(常数、变量、数组元素、表达式)叫做( 实在 )参数。

2. 定义和调用函数或过程时参数传递的两种方法是(按值传递,按地址传递)。

3. 在窗体的通用段用Dim语句定义的变量是(窗体)级变量,它只能在(本窗体)中使用。

4. 全局级过程在定义时可以默认,也可以使用关键字( Public )进行显示声明;窗体/模块级的过程声明时要用关键字( Private)。

5. Param关键字声明可变参数时,被声明的参数只能是(变体类型数组)。

6. 在带可选参数的过程中,使用(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()

Dim a As Integer

a = 2

For i = 1 To 3

Print f(a);

Next i

End Sub程序运行后,单击命令按钮,输出结果为:4 5 6

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 1

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)

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 9

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

End Sub程序运行后,单击命令按钮,输出结果为:2 4 6 8

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

程序运行后,单击命令按钮,输入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%

k = 4

m = 1

p = func(k, m)

Print p;

p = func(k, m)

Print p

End Sub

程序运行后,单击命令按钮,输出结果为:8 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

Call p1(a, b)

Print a, b, c

Call p2(a, b)

Print a, b, c

End Sub 4 6 6

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

9. 阅读程序:

Private Sub command1_click()

Dim m%, i%, x%(10)

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 5 7 4 5

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

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 10 2 6

12. 阅读程序:

Private Sub command1_click()

Dim x%, y%

x = 9: y = 8

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 8

13. 阅读程序:

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 7 12

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;

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. 值传递与地址传递的选择与其特点是什么?

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

6. Form1窗体通用声明部分声明的变量,可否在Form2窗体中的过程被访问?

7. 要使变量在某事件过程中保值,有哪几种变量声明的方法?

8. 指出下面过程语句说明中的错误:

1Sub f1n% as integer 2Function f1%f1%

3Sub f1ByVal n%()) 4Sub f1xias integer)

9. 已知有如下求两个平方数和的fsum子过程:

Public Sub fsumsum%, byval m%, byval n%

Sum=m*m+n*n

End Sub

在事件过程中有如下变量声明:

Dim a%,b%,c!

a=10

b=20

则指出如下过程调用语句错误所在:

1fsum 3,4,5 2fsum c, a, b 5call fsum c, a, b

3fsum a+b, a, b 4call fsum(sqr(c), sqr(a), sqr(b))

1. 子过程和函数过程的相同点:函数过程和子过程都是功能相对独立的一种子过程结构,它们有各自的过程头、变量声明和过程体。在程序中使用它们不但可以避免频繁的书写重复的程序语句,缩短代码,而且使程序条理清晰,容易阅读。

子过程和函数过程的不同点:

1)过程声明的关键字不同,子过程用Sub,函数过程用Function

2)子过程名无值就无类型声明,函数过程有值就有类型声明。

3)函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值一次;而子过程名在过程内不能赋值。

4)调用方式不同,子过程是一句独立的语句,可用call子过程名或省略call直接以子过程名调用;函数过程不是一句独立的语句,是一个函数值,必须参与表达式的运算。

5)一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数定义的形式,并在子过程的形参表中增加一个地址传递的形参来传递结果。但反过来,用一个函数过程去替代一个子过程,有时是不容易实现的。

2. 形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个数、类型、位置,形参的名字并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。

形参不能是常量、表达式或数组元素,只能是变量。

实参是调用子过程时提供给过程形参的初始值或通过过程体处理过后获得的结果。

3. 调用时用实参代替形参,实参与形参在个数、位置、类型一一对应,但实参与形参名相同与否无关。

VB在调用过程时,提供了命名参数的功能,在调用时使用形参名,而位置可任意;同时VB还提供了可选参数的功能,也就是实参与形参个数不一定相等。

4. 仅要从调用者获得初值,应使用值传递;要将过程运算结果提供给调用者,必须是地址传递。数组、记录类型和对象必须使用地址传递。

调用时地址传递对应的实参不应该是表达式或常量。在VB中尽管不显示出错信息,但得不到所期望的值。

能够用值传递实现的,尽量用值传递,减少过程间关联,有利于程序的调试。

5. 利用VB提供的函数LBoundUBound确定数组的上、下界。

6. 可以,条件是要在Form1窗体通用声明部分声明的变量是PublicForm2窗体中的过程被访问时变量名前加Form1

7.方法一:在标准模块中声明Public的变量;

方法二:在某事件过程所在的窗体的通用声明段声明变量;

方法三:在某事件过程以Static关键字声明的变量。

8. 1)错误为Sub子过程名无返回值,也就没有类型

2)函数名与形参名相同

3)形参n为数组,不允许声明为ByVal值传递

4)形参x(i)不允许为数组元素

9. 1fsum 子过程的第一个形参是地址传递,因此对应的实参3不应该是常量。

2fsum子过程的第一个形参是整型且地址传递,对应得实参c是单精度,类型不匹配。

3fsum子过程的第一个形参是地址传递,因此对应的实参a+b不应该是表达式。

4fsum子过程的第一个形参是地址传递,因此对应的实参(sqr(c) 不应该是表达式。

5)用call语句调用 fsum子过程,必须加圆括号括起实参。.

第七章 一、选择题

1. 要判断在文本框中是否按了Enter键,应在文本框的( D )事件中判断。

AChange BKeyDown CClick DKeyPress

2. 以下选项中,没有Caption属性的对象是( B )。

A)命令按钮 B)组合框 C)窗体 D)单选框

3. 计时器控件的控件值是( D )。

ACaption BValue CInterval DEnabled

4. 以下选项中,( B )不是鼠标操作事件。

ADragDrop BGotFocus CDblClick DMouseDown

5. 以下选项中,( A )是键盘操作事件。

AKeyUp BGotFocus CDblClick DMouseDown

6. 设置复选框或单选按钮标题对齐方式的属性是( B )。

AAlign BAlignMent CSorted DValue

7. 为了使列表框中的项目分为多列显示,需要设置的属性为( A )。

AColumns BStyle CList DMultiLine

8. 要想不使用shiftctrl键就能在列表框中同时选择多个项目,则应把该列表框的MultiSelect属性设置为( B )。

A0 B1 C2 D)其他

9. 删除列表框中指定的项目所使用的方法为( D )。

AMove BRemove CClear DRemoveItem

10. 当拖动滚动条中的滚动块时,将触发滚动条的( C )事件。

AMove BChange CScroll DSetFocus

11. 用户在组合框中输入或选择的数据可以通过( C )属性获得。

AList BListIndex CText DListCount

12. 下列控件中,没有Caption属性的是( B )。

A)框架 B)文本框 C)复选框 D)单选按钮

13. 复选框的Value属性为1时,表示( B )。

A)复选框未被选中 B)复选框被选中

C)复选框内有灰色的勾 D)复选框操作有错误

14. 用来设置粗体字的属性是( C )。

AFontItalic BFontName CFontBold DFontSize

15. 将数据项“china”添加到列表框List1中成为第一项应使用( A )语句。

AList1.AddItem “china”, 0 BList1.AddItem “china”, 1

CList1.AddItem 0, “china” DList1.AddItem 1, “china”

16. 引用列表框List1最后一个数据项应使用( B )。

AList1.List(List1.ListCount) BList1.List(List1.ListCount-1)

CList1.List(ListCount) DList1.List(ListCount-1)

17. 假如列表框List1有四个数据项,那么把数据项”china”添加到列表框的最后,应使用( D )语句。

AList1.AddItem “china”, 3

BList1.AddItem “china”, List1.ListCount-1

CList1.AddItem 3, “china”

DList1.AddItem “china”, List1.ListCount

18. 假如列表框List1中没有被选定的项目,则执行List1.RemoveItem List1.ListIndex语句的结果是( D )。

A)移去第一项 B)移去最后一项

C)移去最后加入列表的一项 D)以上都不对

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

A)在Debug窗口中输出被选定的项目的索引值

B)在Debug窗口中输出True

C)在窗体上输出被选定的项目的索引值 D)在窗体上输出True

20 在下列说法中,正确的是( B )。

A)通过适当的设置,可以在程序运行期间,让时钟控件显示在窗体上

B)在列表框中不能进行多项选择 C)框架也有clickdblclick事件

D)在列表框中能够将项目按字母顺序从大到小排列

21. 为了防止用户随意将光标置于控件之上,应( D )。

A)将控件的TabIndex属性设置为0

B)将控件的TabStop属性设置为True

C)将控件的TabStop属性设置为False

D)将控件的Enabled属性设置为False

22. 下列( D )控件没有MinMaxValue属性。

ASlider BProgressBar CUpDown DSSTab

23. Slider控件的Min属性为1Max属性为40TickFrequency属性为4时,滑标上的可见刻度数是( A )个,划分了( )等分。

A1110 B2120 C3130 D4140

24. 一个UpDown控件与文本框“捆绑”在一起,其MinMaxValueIncrement分别为01093,并且选定了“换行”功能,当用鼠标单击向上的箭头时,文本框中的值应是( A )。

A10 B12 C0 D2

25. 下面关于拖放和OLE拖放的叙述中,正确的是( D )。

A)只要对控件的属性进行适当的设置,就能将控件从一个地方移动到另一个地方

B)文本框、图片框和列表框完全支持自动OLE拖放

C)当OLEDropMode属性为1时,控件自动实现OLE“放”操作

D)当控件的DragMode设置为1时,它不能接受ClickMouseDown事件

26. 在下面关于常用的ActiveX控件的说法中,正确的是( B )。

A)在Animation控件中,当用Open方法打开AVI文件后直接自动播放

BSlider控件有ScrollChange事件

CUpDown不能与Slider“捆绑”

D)选项卡只可以出现在控件的顶端

27. 当用户按下并且释放一个键后会触发KeyPressKeyUpKeyDown事件,这三个事件发生的顺序是( B )。

AKeyPressKeyDownKeyUp

BKeyDown KeyPressKeyUp

CKeyDownKeyUpKeyPress D)没有规律

28. 在下列关于键盘事件的描述中,正确的是( D )。

A)按下键盘上的任意一个键,都会引发KeyPress事件

B)大键盘上的“1”键和数字键盘的“1”键的KeyCode码相同

CKeyDownKeyUp事件过程中有KeyAscii参数

D)大键盘上的“4”键的上档字符是“$”,当同时按下Shift和大键盘上的“4”键时,KeyPress事件过程中的KeyAscii参数值是“$”ASCII

29. KeyDownKeyUp事件过程中,能用来检查CtrlF3是否同时按下的表达式为 C )。

A(Button=vbCtrlMask) And (KeyCode=vbKeyF3)

BKeyCode=vbKeyControl+vbKeyF3

C(kEYcODE=vbKeyF3) And (Shift And vbCtrlMask)

D(Shift And vbCtrlMask) And (KeyCode And vbKeyF3)

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

A)在KeyDownKeyUp事件过程中摒弃非数字输入

B)在Validate事件过程中利用IsNumeric C)在Change事件过程中利用IsNumericD)在KeyPress事件过程中摒弃非数字输入

31. 当用户将焦点移动到另一个应用程序时,当前应用程序的活动窗体将( D )。

A)发生DeActivate事件 B)发生DeActivateLostFocus事件

C)发生LostFocus事件 DDeActivateLostFocus事件都不发生

32. 只能用来显示字符信息的控件是( C )。

A)图像框 B)图片框 C)标签 D)文本框

33. 确定复选框是否被选中,应访问的属性是( B )。

ASelected BValue CChecked DStyle

34. 要设置计时器控件的定时时间,需设置的属性是( D )。

AValue BCaption CEnabled DInterval

35. 不能触发滚动条Change事件的操作是( A)。

A)拖动滚动条中滑块 B)单击滚动条中滑块

C)单击滚动条两端箭头 D)单击箭头与滑块之间的滚动条

36. 计时器控件,如果希望每秒产生10个事件,则要将Interval属性的值设置为(C )。

A1 B10 C100 D1000

37. 在窗体上画两个单选按钮Option1Option2和一个复选框Chech1,要求程序运行时,Option1单选按钮和Check1复选框被选中,为了完成要求而要使用的语句序列是( D )。

AOption1.Value=True : Check1.Value=False

BOption1.Value=True : Check1.Value=True

COption2.Value=False : Check1.Value=True

DOption1.Value=True : Check1.Value=1

38. 以下叙述中错误的是( C )。

A)在KeyUpKeyDown事件过程中,从键盘上输入Aa被视作相同的字母

B)在KeyUpKeyDown事件过程中,将键盘上的“1”和右侧小键盘上的“1”视作不同的数字(即具有不同的KeyCode

CKeyPress事件中不能识别键盘上某个键的按下与释放

DKeyPress事件中能识别键盘上某个键的按下与释放

39. 不能作为容器使用的对象是(C)。

APicture BFrame CImage DForm

40. 能作为容器使用的对象是( A )。

APicture BTextBox CImage DLabel

41. 滚动条的默认属性是( C )。

AMin BMax CValue DName

42. 文本框能返回ASCII码值的事件是( C )。

AKeyDown BKeyUp CKeyPress DKeyMove

43. 下面选项中,不能用于列表框控件的方法是( C )。

AAddItem BRemoveItem CCls DClear

44. 组合框有3种风格,可以通过( C )属性改变组合框的风格。

ABackStyle BBorderStyle CStyle DSorted

45. 若要获得滚动条的当前值,可访问( B )属性。

AMin BValue CLargeChange DMax

46. 关于鼠标的MouseDown事件下列说法正确的是( C )。

AMouseDown事件不能判断鼠标的位置

BMouseDown事件的Button参数是用来判断组合键的

CMouseDown事件可以判断用户是否使用组合键

DMouseDown事件是鼠标向下移动时被触发的事件

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”,单击命令按钮,则文本框中显示的内容为( C )。

Aabcdefg B)不显示任何信息

CABCDEFG D)出错

48. 在窗体上画一个文本框和一个命令按钮,并把窗体的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”,单击命令按钮,则文本框中显示的内容为( B )。

Aabcdefg B)不显示任何信息 CABCDEFG D)出错

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”,则文本框中显示的内容为( D )。

Aa BA Caaaaaaa DAAAAAAA

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 )。

AA BA CA DA

A B C D

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)同时按下CtrlAlt键和鼠标左键

C)同时按下Shift键和鼠标右键 D)同时按下CtrlAlt键和鼠标右键

52. 当一个对象的DragOver事件被触发时,其State参数值为1,则表示鼠标正( B )对象的区域。

A)进入 B)退出 C)位于 D)不确定

53. Form1窗体上有两个命令按钮Command1Command2,程序代码如下:

Private Sub Form_Load()

Command1.DragMode=0

Command2.DragMode=0

End Sub

Private Sub Command1_Click()

Command2.Drag 1

End Sub

程序运行后,用鼠标单击命令按钮Command1之后,鼠标的位置是( B )。

A)在Command1 B)在Command2

C)在窗体上 D)以上都不正确

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

AMouseDowncmd1上发生,MouseMove在窗体上发生,MouseUpcmd2上发生

BMouseDownMouseMoveMouseUp都在cmd1上发生

CMouseDownMouseMoveMouseUp 都在cmd2上发生

DMouseDowncmd1上发生,MouseUpcmd2上发生,MouseMovecmd1、窗体和cmd2上依次发生

二、填空题

1. VB中的控件包括三类,分别是(标准控件、ActiveX控件、可插入对象 )。

2. 计时器事件之间的时间间隔通过( Interval)属性设置。

3. 有时候需要暂时关闭计时器,这可以通过( Enabled )属性来实现。

4. 组合框有三种不同的类型,这3种类型是( 下拉式组合框、简单组合框、下拉式列表框, ),分别把( Style )属性设置为( 0 )、(1 )、( 2 )来实现。

5. 3种不同的组合框中,只能选择而不能输入数据的组合框是( 下拉式列表框 )。

6. 复选框的(Value )属性设置为2—Grayed时,变成灰色,禁止用户选择。

7. AlignMent )属性设置为1,单选按钮和复选框的标题显示在左边。

8. Style )属性设置为1,单选按钮和复选框以图形方式显示。

9. 在程序运行时,如果将框架的( Enabled )属性设为False,则框架的标题呈灰色,表示框架内的所有对象均被屏蔽,不允许用户对其进行操作。

10. 列表框中项目的序号是从( 0 )开始的。

11. ListCount-1 )表示列表框中最后一项的序号。

12. Clear )方法可清除列表框的所有内容。

13. 列表框中的(ListSelected )属性是数组。

14. 组合框是组合了文本框和列表框的特性而形成的一种控件,(下拉式列表框)风格的组合框不允许用户输入列表框中没有的项。

15. 滚动条响应的重要事件有( ScrollChange)。

16. 当用户单击滚动条的空白处时,滑块移动的增量值由(LargeChange)属性决定。

17. 滚动条产生Change事件是因为(Value )值改变了。

18. 如果要每隔15s产生一个Timer事件,则Interval属性应设置为( 15000 )。

19. 在设计状态,由Tabs和(TabsPerRow )属性决定SSTab控件中的选项卡总行数。

20. 当用户单击鼠标右键时,MouseDownMouseUpMouseMove事件过程中的Button参数值为( 2)。

21. 当用户同时按下CtrlShift键并单击鼠标时,MouseDownMouseUpMouseMove事件过程中的Shift参数值为( 3 )。

22. 要改变鼠标的形状,必须先设置( MousePointer )属性为vbCustom,再设置( MouseIcon )属性。

23. 只要将MousePointer属性设置为( 0 ),鼠标指针就恢复原样。

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

25. 控件的( DragMode)属性设置为1时启动自动拖放模式。

26. 当源对象被拖动到目标对象上方时,在目标对象上将引发( DragOver )事件,释放 时又会引发( DragDrop)事件。

27. 控件的(DragIcon)属性决定控件被拖动时显示的图标。

28. 从列表框中删除一个项目使用的方法是( RemoveItem )。

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

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

31在执行KeyPress事件过程中KeyAscii是所按键的(AscII码)值对于有上档字符和下挡字符的键当执行KeyDown事件过程时KeyCode是(下档键 )字符的(AscII码)值。

32. 为了定义自己的鼠标光标,首先将( MousePointer )属性设置为(99),然后把(MouseIcon)属性设置为一个图标文件。

33. 为了执行自动拖放,必须把( DragMode )属性事件设置为( 1 );而为了执行手工拖放,必须把该属性设置为( 0 )。

34. KeyDownKeyUp事件过程中,当参数Shift的值为( 1,2,3 )时,分别代表(ShiftCtrlAlt)键。

35. MouseDownMouseUp事件过程中,当参数Button的值为( 1 )、( 2 )、( 3 )时,分别代表(左键、右键、中键)键。

36. MouseDown事件中,当Shift参数值为2时,表明是按( 右)键产生的。

37. 在命令按钮上按下鼠标按钮时,所触发的事件是(MouseDown ),释放鼠标按钮时所触发的事件是( MouseUp )。

三、简答题

1. VB中的控件有几种?它们的区别是什么?

2. “工程”菜单中的“部件”命令和“引用”命令的作用有什么区别?

3. 框架的作用是什么?如何在框架中建立控件?

4. 有哪几种方法可以在列表框添加选项?列表框中的选项在程序运行期间能否修改?

5. 组合框有哪几种类型?能否用文本框加列表框实现组合框的功能?

6. 如果时钟控件每0.5分钟发生一个Timer事件,则Interval属性应设置为多少?

7. VB中实现动画有哪几种方法?

8. 指出在何时发生对象的MouseDownMouseUpMouseMove事件?

9. MouseDown事件发生在MouseUpClick事件之前,但MouseUpClick事件发生的次序与对象有关。请编写一个小程序测试在命令按钮和标签上MouseDownMouseUpClick事件发生的顺序。

10. 如何在程序运行期间改变鼠标的形状?

11. KeyDown事件过程中,如何检测CtrlF3是否同时按下?

12. KeyDownKeyPress事件的区别是什么?

13. 计算机键盘上的“4”键的上档字符是“$”,当同时按下shift和键盘上的“4”键时,KeyPress事件发生了几次?过程中的值是多少?

14. 确保文本框中输入的全部是数字的最佳方法是什么?

15. 窗体的KeyPreview属性的作用是什么?当KeyPreview属性为True时从键盘输入的数据需经过那几个平台才能到达文本框?

16. 如果在KeyDown事件过程中将KeyCode设置为0KeyPressKeyAscii参数会不会受影响?

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.DLLActiveX.Exe,它们需要用“工程”菜单中的“引用”命令设置对对象库的引用,引用后工具箱上没有图标显示,但是可以用“对象浏览器”查看其中的对象、属性、方法和事件。

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

   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

  测试可以发现,在标签上发生的顺序是:MouseDownMouseUpclick,而在命令按钮上发生的顺序是:MouseDownclickMouseUp

  10.鼠标的形状由MousePointer属性决定。可以在属性窗口中设置,也可以在程序代码中设置。在程序运行期间,通过对该属性的设置可以改变鼠标的形状。如果想使用一个自定义图标,则应把MousePointer属性设置为99vbCustom,然后将图标文件用LoadPicture函数装入MouseIcon属性中,或者某个图形框中的图标直接赋值给MouseIcon属性。

  11.使用(KeyCode=vbKeyF3) and (Shift=vbCtrlMask)或者(KeyCode=114) and (Shift=2)表达式,可以检测CtrlF3是否同时按下,F3的键盘扫描码是114

  12.用户按下并且释放一个会产生ASCII码的键时,触发KeyPress事件;用户按下键盘上任意一个键时,触发KeyDown事件。KeyDownKeyPress事件的主要区别有:

  (1)从时间上来说,按下键盘上的一个键,立即触发KeyDown事件,但此时没有引发KeyPress事件。只有在释放该键时触发KeyPress事件。

  2)用户按下键盘上的任一键,就会在相应对象引发KeyDown事件,但是并不是按下和释放键盘上的任意一个键都会引发KeyPress事件,KeyPress事件只对会产生ASCII码的按键有反映,包括数字、大小写字母、EnterBackspaceESCTab等。对于如方向键这样的不会产生ASCII码的按键,KeyPress事件不会被触发。

  13.KeyPress事件发生了一次,KeyAscii参数值是36,也就是“$”字符的ASCII码为36。因为KeyPress事件是在输入一个ASCII码字符时发生的事件,尽管在输入“$”字符时按了两个键,但是输入了一个字符,所以KeyPress事件发生了一次。

  14.如果窗体上只有一个文本框,则在文本框或窗体的KeyPress事件进行数据过滤都是很好的方法;如果有多个文本框,则应在窗体的KeyPress事件中进行处理,好处是只需一个KeyPress事件过程,不必为每一个文本框都编写事件过程。

   文本框的KeyPress事件过程中:

   Sub Text1_KeyPress(KeyAscii as integer)

   if KeyAsciiAsc("9") then KeyAscii=0

   End Sub

   窗体的KeyPress事件过程中:

   '将窗体的KeyPreview属性设置为True后才有效

   Sub Form_KeyPress(KeyAscii as integer)

   if KeyAsciiAsc("9") then KeyAscii=0

   End Sub

  15.窗体的KeyPreview属性决定是否触发窗体的KeyPressKeyUpKeyDown事件。如果它为True,则当焦点在某个控件上进行键盘操作时,首先触发窗体键盘事件,然后发生控件的键盘事件。

  当窗体的KeyPreview属性为True时,从键盘输入的数据经过窗体的KeyPress事件过程,再经过文本框的KeyPress事件过程,最终文本框。如果在KeyPress事件过程中修改了KeyAscii参数,则会影响文本框接收的数据。

  16.如果在KeyDown事件中将KeyCode设置为0KeyPressKeyAscii参数不会受影响,如果输入对象是文本框,那文本框的内容也不会受影响。

  17.键盘扫描代码是对键盘上按键的编码,它告诉事件过程用户所操作的物理键。也就是说,大写字母和小写字母使用同一个键,它们的KeyCode相同。对于有上档字符和下档字符的键,其KeyCode也是相同的,为下档字符的ASCII码。

  18.普通拖放是用鼠标将控件等对象从一个地方拖动到另一个地方再放下,一般来说,它拖放的对象是控件;而OLE拖放是将数据从一个地方或应用程序中移到另一个控件或应用程序中,一般来说,它拖放的对象不是整个控件,而是控件中的项目或数据。

第九章 一、选择题

1. 下面关于顺序文件的描述,正确的是( D )。

A)每条记录的长度必须相同 B)文件的组织结构复杂

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

D)数据只能以ASCII码形式存放在文件中,所以可通过文本编辑软件显示

2. 下面关于随机文件的描述,不正确的是( B )。

A)文件的组织结构比顺序文件复杂 B)一个文件中记录号不必唯一

C)每条记录的长度必须相同 D)可通过编程对文件中的某条记录方便的修改

3. 按文件的组织方式分为( A )。

A)顺序文件和随机文件 BASCII文件和二进制文件

C)程序文件和数据文件 D)磁盘文件和打印文件

4. 顺序文件是因为( D )。

A)文件中按每条记录的记录号从小到大排序好的

B)文件中按每条记录的长度从小到大排序好的

C)文件中按记录的某关键数据项的从大到小的顺序

D)记录按进入的先后顺序存放的,读出也是按原先写入的先后顺序读出

5. 随机文件是因为( C )。

A)文件中的内容是通过随机数产生的 B)文件中的记录号是通过随机数产生的

C)可对文件中的记录根据记录号随机读写 D)文件的每条记录的长度是随机的

6. 文件号最大可取的值为( B )。

A255 B511 C512 D256

7. Kill语句在VB语言中的功能是( D )。

A)清内存 B)清病毒 C)清屏幕 D)删除磁盘上的文件

8. Print #1Str1$中的Print是( A )。

A)文件的写语句 B)在窗体上显示的方法 C)子程序名 D)以上都不是

9. 为了建立一个随机文件,其中每一条记录由多个不同数据类型的数据项组成,应使用( A )。

A)记录类型 B)数组 C)字符串类型 D)变体类型

10. 要从磁盘上读入一个文件名为“c:\t1.txt”的顺序文件,下列( A )正确。

AF=”c:\t1.txt” : Open F For Input As #1

BF=”c:\t1.txt” : Open “F” For Input As #2

COpen “c:\t1.txt” For Output As #1 DOpen c:\t1.txt For Input As #2

11. 全局记录类型定义语句应出现在( B )。

A)窗体模块 B)标准模块

C)窗体模块、标准模块都可以 D)窗体模块、标准模块都不可以

12. 要建立一个学生成绩的随机文件,如下定义了学生的记录类型,由学号、姓名、三门课程成绩(百分制)组成,程序段( C )正确。

AType stud

no as integer

name as string

mark(1 To 3) as single

End Type

BType stud

no as integer

name as string*10

mark() as single

End Type

CType stud

no as integer

name as string*10

mark(1 To 3) as single

End Type

DType stud

no as integer

name as string*10

mark(1 To 3) as string

End Type

13. 在用Open语句打开文件时,如果省略“For方式”,则打开的文件的存取方式是( )。

A)顺序输入方式 B)顺序输出方式

C)随机存取方式 D)二进制方式

14. 关于顺序文件和随机文件的说法错误的是(A )。

A)随机文件的操作与顺序文件相同 B)随机文件读写操作比顺序文件灵活

C)顺序文件中记录的逻辑顺序与存储顺序是一致的

D)随机文件的结构特点是固定记录长度以及每条记录均有记录号

15. 下列关于打开文件的说法正确的是( A )。

A)用Open语句可以打开随机文件、二进制文件

BVB6.0在引用文件之前无需将其打开

COpen语句的文件号可以是整数或字符表达式

D)使用For Output参数不能建立新的文件

16. 目录列表框的Path属性的作用是( A )。

A)显示当前驱动器或指定驱动器上的目录结构

B)显示当前驱动器或指定驱动器上的某目录下的文件名

C)显示根目录下的文件名 D)显示该路径下的文件

17. 以下叙述中正确的是( B )。

A)一个记录中所包含的各个元素的数据类型必须相同

B)随机文件中每个记录的长度是固定的

COpen命令的作用是打开一个已经存在的文件

D)使用Input #语句可以从随机文件中读取数据

18. 以下叙述中错误的是( B )。

A)一个工程中可以包含多个窗体文件

B)在一个窗体文件中用Private定义的通用过程能被其他窗体调用

C)在设计程序时窗体、标准模块、类模块等需要分别保存为不同类型的磁盘文件

D)全局变量必须在标准模块中定义

19. 随机文件以( B )为单位来进行文件读取。

A)字节 B)记录 C)字符 D)字段

20. 顺序文件有3种打开方式,下面( A )不是。

ARandom BInput COutput DAppend

21. VB6.0中,文件操作的一般顺序是( D )。

A)打开文件操作 B)打开文件关闭文件操作

C)操作关闭文件 D)打开文件操作关闭文件

二、填空题

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

2. 打开文件所使用的语句为( Open 文件名 For 模式 As [#]文件号 [len=记录长度] )。在该语句中,可以设置的输入输出方式包括( InputOutputAppendRandomBinary ),若省略,则为( Random )方式。存取类型分为(ReadWriteRead Write 3种。

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

4. VB中,顺序文件的读操作通过( InputLine Input )语句或( Input)函数实现。随机文件的读写操作分别通过(GetPut )语句实现。

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

三、补充程序

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

Private Sub Form_Load()

(1)

Text1.Text=””

End Sub

Private Sub Text1_KeyPress(KeyAscii as integer)

If KeyAscii=13 then

If (2) then

Close #1

End

Else

(3)

Text1.Text=””

End if 1open c:\stud1.txt” for output as #1

End if 2ucase(text1)=”END”

End sub 3print #1,text1

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

Private Sub Command1_Click()

Dim str1$

Open “c:\old.dat” (1) as #1

Open “c:\new.dat” (2)

Do While (3)

(4)

Print #2,str1

Loop

(5)

(6)

End sub

1for input

2for output as #2

3not eof(1)

4line input #1,str1

5close #1,#2

6kill “c:\old.dat”

3. 文本文件合并。将文本文件”ttxt”合并到”t1.txt”文件中.

Private Sub Command1_Click()

Dim s$

Open “t1.txt” (1)

Open “ttxt.txt” (2)

Do While Not EOF(2)

Line Input #2, s

Print #1,s

Loop

Close #1, #2

End sub

1for append as #1

2for input as #2

4. 将任一整数插入递增次序的数组a中,使数组仍有序。数组a各元素的值从C盘根目录文件名为data.txt中读取,各数据项间以逗号分隔。

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 (2)

i=i+1

Loop

B=val(InputBox(“输入待插入的数”))

ReDim Preserve a(i)

K=i

Do while (3)

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

4k=k-1

5. 随机文件的修改。对已建立的有若干条记录的文件名为”c:\stud.dat”的随机文件,记录类型由学号、姓名、三门课程成绩组成。要求读出记录号为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

1d as stud

2get #1,5,s

3s.mark(2)=s.mark(2)+5

4get #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” (5)

Open “c:\my\Lszg.txt” (6)

Do while not eof(2)

Input #2, no, gz, zc

(7)

Loop

Close #1, #2

End sub

1input #1,no,gz,zc

2case “教授”,”副教授

3gz=gz*1.10

4write #2,no,gz,zc

5for output as #1

6for input as #2

7write #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) (1)

next i

if right(file1.path, 1)=”\” then

fname=file1.path+file1.filename

else

fname= (2)

end if

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= (5)

s(i)=s(i)+1

end if

next j

print “出现的字母及个数

for i=1 to 26

if (6)

next i

End sub

1=0

2file1.path+”\”+file1.filename

3input(lof(1),1)

4ucase(mid(text1,i,1))

5asc©-asc(“A”)+1

6s(i)>0 then print chr(i+64);”:”;s(i);

四、简答题

1. 什么是文件?什么是记录?

2. 根据访问模式,文件分为那几种类型?

3. 文件列表框的FileName属性中是否包含路径?

4. 构造满足下列条件的Open语句:

1)建立一个新的顺序文件Seqnew.dat,供用户写入数据,指定文件号为1

2)打开一个老的顺序文件Seqold.dat,用户将从该文件读出数据,指定文件号为2

3)打开一个老的顺序文件Sepappend.dat,用户将在该文件后面添加数据,文件号通过调用FreeFile函数获得。

5. 请用三种不同的方法,将文本文件Text.dat中的内容读入变量strText$中(写出程序代码片断)。

6. 请说明Print#Write#语句的区别。

7. 请说明EOF()和LOF()函数的功能。

8. 随机文件与二进制文件的读写操作有何不同?

9. 请写出程序代码片断,将磁盘上的两个文件合并。(提示:把它们作为二进制文件打开)

10. 为什么有时不使用Close语句关闭文件会导致数据文件的丢失?

11. VBKill语句的作用是什么?

12. 在何种情况下Name语句的作用是移动文件?

1. 文件是指存放在外部介质上的以文件名标识的数据的集合。记录是指计算机存取数据的基本单位,它由若干相互关联的数据项组成。

2. 根据访问模式文件分成顺序文件、随机文件、二进制文件。顺序文件可按记录、按行、按字符数三种方式读出;随机文件按记录为单位读出;二进制文件按字节为单位读出。

3. 文件列表框的FileName属性不包含路径,要包含路径,必须在文件名前增加文件列表框的Path属性,而且还要考虑根目录与子目录的使用差别。

4.1open “seqnew.dat” for output as #1

2open “seqnew.dat” for input as #2

3dim no%

no=freefile

open “seqnew.dat” for append as #no

5. 三种不同的方法为按字符读、按行读、整个文件一次读入

按字符读

strTest=””

do while not eof(1)

strtest=strtest+input(1,#1)

loop

按行读:

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

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

vb习题集和答案

相关推荐