VB复习题.docx
《VB复习题.docx》由会员分享,可在线阅读,更多相关《VB复习题.docx(20页珍藏版)》请在冰豆网上搜索。
VB复习题
一、问答题
1.叙述建立一个完整的应用程序的过程。
答:
界面设计编写事件过程代码运行、调试保存文件
2.当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。
问该工程涉及到几个文件要保存?
若要保存该工程中的所有文件,正确的操作应先保存什么文件?
再保存什么文件?
若不这样做,系统会出现什么信息?
答:
涉及到两个文件要保存。
先保存窗体文件(.frm),再保存工程文件(.vbp)。
若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求把窗体文件先保存。
3.假定在Windows环境中,要保存工程文件时,若不改变目录名,则系统默认的目录是什么?
答:
VB98
4.当标签框的大小由Caption属性的值进行扩展和缩小,应对该控件的什么属性进行何种设置?
答:
将标签的Autosize设置为True.
5.VB6.0提供的大量图形文件在哪个目录下?
若你的计算机上没有安装,则怎样安装这些图形文件?
答:
VB6.0提供的图形文件在Graphics目录。
6.在VB6.0中,命令按钮的显示形式可以有标准和图形两种选择,这通过什么属性来设置?
若选择图形的,则通过什么属性来装入图形?
若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能显示该图形,而显示的是Caption属性设置的文字,怎样改正?
答:
按钮Style的属性设置为Graphical(或1)。
通过Picture属性来装入图形。
不能显示图形是因为Style的属性设置为Standard(或0),只要改为Graphical(或1),一般还将Caption属性的值设置为空。
7.标签和文本框的区别是什么?
答:
文本是否可编辑。
8.当窗体上有三个文本框和一个命令按钮,若程序运行时,需把焦点定位在第三个文本框处,应对何控件的什么属性进行何种设置?
答:
应对Text3控件进行Text3.TabIndex=0的设置。
9.简述文本框的change与keypress事件的区别。
答:
文本框内容变化,change与keypress事件都会发生,所不同的是Keyprees还将返回一个Keyasii参数
10.当某文本框输入数据后(按了回车键),进行判断认为数据输入错,怎样删除原来数据?
怎样使焦点回到该文本框重新输入?
答:
假定文本框的名称为Text1,则事件过程如下:
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
If出错条件判断成立Then
Text1=””‘先删除原来数据
Text1.SetFocus‘焦点回到Text1
EndIf
……
EndIf
EndSub
11.在程序运行前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一般放在什么事件中?
例如,程序要将命令按钮定位在窗体的中央,请写出事件过程。
答:
这些代码一般都放在Form_Load()事件过程中。
要将按钮定位在窗体的中央,事件过程如下:
PrivateSubForm_Load()
Command1.Left=form1.ScaleWidth\2-Command1.Width\2
Command1.Top=form1.ScaleHeight\2-Command1.Height\2
EndSub
其中,ScaleWidth、ScaleHeight表示窗体的相对宽度和高度。
二、填空题
1.对象的三要素为【属性、事件和方法】。
2.在刚建立工程时,使窗体上的所有控件具有相同的字体格式,应对【form窗体】的【font】属性进行设置。
3.当命令按钮的Picture属性装入.bmp图形文件后,选项按钮上并没有显示所需图形,原因是没有对【style】属性设置为1(Graphical)。
4.在文本框中,通过【selstart】属性能获得当前插入点所在的位置。
5.要对文本框中已有的内容进行编辑,按下键盘上的按键,就是不起作用,原因是设置了【locked】属性为True
6.在窗体上已建立多个控件如Text1,Label1,Command1,若要使程序一运行焦点就定位在Command1控件上,应对Command1控件设置【tabindex】属性的值为【0】。
一、问答题
1.VB提供了哪些标准数据类型?
声明类型时,其类型关键字分别是什么?
其类型符又是什么?
答:
见教材P39的表3.1VB的基本数据类型
2.哪种数据类型需要的内存最少,且可存储如3.2345这样的值。
答:
Single(单精度型)
3.将数字字符串转换成数值,用什么函数?
取字符串中的某几个字符,用什么函数?
大小写字母间的转换用什么函数?
答:
数字字符转换成数值用Val函数;取字符串中的某几个字符用mid函数或left函数或right函数;大小写字母间的互换用ucase或lcase函数。
4.下列哪些是VB合法常量,分别指出其类型(见P58习题三1)。
答:
1(#)、3(!
)、4(#)、6(%)、7($)、8($)、9(date)、10(#)、12(%)、14(%)、15(boolean)、18(!
)
一、填空题
1.在程序运行过程中,若需对程序中使用到的变量声明均采用显式声明方式,则必须在程序设计时在通用声明段部分加上OptionExplicit语句。
2.已知有如下声明语句:
Dima,basInteger
则变量a的类型是variant(变体型)。
3.已知有如下四个算术运算符:
*、Mod、/、+,*、/运算符的优先级别最高
4.已知a=3.5,b=5.0,c=2.5,d=True,则表达式:
a>=0anda+c>b+3ornotd的值是false
5.数学表达式
的VB算术表达式为sin(15*3.14/180)+sqr(x+exp(3))/abs(x-y)-log(3*x)
6.数学表达式
的VB算术表达式为(a+b)/(1/(c+5)-c*d/2)
7.数学表达式
的VB算术表达式为(-b+sqr(b^2-4*a*c))/(2*a)
8.表示x是5的倍数或是9的倍数的VB算术表达式为xmod5=0orxmod9=0
9.产生一个”C”~”L”范围内的大写字母表达式为chr(int(rnd*10+67)
10.取字符变量S中第五个字符起的6个字符的表达式为mid(S,5,6)
11.表示10≤X<20的关系表达式为x>=10andx<20
12.表达式Dateadd(“m”,1,#1/30/2000#)的结果为2000-2-29
13.整型变量x中存放了一个两位数,要将两位数交换位置,例如,13变成31,实现的表达式是(xmod10)&x\10
14.在直角坐标系中,x,y是坐标系中任意点的位置,用x与y表示在第一或第三象限的表达式是x>0andy>0orx<0andy<0
15.计算现在起离2010世界杯赛(2010年6月11日)举行还有多少天的函数表达式为DateDiff(“d”,date,#6/11/2010#)
16.计算现在起离你毕业(2012年7月3日)还有多少个星期的函数表达式为DateDiff(“w”,date,#7/3/2012#)
17.表示S字符变量是字母字符(不区分大小写字母)的逻辑表达式是
ucase(S)>=”A”anducase(S)<=”Z”也可以是Lcase(S)>=”a”andLcase(S)<=”z”
18.x,y之一小于z的表达式为xzorx>zandy一、问答题
1.结构化程序设计的三种基本结构是什么?
答:
顺序结构、选择结构和循环结构。
2.指出下列赋值语句中的错误(包括运行时的错误)
(1)10x=sin(x)+y变量名不能数字打头
(2)c=3+sqr(-3)sqr函数中的参数不能为负数
(3)c+x+y=c*y赋值语句的左边不能是表达式
(4)x=sin(x)/(20Mod2)分母不能为0
3.msgbox函数与inputbox函数之间有什么区别?
各自获得什么值?
答:
msgbox函数的作用是打开信息框,等待用户选择按钮而inputbox函数的作用是打开一个对话框,等待用户输入内容;msgbox函数的返回值是1~7的整数值,而inputbox函数的返回值是用户输入的数据,返回值的数据类型为字符型。
4.要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使用什么函数?
如何编写对应的Print方法?
答:
使用Format函数,具体如下:
Printformat(x,”0.0”);format(y,”0.00”);format(z,”0.000”)
5.语句If<表达式>Then……中的表达式可以是算术、字符、关系、逻辑表达式中的哪些?
答:
可以是算术表达式,关系表达式和逻辑表达式
6.指出下列语句中的错误
(1)ifx≥ythenprintx正确的写法:
x>=y
(2)if10x>10andx<20
7.在多分支结构的实现中,可以用If<表达式>Then…ElseIf形式的语句,也可以用SelectCase…EndSelect形式的语句,由于后者的条件语句更灵活、简洁,是否完全可以取代前者?
答:
不可以。
SelectCase…EndSelect形式的语句的使用是受到限制的。
只能用在对一个变量条件的判断。
若要对多个变量条件进行判断,只能使用If<表达式>Then…ElseIf形式的语句
8.计算下列循环语句的次数
(1)Fori=-3to20step4循环次数为:
6
(2)Fori=-3.5to5.5step0.5循环次数为:
19
(3)Fori=-3.5to5.5step-0.5循环次数为:
0
(4)Fori=-3to20step0死循环
9.如果事先不知道循环次数,如何用FOR…Next结构来实现?
答:
可先设循环变量的终值为一个较大的值,然后在循环体内嵌套条件分支
10.如何书写Do…Loop结构,使得循环体至少执行一次?
答:
do
….
Loopwhile<条件>
11.当发现了死循环,如何终止循环
答:
按ctrl+break键中断程序
12.如何在程序中设置断点?
如何去除断点?
答:
设置断点的方法是将光标移到要设置断点的代码行,按F9或单击调试工具栏的”切换断点”按钮。
设置断点后,代码窗口将以粗体形式突出显示选定行,并在该行显示一个圆点符号,以指出该代码行使一个断点。
清除断点的方法是将光标移到要删除断点的代码行,按F9或单击调试工具栏的”切换断点”按钮,代码左侧的大圆点消失,表示该断点清除。
12.当在编辑程序时,程序代码以红色显示,是什么错误?
答:
编辑错误。
二、填空题
1.下面程序运行后的结果是22和484该程序的功能是用相减法求x,y的最大公约数和最小公倍数
PrivateSubCommand1_Click()
Dimx%,y%,z%
x=242:
y=44
z=x*y
DoUntilx=y
Ifx>yThenx=x-yElsey=y-x
Loop
Print"最大公约数";x;"最小公倍数";z/x
EndSub
2.给定年份,下列程序用来判断该年是否为闰年。
(提示:
闰年的条件是年号可以被4整除但不能被100整除,或者被400整除)
PrivateSubCommand1_Click()
Dimy%
Y=inputbox(“请输入年号”)
If(ymod4=0andymod100<>0)or(ymod400=0)then
Print“是闰年”
Else
Print“是普通年份”
Endif
Endsub
3.下列程序完成如下功能:
以文本框Text1的值为n,计算1!
+2!
+3!
…n!
的值。
PrivateSubCommand1_Click()
N=val(text1)
Sum=1:
t=1
Fori=1ton
T=t*i
Sum=sum+t
Nexti
Print“1!
+2!
+3!
…+”;n;”!
的值为”;sum
Endsub
4.找出被3、5、7除,余数均为1的最小的5个正整数。
PrivateSubCommand1_Click()
Dimcountn%,n%
Countn=0
N=1
Do
N=n+1
Ifnmod3=1andnmod5=1andnmod7=1then
Printn
Countn=countn+1
Endif
Loopuntilcountn=5(或Loopwhilecountn<5)
Endsub
5.某次大奖赛,有7个评委打分,下列程序对每一位参赛者输入7个评委的分数,去掉一个最高分,去掉一个最低分,求出的平均分就是该参赛者的最后得分。
PrivateSubCommand1_Click()
Dimmark!
aver!
i%,max1!
min1!
Aver=0
Fori=1to7
Mark=inputbox(“输入第”&I&“位评委的打分”)
Ifi=1then
Max1=mark:
min1=mark
Else
IfmarkMin1=mark
Elseifmark>max1
Max1=mark
Endif
Endif
Aver=aver+mark
Nexti
Aver=(aver-max1-min1)/5
Printaver
Endsub
6.有一个长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩5阶,只有当如果每步跨7阶时恰好走完,显示这个阶梯至少要有多少阶。
(提示:
阶梯数一定是7的倍数)
PrivateSubCommand1_Click()
Dimn%,m%
Forn=7to10000step7
Ifnmod2=1andnmod3=2andnmod4=3andnmod5=4andnmod6=5then
Printn
Exitfor
Endif
Nextn
Endsub
一、问答题
1.在VB6.0中,数组的下界默认为0,用什么语句可以重新定义数组默认下界?
答:
OptionBase语句。
2.要分配存放12个元素的整型数组,下列数组声明(下界若无,按默认规定)哪些符合要求?
(见P124)
答:
(2)、(4)、(7)、(8)
3.程序运行时显示“下标越界”可能产生的错误有哪几种情况?
答:
下标比下界小或者比上界大。
4.已知下面的数组声明,写出它的数组名、数组类型、维数、各维上下界、数组的大小、并按行的顺序列出个元素。
Dima(-1to2,3)assingle
答:
数组名:
a,数组类型:
单精度型,维数:
二维,一维下界-1,上界2,二维下界0,
上界3,数组大小4×4共16个元素,各元素为:
(-1,0)(-1,1)(-1,2)(-1,3)(0,0)(0,1)(0,2)(0,3)(1,0)(1,1)(1,2)(1,3)(2,0)(2,1)(2,2)(2,3)
3.简述静态数组与动态数组的区别。
答:
静态数组的下标必须是常数且程序运行中数组大小不可改变。
动态数组的下标则可以是已赋值的变量,动态数组声明时不给大小,以后用redim语句指定数组大小。
4.简述使用课件数组的优点和方法。
答:
优点是多个控件数组元素共享同一事件过程,程序简洁;方法是在程序运行过程中添加(Load)或删除(Unload)数组控件数组元素
5.已声明了静态数组A(3,4),能否在下面再用重新定义动态数组A(4,4)来重定义A数组的大小?
答:
不能
6.使用Redim语句可以改变数组类型吗?
答:
Redim语句可以反复地改变数组的元素以及维数的数目,但是不能将一个数组定义为某种数据类型之后,再用redim将该数组改为其它类型。
8、简述列表框和组合框的异同处。
答:
相同之处都是可以存放字符串;不同处在于组合框是文本框和列表框的组合,可以输入内容,但要通过AddItem方法添加;列表框只能选择项目,不能直接输入内容。
9.列表框或组合框中选中的项目、总项目数的属性分别是什么?
答:
表示选中的内容,属性有:
Text;总项目数的属性是Listcounts
10.声明一个有20个元素的一维字符类型数组,要求:
(见P124习题五-6)
答:
见已给资源(实验代码参考2的习题五-6)
二、填空题
(1)在VB中,若要设定每个数组默认的下界固定为1,其声明语句是OptionBase1
(2)程序中自动测试数组的下界用Lbound函数来实现,上界用Ubound函数实现
(3)在运行时load语句可以为控件数组增加控件元素;unload语句删除一个存在的控件元素
(4)当数组首次被声明时,对所有的数值型数组默认初值是0;字符数组默认初值是空串
(5)当用Redim语句改变动态数组大小时,数组元素的值会丢失;用Preserve关键字可以保留数组元素原来的值。
(6)已知建立了5个元素的Command1控件数组,用Index参数可识别用户单击了某控件数组元素
(7)下面程序的功能是从键盘输入6个整数,找出最大数和最小数所在位置,并将两者对调,然后输出调整后的6个数。
PrivateSubForm_Click()
Dima%(5),max%,min%,imin%,imax%,i%,t%
Fori=0To5‘从键盘上输入6个数
a(i)=InputBox("输入")
Nexti
imin=0‘第一个数组元素的下标(0)为最小数下标
imax=0‘第一个数组元素的下标(0)为最大数下标
Fori=1To5‘找出最小数和最大数所在位置的下标
Ifa(I)Ifa(I)>a(imax)Thenimax=i
Nexti
t=a(imax)‘进行两数互换
a(imax)=a(imin)
a(imin)=t
Fori=0To5‘输出调整后的6个数
Printa(i);
Nexti
EndSub
(8)下面程序对已知数组a,删除数组中数组元素中某个元素
PrivateSubCommand1_Click()
Dima(),key%,j%
A=array(1,6,8,3,5,9,10,2,7,4)
Key=val(inputbox(“输入要删除的值”)
Fori=0toUbound(a)
Ifkey=a(I)then‘比较是否是要删除的数据,如果找到,
Forj=i+1toUbound(a)‘那么从下一个数(i+1)开始
A(j-1)=a(j)‘将每一项前移,实现删除
Nextj
Redimpreservea(Ubound(a)-1)‘使数组元素减少一个,而又要保留原来数据
Msgbox(“删除完成”)
Exitsub
Endif
Nexti
Msgbox(“找不到要删除的元素”)
Endsub
(9)下列程序表示将输入的一个数插入到按递减的有序数列中,插入后使该序列仍有序。
PrivateSubForm_Click()
Dima,i%,m%
A=array(19,17,15,13,11,9,7,5,3,1)
N=Ubound(a)
Redimpreservea(n+1)‘使数组元素增加一个,又要保留原来数据
M=val(inputbox(“输入欲插入的数”))
Fori=Ubound(a)-1to0step-1
Ifm>=a(I)then
a(I+1)=a(I)‘寻找插入的位置
IFI=0thena(I)=m‘欲插入的数比所有数组元素都大时
Else
a(I+1)=m‘新数据找到插入位置,插入到数组中
exitfor
endif
nexti
fori=0toUbound(a)
printa(I)
nexti
endsub
填空题
(1)在过程定义时,参数有传值和传址,若形参是数组,不能使用Byval来修饰参数。
(2)ExitFunction语句只能出现在函数的过程体。
(3)在过程体,用static方式声明的局部变量,其值可以保留至下次过程被调用。
(4)过程自己调用自己称为递归。
1.框架的作用是什么?
答:
框架的作用:
在同一窗体需建立几组相互独立的单选钮可使用框架;窗体上功能区划分也可使用框架
2.滚动条的Scroll和Change事件有什么区别?
答:
Scroll事件是拖动滑块时发生的事件,单击两端的箭头或空白处不会产生Scroll事件。
此外,在拖动滑块的过程中会产生多个Scroll事件,而不是仅仅在拖动滑块结束时产生一个Scroll事件。
Change事件是当Value属性值改变时产生的事件。
3.如何在程序的运行期间改变鼠标的形状
答:
鼠标的形状由MousePointer属性决定。
可以在属性窗口中设置,也可以在程序代码中设置。
在程序运行期间,通过该属性的设置可以改变鼠标的形状。
如果想使用一个自定义图标,则应把MousePointer属性设置为99(VbCustom),然后将图标文件用LoadPicture函数装入MouseIcon属性中,或者某个图形框中的图标直接赋值给MouseIcon属性。
4.Keypress和KeyDown的区别是什么?
答:
用户按下并且释放一个会产生Ascii码的键时,触发KeyPress事件;用户按下键盘上任一键时,触发KeyDown事件。
KeyPress与KeyDown事件的主要区别有:
(1)从时间上说,按下键盘上的一个键,立即触发KeyDown事件,但此刻没有引发KeyPress事件。
只有释放该按键时触发KeyPress事件。
(2)用户按下键盘中的任一键时,就会在相应对象上引发KeyDown事件,但是并不是按下和释放键盘上的任一一个键都会引发KeyPress事件,KeyPress事件只对会产生Ascii码的按键有反应,包括数字、大小写的字母、enter、backspace、esc、tab等。
对于如方向键这样的不会产生Ascii码的按键,KeyPress事件不会被触发。
5.在KeyDown事件过程中,如何检测Ctrl和F3是否同时被按下?
答:
使用(KeyCode=vbKeyF3)and(Shift=vbCtrlMask)或者(Key