二级VISUAL BASIC真题.docx
《二级VISUAL BASIC真题.docx》由会员分享,可在线阅读,更多相关《二级VISUAL BASIC真题.docx(20页珍藏版)》请在冰豆网上搜索。
二级VISUALBASIC真题
2010年3月全国计算机等级考试二级笔试试卷
VisualBasic语言程序设计
一、选择题
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
(11)在VB集成环境中要结束一个正在运行的工程,可单击工具栏上的一个按钮,这个按钮是
(12)设x是整型变量,与函数IIf(x>0,-x,x)有相同结果的代数式是
A)|x|B)-|x|C)xD)-x
(13)设窗体文件中有下面的事件过程:
PrivateSubCommand1_Click()
Dims
a%=100
Printa
EndSub
其中变量a和s的数据类型分别是
A)整型,整型B)变体型,变体型
C)整型,变体型D)变体型,整型
(14)下面哪个属性肯定不是框架控件的属性
A)TextB)Caption
C)LeftD)Enabled
(15)下面不能在信息框中输出“VB”的是
A)MsgBox"VB"B)x=MsgBox("VB")
C)MsgBox("VB")D)CallMsgBox"VB"
(16)窗体上有一个名称为Option1的单选按钮数组,程序运行时,当单击某个单选按钮时,会调用下面的事件过程
PrivateSuboption1_Click(IndexAsInteger)
…
EndSub
下面关于此过程的参数Index的叙述中正确的是
A)Index为1表示单选按钮被选中,为0表示未选中
B)Index的值可正可负
C)Index的值用来区分哪个单选按钮被选中
D)Index表示数组中单选按钮的数量
(17)设窗体中有一个文本框Text1,若在程序中执行了Text1.SetFocus,则触发
A)Text1的SetFocus事件B)Text1的GotFocus事件
C)Text1的LostFocus事件D)窗体的GotFocus事件
(18)VB中有3个键盘事件:
KeyPress、KeyDown、KeyUp,若光标在Text1文本框中,则每输入一个字母
A)这3个事件都会触发B)只触发KeyPress事件
C)只触发KeyDown、KeyUp事件D)不触发其中任何一个事件
(19)下面关于标准模块的叙述中错误的是
A)标准模块中可以声明全局变量
B)标准模块中可以包含一个SubMain过程,但此过程不能被设置为启动过程
C)标准模块中可以包含一些Public过程
D)一个工程中可以含有多个标准模块
(20)设窗体的名称为Form1,标题为Win,则窗体的MouseDown事件过程的过程名是
A)Form1MouseDownB)Win_MouseDown
C)Form_MouseDownD)MouseDown_Form1
(21)下面正确使用动态数组的是
A)Dimart()AsIntegerB)Dimarr()AsInteger
……
ReDimarr(3,5)ReDimarr(50)AsString
C)Dimarr()D)Dimarr(50)AsInteger
……
ReDimarr(50)AsIntegerReDimarr(20)
(22)下面是求最大公约数的函数的首部
Functiongcd(ByValxAsInteger,ByValyAsInteger)AsInteger
若要输出8、12、16这3个数的最大公约数,下面正确的语句是
A)Printgcd(8,12),gcd(12,16),gcd(16,8)
B)Printgcd(8,12,16)
C)Printgcd(8),gcd(12),gcd(16)
D)Printgcd(8,gcd(12,16))
(23)有下面的程序段,其功能是按图1所示的规律输出数据
Dima(3,5)AsInteger
Fori=1To3
Forj=1To5
a(i,j)=i+j
Printa(i,j);
Next
Print
Next
若要按图2所示的规律继续输出数据,则接在上述程序段后面的程序段应该是
A)Fori=iTo5B)Fori=1To3
Fori=1To3Forj=1To5
Printa(j,i);Printa(j,i);
NextNext
PrintPrint
NextNext
C)Forj=1To5D)Fori=1To5
Fori=1To3Forj=1To3
Printa(j,1);Printa(i,j);
NextNext
PrintPrint
NextNext
(24)窗体上有一个Text1文本框,一个Command1命令按钮,并有以下程序
PrivateSubCommand1_click()
Dimn
IfText1.Text<>"123456"Then
n=n+1
print"口令输入错误"&n&"次"
EndIf
EndSub
希望程序运行时得到左图所示的效果,即:
输入口令,单击“确认口令”命令按钮,若输入的口令不是“123456”,则在窗体上显示输入错误口令的次数。
但上面的程序实际显示的是右图所示的效果,程序需要修改。
下面修改方案中正确的是
A)在Dimn语句的下面添加一句:
n=0
B)把Print"口令输入错误"&n&"次"改为Print"口令输入错误"+n+"次"
C)把Print"口令输入错误"&n&"次"改为Print"口令输入错误"&Str(n)&"次"
D)把Dimn改为Staticn
(25)要求当鼠标在图片框P1中移动时,立即在图片框中显示鼠标的位置坐标。
下面能正确实现上述功能的事件过程是
A)PrivateSubP1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
PrintX,Y
EndSub
B)PrivateSubP1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
Picture.PrintX,Y
EndSub
C)PrivateSubP1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
P1.PrintX,Y
EndSub
D)PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,YAsSingle)
P1.PrintX,Y
EndSub
(26)计算霄的近似值的一个公式是
。
某人编写下面的程序用此公式计算并输出π的近似值:
PrivateSubCommand1_Click()
PI=1
Sign=1
n=20000
Fork=3Ton
sign=-sign
PI=PI+sign/k
Nextk
PrintPI*4
Endsub
运行后发现结果为3.22751,显然,程序需要修改。
下面修改方案中正确的是
A)把Fork=3Ton改为Fork=1Ton
B)把n=20000改为n=20000000
C)把Fork=3Ton改为Fork=3TonStep2
D)把PI=1改为PI=0
(27)下面程序计算并输出的是
PrivateSubCommand1_Click()
a=10
s=0
Do
s=s+a*a*a
a=a-1
Loopuntila<=0
Prints
Endsub
A)13+23+33+…103的值B)10!
+…+3!
+2!
+1!
的值
C)(1+2+3+…+10)3的值D)10个103的和
(28)若在窗体模块的声明部分声明了如下自定义类型和数组
PrivateTyperec
CodeAsInteger
CaptionAsString
EndType
Dimart(5)Asrec
则下面的输出语句中正确的是
A)Printarr.Code
(2),arr.Caption
(2)B)Printarr.Code,arr.Caption
C)Printarr
(2).Code,arr
(2).CaptionD)PrintCode
(2),Caption
(2)
(29)设窗体上有一个通用对话框控件CD1,希望在执行下面程序时,打开如图所示的文件对话框
PrivateSubCommand1_Click()
CD1.DialogTitle="打开文件"
CD1.InitDir="C:
\"
CD1.Filter="所有文件|*.*||Word文档|*.doc|文本文件|*.txt"
CD1.FileName=""
CD1.Action=1
IfCD1.FileName=""Then
Print"未打开文件"
Else
Print"要打开文件"&CD1.FileName
EndIf
EndSub
但实际显示的对话框中列出了C:
\下的所有文件和文件夹,“文件类型”一栏中显示的是“所有文件”。
下面的修改方案中正确的是
A)把CD1.Action=1改为CD1.Action=2
B)把"CD1.Filter="后面字符串中的“所有文件”改为“文本文件”
C)在语句CD1.Action=1的前面添加:
CD1.FilterIndex=3
D)把CD1.FileName=""改为CD1.FileName="文本文件"
(30)下面程序运行时,若输入395,则输出结果是
Privatesubcommand1_Click()
Dimx%
x=InputBox("请输入一个3位整数")
PrintxMod10,x\100,(xMod100)\10
EndSub
A)395B)539C)593D)359
(31)窗体上有List1、List2两个列表框,List1中有若干列表项(见图),并有下面的程序:
PrivatesubCommand1_Click()
Fork=List1.ListCoum-1To0step-1
IfList1.Selected(k)Then
List2.AddItemList1.List(k)
List1.RemoveItemk
EndIf
Nextk
EndSub
程序运行时,按照图示在List1中选中2个列表项,然后单击Command1命令按钮,则产生的结果是
A)在List2中插入了“外语”、“物理”两项
B)在List1中删除了“外语”、“物理”两项
C)同时产生A)和B)的结果
D)把List1中最后1个列表项删除并插入到List2中
(32)设工程中有2个窗体:
Form1、Form2,Form1为启动窗体。
Form2中有菜单,其结构如表。
要求在程序运行时,在Form1的文本框Text1中输入口令并按回车键(回车键的ASCII码为13)后,隐藏Form1,显示Form2。
若口令为"Teacher",所有菜单项都可见;否则看不到"成绩录入"菜单项。
为此,某人在Form1窗体文件中编写如下程序:
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
IfText1.Text="Teacher"Then
Form2.input.Visible=True
Else
Form2.input.Visible=False
EndIf
EndIf
Form1.Hide
Form2.Show
EndSub
菜单结构
标题
名称
级别
成绩管理
mark
1
成绩查询
query
2
成绩录入
input
2
程序运行时发现刚输入口令时就隐藏了Form1,显示了Form2,程序需要修改。
下面修改方案中正确的是
A)把Form1中Text1文本框及相关程序放到Form2窗体中
B)把Form1.Hide、Form2.Show两行移到2个EndIf之间
C)把IfKeyAscii=13Then改为IfKeyAscii="Teacher"Then
D)把2个Form2.input.Visible中的"Form2."删去
(33)某人编写了下面的程序,希望能把Text1文本框中的内容写到out.txt文件中
PrivateSubCommand1_Click()
Open"out.txt"ForOutputAs
Print"Text1"
Close#2
Endsub
调试时发现没有达到目的,为实现上述目的,应做的修改是
A)把Print"Text1"改为Print#2,Text1B)把Print"Text1"改为PrintText1
C)把Print"Text1"改为Write"Text1"D)把所有#2改为#1
(34)窗体上有一个名为Command1的命令按钮,并有下面的程序:
PrivateSubCommand1_Click()
Dimart(5)AsInteger
Fork=1To5
arr(k)=k
Nextk
progarr()
Fork=1To5
Printarr(k);
Nextk
Endsub
Subprog(a()AsInteger)
n=UBound(a)
Fori=nTo2step-1
Forj=1Ton-1
ifa(j)<a(j+1)Then
t=a(j):
a(j)=a(j+1):
a(j+1)=t
EndIf
Nextj
Nexti
Endsub
程序运行时,单击命令按钮后显示的是
A)12345B)54321C)01234D)43210
(35)下面程序运行时,若输入“VisualBasicProgramming”,则在窗体上输出的是
PrivateSubCommand1_Click()
Dimcount(25)AsInteger,chAsString
ch=UCase(InputBox("请输入字母字符串"))
Fork=1ToLen(ch)
n=Asc(Mid(ch,k,1))-Asc("A")
Ifn>=0Then
count(n)=count(n)+1
EndIf
Nextk
m=count(0)
Fork=1To25
Ifm<count(k)Then
m=count(k)
EndIf
Nextk
Printm
Endsub
A)0B)1C)2D)3
二、填空题
(6)为了使复选框禁用(即呈现灰色),应把它的Value属性设置为______。
(7)在窗体上画一个标签、一个计时器和一个命令按钮,其名称分别为Label1、Timer1和Command1,如图1所示。
程序运行后,如果单击命令按钮,则标签开始闪烁,每秒钟“欢迎”二字显示、消失各一次,如图2所示。
以下是实现上述功能的程序,请填空。
PrivateSubForm_Load()
Label1.Caption="欢迎"
Timer1.Enabled=False
Timer1.Interval:
__[7]___
Command1.Caption="开始闪烁"
Endsub
PrivateSubTimer1_Timer()
Label1.visible=[8]
Endsub
PrivateSubCommand1_Click()
[9]
Endsub
(8)有如下程序:
PrivateSubForm_Click()
n=10
i=0
Do
i=i+n
n=n-2
Loopwhilen>2
Printi
Endsub
程序运行后,单击窗体,输出结果为[10]。
(9)在窗体上画一个名称为Command1的命令按钮。
然后编写如下程序:
OptionBase1
PrivateSubCommand1_click()
Dima(10)AsInteger
Fori=1To10
a(i)=1
Next
callswap([11])
Fori=1To10
Printa(i);
Next
Endsub
Subswap(b()AsInteger)
n=UBound(b)
Fori=1Ton/2
t=b(i)
b(i)=b(n)
b(n)=t
[12]
Next
Endsub
上述程序的功能是,通过调用过程swap,调换数组中数值的存放位置,即a
(1)与a(10)的值互换,a
(2)与a(9)的值互换,……。
请填空。
(10)在窗体上画一个文本框,其名称为Text1,在属性窗口中把该文本框的MultiLine属性设置为True,然后
编写如下的事件过程:
PrivatesubForm_Click()
Open"d:
\test\smtext1.txt"ForInputAs#1
DoWhileNot[13]
LineInput#1,aspect$
whole$=whole$+aspect$+Chr$(13)+Chr$(10)
Loop
Text1.Text=whole$
[14]
Open"d:
\test\smtext2.txt"ForOutputAs#1
Print#1,[15]
Close#1
Endsub
运行程序,单击窗体,将把磁盘文件smtext1.txt的内容读到内存并在文本框中显示出来,然后把该文本框中的内容存入磁盘文件smtext2.txt。
请填空。
2010年3月笔试试卷
一、选择题
(11)D)[解析]A)选项为重复按钮,可以返回撤消前的编辑状态;B)选项为运行按钮,点击即可运行程序;C)选项为添加工程按钮,点击即可添加新工程,而D)选项就是结束按钮,所以选D。
(12)B)[解析]IIF的语法格式为:
II(expr,Truepart,Falsepart)。
其中expr为表达式,如果expr为True,则返回Tmepart的值或表达式;如果expr为False,则返回Falsepart的值或表达式。
所以,题干中语句意思是:
如果一个数大于零,则取其相反值;如果小于零则取本身,所以B)答案正确。
(13)c)[解析]如果在程序中变量没有定义具体的数据类型,则该数据类型为变体型数据类型,因此s为变体型;VB中可以用%定义整型,所以a%=100意思是把100赋值给整型变量a。
所以正确答案为C)。
(14)A)[解析]选项A)Text不是框架控件的属性;选项B)Caption是框架的标题属性,用于设置框架上显示的标题名称;选项C)Left是框架的基本属性,表示框架的左上角在窗体中的横向坐标;选项D)Enabled是框架的属性,它决定框架是否允许操作,其默认值为True,如果框架的该属性设置为False,则其标题变成灰色,框架内的所有对象均不可操作。
(15)D)[解析]当Msgbox需要返回一个函数值时需要加上括号,即选项B)的形式,而选项D)通过Call语句调用过程,也需要加上括号,所以D)是错的。
而当Msgbox只是一个过程的时候不需要加括号,即A)选项和C)选项都是对的。
(16)C)[解析]控件数组是一组具有相同名称和相同属性的控件,为了区分用户使用了哪一个命令按钮,VB系统自动对控件数组的事件过程增加了Index参数项,该参数值代表被单击控件数组元素的下标值(即Index属性值),所以正确的答案为C)。
(17)B)[解析]Seffocus是使文本框获得焦点的方法,Goffocus是文本框获得焦点事件,表示文本框获得焦点,而不是失去了焦点,更加与窗体无关,故B)正确,A)、C)、D)错误。
(18)A)[解析]在输入字母时这三个键盘事件都会发生。
KeyDown事件是当一个键被按下时所产生的事件,而KeyUp事件是松开被压下的键时所产生的事件,而在此过程中KeyPress事件在按下并抬起的过程中也会发生。
只是KeyDown和KeyUp事件返回的是键盘的直接状态。
换言之,KeyDown和KeyUp事件返回的是键盘的KeyCode,而KeyPress事件返回的是“字符”的ASCII码。
(19)B)[解析]标准模块的作用主要是简化程序,其中可以包含类型、常数、变量、外部过程和公共过程的公共或模块级声明,所以A)、C)都是正确的。
一个工程中可以有多个标准模块以供其他窗体调用,所以D)是正确的。
标准模块通常使用SubMain过程作为窗体启动前的初始化运行,所以B)错误。
(20)C)[解析]对于控件来说,它由对象名、下划线“-”和事件名三部分组成;而对于窗体来说,事件过程名由“Form”、下划线“-”和事件名三部分组成,所以正确的答案为C)。
(21)A)[解析]在定义动态数组时,不能在ReDim语句后面改变数组的数据类型,故答案B)、C)错误。
此外,如果要在ReDim中定义数组的长度,那么之前的Dim中则不能注明长度,故答案D)错误。
(22)D)[解析]函数中的两个参数是求最大公约数的两个数,函数返回值是这两个数的最大公约数。
求8、12、16这三个数的最大公约数,可以先求出其中两个数的最大公约数,然后再将返回的数与剩下的数值求最大公约数。
选项A)输出的是三个数,它们分别是每两个数的最大公约数,不是三个数的最大公约数;选项B)函数参数为两个,函数调用错误;选项C)函数参数为两个,函数调用错误,所以正确的答案为D)。
(23)A)[解析]题目的意思是要把原矩阵倒置,可以这样理解:
把原矩阵按列取出,然后重新按行排列,所以答案A)正确,答案B)、C)、D)错误。
(24)D)[解析]本题考查的是动态变量与静态变量。
原来的程序中无法使变量n的值保持到下一次的使用,只有D)选项符合要求,将n定义为静态局部变量,在程序执行到该对象的声明处时被首次初始化,每次执行后n的值都会被保存到内存中,所以答案D)是正确的;而