VB机试题.docx
《VB机试题.docx》由会员分享,可在线阅读,更多相关《VB机试题.docx(21页珍藏版)》请在冰豆网上搜索。
VB机试题
1、在考生文件夹下有一个工程文件sjt4.vbp(相应的窗体文件名为sjt4.frm),其功能是通过调用过程Average求数组的平均值,请装入该文件。
程序运行后,在几个文本框中各输入一个整数,然后单击命令按钮,即可求出数组的平均值,并在窗体上显示出来,如图2.9所示。
这个程序不完整,请把它补充完整,并能正确运行。
图2.9
要求:
去掉程序中的注释符,把程序中的"?
"改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分。
存盘时不得改变原工程文件名、窗体文件名及其路径
(2)【考点分析】内部函数Lbound()、Ubound()、Val()、Array()、CInt(),OptionBase数组起始下标,自定义过程Function(),命令按钮控件的Caption属性,文本框Text属性,数组变量和窗体Print方法。
OptionBase定义数组起始下标,OptionBase1指下界为1。
【解题思路】文本框里的内容(包括数字)默认都是当作字符串来处理的,如果要参与数据运算,则需要先用Val函数将其转化为数值类型。
利用Array函数对数组各元素赋值,数组的上下界可用UBound和LBound函数获得,语法格式分别为:
LBound(数组[,维]),UBound(数组[,维])。
单击命令按钮,通过Array()函数返回一个数组,其值分别是四个文本框的数值,并赋给数组arr1,然后使用For循环将数组arr1中每个元素的数据类型转换为整型,并赋给数组arr2具有相同下标的元素,最后调用求平均值Function()过程的Average。
【操作步骤】步骤1:
打开本题工程文件。
步骤2:
分析并编写程序代码。
程序提供的代码
OptionBase1
PrivateFunctionAverage(a()AsInteger)AsSingle
DimStartAsInteger,FinishAsInteger
DimiAsInteger
DimSumAsInteger
'Start=?
(a)
'Finish=?
(a)
'Sum=?
Fori=StartToFinish
'Sum=Sum+?
Nexti
'Average=?
EndFunction
PrivateSubCommand1_Click()
Dimarr1
Dimarr2(4)AsInteger
arr1=Array(Val(Text1.Text),Val(Text2.Text),Val(Text3.Text),Val(Text4.Text))
Fori=1To4
arr2(i)=CInt(arr1(i))
Nexti
'Aver=Average(?
)
Print"平均值是:
";Aver
EndSub
程序结束
参考答案
第1个?
处填入:
Lbound
第2个?
处填入:
UBound
第3个?
处填入:
0
第4个?
处填入:
a(i)
第5个?
处填入:
sum/Finish
第6个?
处填入:
arr2
步骤3:
调试并运行程序,按题目要求存盘。
【举一反三】可以通过基础篇第20套第二大题的第二小题来进行同类知识点的练习。
2.在窗体Form1上建立一个文本框,名称为Text1,MultiLine属性为True,ScrollBars属性为2;再画两个命令按钮,名称分别为Cmd1和Cmd2,标题分别为"读入数据"和"计算保存",程序运行界面如图2.10所示。
要求程序运行后,如果单击"读入数据"按钮,则读入"in5.txt"文件中的100个整数,放入一个数组中(数组下界为1),同时在文本框中显示出来;如果单击"计算保存"按钮,则计算其中前50个数之和,并把求和结果在文本框Text1中显示出来,同时把结果存入考生文件夹中的文件"out5txt"中(在考生的文件夹下有标准模块mode.bas,其中的putdata过程可以把结果存入指定的文件)。
图2.10
注意:
文件必须存放在考生文件夹下,窗体文件名为sjt5.frm,工程文件名为sjt5.vbp,计算结果存入out5txt文件,否则没有成绩。
【考点分析】本题考点有:
文本框ScrollBars、Multiline属性,命令按钮控件的Name、Caption属性,数组变量,文件的操作(Open、Input、Close),标准模块调用过程和OptionExplicit声明语句。
文本框ScrollBars、Multiline属性分别是滚动条属性和多行属性。
当Multiline属性为True时,文本框可以输入或显示多行正文。
同时具有文字处理器自动换行功能。
ScrollBars属性只有在Multiline属性为True时才有效。
0--无滚动条;1--加水平滚动条;2--加垂直滚动条,3--同时加水平和垂直滚动条。
标准模块(.Bas)在标准模块定义的过程,外部过程均可调用。
文件系统控件有三种:
驱动器列表框(DriveListBox),目录列表框(DirListBox)和文件列表框(FileListBox)。
1.打开文件
(1)打开文件的命令是Open,形式为:
Open"文件名"For模式As[#]文件号[Len=记录长度]。
"模式"为下列三种形式之一:
Output:
打开一个文件,对该文件进行写操作;Input:
打开一个文件,对该文件进读写操作;Append:
打开一个文件,在该文件末尾追加记录。
(2)文件号是一个介于1511之间的整数。
2.写操作
将数据写入磁盘文件所用的命令是Write#或Print#命令。
其语法形式如下:
(1)Print#文件号,[输出列表]。
其中输出列表是指[{Spc(n)|Tab(n)}][表达式列表][;|,]。
(2)Write#文件号,[输出列表]。
3.关闭文件
Close[[#]文件号][,[#]文件号]…
【解题思路】本题中涉及文本框显示的内容由Text属性设置;按钮的标题由Caption属性设置,单击命令按钮触发Click事件;本题中涉及文件的操作,读入顺序文件以顺序的方式打开,用Input#语句读取数据,另外需要注意的是,对文件操作完后一定要关闭文件。
【操作步骤】步骤1:
建立界面并设置控件属性,如图3.23所示,如图程序中用到的控件及其属性见表3.8。
图3.23
步骤2:
编写程序代码。
参考答案
OptionExplicit
Dima(1To100)AsInteger
DimiAsInteger
PrivateSubCmd1_Click()
OpenApp.Path&"\in5.txt"ForInputAs#1
Text1.Text=""
Fori=1To100
Input#1,a(i)
Text1.Text=Text1.Text&a(i)&Space(5)
Nexti
Close#1
EndSub
PrivateSubCmd2_Click()
DimsAsInteger
Text1.Text=""
s=0
Fori=1To50
s=s+a(i)
Next
Text1.Text=s
putdata"out5.txt",s
EndSub
3.在考生文件夹中有一个工程文件sjt3.vbp及窗体文件sjt3.frm。
请在窗体Form1上绘制3个文本框,其名称分别为Text1、Text2和Text3,文本框内容分别设置为"计算机等级考试"、"VisualBasic"和空白。
然后绘制两个单选按钮,其名称分别为Opt1和Opt2,标题分别为"交换"和"连接"。
编写适当的事件程序。
程序运行后,如果选中"交换"单选按钮并单击窗体,则Textl文本框中的内容与Text2文本框中的内容进行交换,并在Text3文本框中显示OK,如图2.13所示;如果选中"连接"单选按钮并单击窗体,则把Text1和Text2的内容按Text1在前,Text2在后的顺序连接起来,并在Text3文本框中显示连接后的内容。
图2.13
注意:
不得修改已经给出的程序。
在程序运行结束之前,必须选中一个单选按钮,并单击窗体。
退出程序时必须通过单击窗体右上角的关闭按钮,否则可能无成绩。
存盘时不得改变原工程文件名、窗体文件名及其路径。
【考点分析】本题考点有:
文本框Name、Text属性,单选按钮Name、Caption、Value属性,窗体Click事件,If条件判断语句和连接运算符"+"。
If条件判断语句:
If<表达式>Then
语句块
EndIf
字符串的运算符有两个:
"&"和"+",他们都是将两个字符串拼接起来。
在字符串变量后使用"&"时应注意,变量与运算符"&"间加一个空格。
【解题思路】本题可在窗体Form1的Click事件过程中用If语句来判断哪个单选按钮被选中,然后执行不同操作。
【操作步骤】步骤1:
打开本题工程文件,建立界面并设置控件属性,程序中用到的控件及其属性见表3.11、3.12。
步骤2:
编写程序代码。
参考答案
PrivateSubForm_Click()
IfOpt1.Value=TrueThen
DimstrAsString
str=Text1.Text
Text1.Text=Text2.Text
Text2.Text=str
Text3.Text="OK"
EndIf
IfOpt2.Value=TrueThen
Text3.Text=Text1.Text+Text2.Text
EndIf
EndSub
4.在考生文件夹中有一个工程文件sjt4.vbp和窗体文件sjt4.frm。
请在窗体Form1上绘制3个文本框,其名称分别为Text1、Text2和Text3,文本框内容分别设置为"二级考试"、"计算机"和空白;然后绘制2个单选按钮,其名称分别为Opt1和Opt2,标题分别为"交换"和"连接",编写适当的事件程序。
要求在程序运行时,先单击"交换"单选按钮,使Text1文本框中内容与Text2文本框中内容进行交换,并使"连接"单选按钮消失;然后单击"连接"单选按钮,则把交换后的Text1和Text2的内容以Text1在前、Text2在后的顺序连接起来,并在Text3文本框中显示连接后的内容。
如图2.14所示。
图2.14
注意:
不得修改已经给出的程序。
在程序运行结束之前,必须先单击"交换"单选按钮,后单击"连接"单选按钮。
退出程序时必须通过单击窗体右上角的关闭按钮,否则可能无成绩。
最后原名保存修改后的文件。
【考点分析】本题考点有:
文本框Text属性,单选按钮Name、Caption、Visiable属性,单选按钮Click事件,连接运算符"&"。
【解题思路】本题需在每个单选按钮的Click事件过程中执行不同的操作。
当单选按钮被选中时,它的Value值为True,没被选中则为False。
【操作步骤】步骤1:
打开本题工程文件,建立界面并设置控件属性,程序中用到的控件及其属性见表3.13、3.14。
步骤2:
编写程序代码。
参考答案
PrivateSubOpt1_Click()
DimtempAsString
temp=Text1.Text
Text1.Text=Text2.Text
Text2.Text=temp
Opt1.Visible=False
EndSub
PrivateSubOpt2_Click()
Text3.Text=Text1.Text&Text2.Text
EndSub
5.【考点分析】本题考点有:
菜单编辑器属性设置,菜单Click事件,文本框Text属性,文本框GotFocus事件,If条件判断语句。
菜单的应用要使用菜单编辑器,它有Name(名称)、Caption(标题)、内缩符号和Visable(可见)等属性。
文本框GotFocus事件,指文本框获得焦点,它的相反事件是LostFocus事件,即失去焦点。
【解题思路】本题中隐藏的文本框Text3的功能相当于剪贴板。
在文本框(Text1或Text2)获得焦点触发的GotFocus事件过程中,用窗体变量g_intno记录下该文本框序号(1或2)。
在"编辑"菜单的Click事件过程中,首先根据g_intno的值不同,来判断相应文本框(Text1或者Text2)的内容是否为空,若内容为空,则设置"剪切"和"复制"菜单项不可用,否则设置"剪切"和"复制"菜单项可用;其次判断Text3文本框的内容是否为空,若内容为空,则设置"粘贴"菜单项不可用,否则设置"粘贴"菜单项可用。
在"复制"命令的单击时间过程中,根据g_intro的值不同,将相应文本框(Text1或者Text2)中的内容复制到Text3文本框中,在"剪切"命令的单击事件过程中,除应执行与"复制"命令相同的语句外,还应执行清除当前文本框中内容的语句。
在"粘贴"命令的单击事件过程中,也要根据g_intro值的不同,将Text3文本框中的内容接入相应文本框原内容之后。
【操作步骤】步骤1:
打开本题工程文件,将文本框Text3的Visible属性设置为False。
打开菜单设计器,按表3.15建立菜单项。
步骤2:
建立菜单的操作方法如下:
如图3.24所示,右键单击窗体,选择"菜单编辑器",打开菜单编辑器窗口,依次输入第一项的各个项目:
"编辑"、"vbEdit",输入完成后单击"下一个"输入下一项的各个内容,如图3.25所示。
图3.24
图3.25
步骤3:
依次输入第二项的各个项目:
"剪切"、"vbCut",输入完成后单击内缩符号箭头按钮,如图3.26所示。
图3.26
步骤4:
输入完第二项后单击"下一个",操作同步骤3。
依次输入剩余的两项内容,单击"确定"即可,如图3.27所示。
图3.27
步骤5:
如图3.28所示,设置好窗体界面。
图3.28
步骤6:
修改程序代码。
程序提供的代码
Dimg_intnoAsInteger
PrivateSubvbcopy_Click()
Ifg_intno=1Then
Text3.Text=Text1.Text
ElseIfg_intno=2Then
Text3.Text=Text2.Text
EndIf
EndSub
PrivateSubvbCut_Click()
Ifg_intno=1Then
Text3.Text=Text1.Text
Text1.Text=""
ElseIfg_intno=2Then
Text3.Text=Text2.Text
Text2.Text=""
EndIf
EndSub
PrivateSubvbEdit_Click()
'Ifg_intno=?
Then
IfText1.Text=""Then
vbCut.Enabled=False
vbCopy.Enabled=False
Else
vbCut.Enabled=True
vbCopy.Enabled=True
EndIf
'ElseIfg_intno=?
Then
IfText2.Text=""Then
vbCut.Enabled=False
vbCopy.Enabled=False
Else
vbCut.Enabled=True
vbCopy.Enabled=True
EndIf
EndIf
IfText3.Text=""Then
vbPaste.Enabled=False
Else
vbPaste.Enabled=True
EndIf
EndSub
PrivateSubmnuPaste_Click()
Ifg_intno=1Then
'Text1.Text=?
ElseIfg_intno=2Then
'Text2.Text=?
EndIf
EndSub
PrivateSubText1_GotFocus()'本过程的作用是:
当光标位于Text1中时,g_intno=1'
g_intno=1
EndSub
PrivateSubText2_GotFocus()'本过程的作用是:
当光标位于Text2中时,g_intno=2
g_intno=2'
EndSub
程序结束
参考答案
第1个?
处填入:
1
第2个?
处填入:
2
第3个?
处填入:
Text1.Text+Text3.Text
第4个?
处填入:
Text2.Text+Text3.Text
步骤7:
调试并运行程序,按题目要求存盘。
【举一反三】可以通过达标篇第49套第一大题中的第一小题和优秀篇第55套第二大题来进行同类知识点的练习。
6.在考生文件夹下有一个工程文件sjt5.vbp及窗体文件sjt5.frm。
在窗体Form1上已有3个文本框Text1、Text2和Text3,以及程序。
请完成以下工作:
①在属性窗口中修改Text3的适当属性,使其在运行时不显示,窗体如图2.15所示。
②建立下拉式菜单,见下表。
图2.15
③窗体文件中给出了所有事件过程,但不完整,请去掉程序中的注释符"'",把程序中的问号"?
"改为正确的内容,以便实现以下功能:
当光标所在的文本框中无内容时,"剪切"和"复制"菜单项不可用,否则可以把该文本框中的内容剪切或复制到Text3中;若Text3中无内容,则"粘贴"菜单项不能用,否则可以把Text3中的内容粘贴在光标所在的文本框中的内容之后。
注意:
不能修改程序中的其他部分。
各菜单项的标题名称必须正确。
存盘时不得改变原工程文件名和窗体文件名及其路径。
(1)在考生文件夹中有一个工程文件sjt3.vbp和两个窗体文件,名称分别为sjt3-1.frm和sjt3-2.frm。
其功能是在程序运行时只显示名为Form2的窗体,单击Form2上的"上线"命令按钮,则显示名为Form1的窗体;单击Form1上的"隐身"命令按钮,则Form1窗体消失。
程序正确运行后的界面如图2.18所示。
要求:
图2.18
①把Form2设为启动窗体;在属性窗口中把Form1上按钮的标题改为"隐身",把Form2上按钮的标题改为"上线"。
②本题程序并不完整,删除程序中的注释符"'",将程序中的问号"?
"改为正确的内容,使其实现上述功能,但不得修改程序的其他部分。
③存盘时不得改变原工程文件名和窗体文件名及其路径。
7.在考生文件夹中有一个工程文件sjt4.vbp及其窗体文件sjt4-1.frm和sjt4-2.frm,含有Form1和Form2两个窗体,Form1为启动窗体。
两个窗体上的控件如图2.19所示。
(1)【考点分析】本题考点有:
命令按钮Name、Caption属性,窗体Visible属性。
【解题思路】通过设置窗体Visible属性值来决定该窗口是否可见,命令按钮的标题通过其Caption属性修改;设置启动窗体在"工程属性"窗口中进行;Visible属性设置对象为可见或隐藏。
【操作步骤】步骤1:
程序提供了需要的控件,只需修改这些控件属性即可。
Form1用到的控件及其属性见表3.18,Form2用到的控件及其属性见表3.19。
将窗体Form2设置为启动窗体。
表3.18
控件
命令按钮
属性
Name
Caption
设置值
Cmd1
隐身
表3.19
控件
命令按钮
属性
Name
Caption
设置值
Cmd2
上线
步骤2:
分析并修改程序代码。
程序提供的代码
窗体1的代码:
PrivateSubCmd1_Click()
'Form1.Visible=?
EndSub
窗体2的代码:
PrivateSubCmd2_Click()
'Form1.Visible=?
EndSub
程序结束
参考答案
第1个?
处填入:
False
第2个?
处填入:
True
步骤3:
调试并运行程序,按题目要求存盘。
【举一反三】可以通过基础篇第1套第二大题中的第二小题来进行同类知识点的练习。
图2.19
程序运行后,在Form1窗体的文本框中输入有关信息("密码"框中显示"*"字符),然后单击"提交"按钮则弹出"确认"对话框(即Form2窗体),并在对话框中显示输入的信息。
单击"确认"按钮则程序结束;单击"重输"按钮,则对话框消失,回到Form1窗体。
要求:
①在属性窗口中把Form1的标题改为"注册",把Form2的标题改为"确认"。
②在属性窗口中设置适当的属性,使Form2标题栏上的所有按钮消失。
③本题程序并不完整,删除程序中的注释符"'",将程序中的问号"?
"改为正确的内容,但不得修改程序的其他部分。
存盘时不得改变原工程文件名、窗体文件名及其路径。
【考点分析】本题考点有:
窗体Caption、ControlBox属性,窗体Show方法,标签Name、Caption属性,文本框PasswordChar、Text属性,单选按钮Name、Caption属性,框架Caption属性,For循环语句、If条件判断语句,窗体Print方法。
For循环语句是用来控制循环次数预知的循环结构。
语句形式为:
For循环变量=初值to终值[step步长]
语句块
[ExitFor]
语句块
Next循环变量
【解题思路】修改窗体标题是通过设置其Caption属性来实现的,ControlBox属性用于设置控制菜单框是否在窗体标题栏中显示,为在窗体标题栏中只显示标题信息,需将该属性值设置为False。
文本框的PasswordChar属性可设置用于屏蔽在文本框中输入内容的字符,如"*"。
程序运行时,通过窗体的Show方法可加载并显示该窗体。
【操作步骤】步骤1:
将Form1的Caption属性改为"注册",Form2的Caption属性改为"确认",ControlBox属性改为"False"。
步骤2:
打开本题工程文件,修改程序代码。
程序提供的代码
PrivateSubCmd1_Click()
DimkAsInteger
'Form2.?
Form2.PrintForm1.Lab1.Caption;Form1.Text1
Form2.PrintForm1.Lab2.Capti