1、VB复习题一、问答题1.叙述建立一个完整的应用程序的过程。答:界面设计 编写事件过程代码 运行、调试 保存文件2.当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。问该工程涉及到几个文件要保存?若要保存该工程中的所有文件,正确的操作应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息?答:涉及到两个文件要保存。先保存窗体文件(.frm),再保存工程文件(.vbp)。若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求把窗体文件先保存。3.假定在W indows环境中,要保存工程文件时,若不改变目录名,则系统默认的目录是什么?答:VB984当标签框的大小由Caption
2、属性的值进行扩展和缩小,应对该控件的什么属性进行何种设置?答:将标签的Autosize设置为True.5VB6.0提供的大量图形文件在哪个目录下?若你的计算机上没有安装,则怎样安装这些图形文件?答:VB6.0提供的图形文件在Graphics目录。6在VB6.0中,命令按钮的显示形式可以有标准和图形两种选择,这通过什么属性来设置?若选择图形的,则通过什么属性来装入图形?若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能显示该图形,而显示的是Caption属性设置的文字,怎样改正?答:按钮Style的属性设置为Graphical(或1)。通过Picture属性来装入图形。不能显示图形是因为
3、Style的属性设置为Standard(或0),只要改为Graphical(或1),一般还将Caption属性的值设置为空。7标签和文本框的区别是什么?答:文本是否可编辑。8当窗体上有三个文本框和一个命令按钮,若程序运行时,需把焦点定位在第三个文本框处,应对何控件的什么属性进行何种设置?答:应对Text3控件进行Text3.TabIndex=0的设置。9简述文本框的change与keypress事件的区别。答:文本框内容变化,change与keypress事件都会发生,所不同的是Keyprees还将返回一个Keyasii参数10.当某文本框输入数据后(按了回车键),进行判断认为数据输入错,怎样
4、删除原来数据?怎样使焦点回到该文本框重新输入?答:假定文本框的名称为Text1,则事件过程如下:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then If 出错条件判断成立 ThenText1” 先删除原来数据Text1.SetFocus 焦点回到Text1End IfEnd IfEnd Sub11.在程序运行前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一般放在什么事件中?例如,程序要将命令按钮定位在窗体的中央,请写出事件过程。答:这些代码一般都放在Form_Load()事件过
5、程中。要将按钮定位在窗体的中央,事件过程如下:Private Sub Form_Load()Command1.Left = form1.ScaleWidth 2 - Command1.Width 2Command1.Top = form1.ScaleHeight 2 - Command1.Height 2End Sub其中,ScaleWidth、 ScaleHeight表示窗体的相对宽度和高度。二、填空题1.对象的三要素为【属性、事件和方法】。2. 在刚建立工程时,使窗体上的所有控件具有相同的字体格式,应对【form窗体】 的【font】属性进行设置。3. 当命令按钮的Picture属性装入.
6、bmp图形文件后,选项按钮上并没有显示所需图形,原因是没有对【style】属性设置为1(Graphical)。4. 在文本框中,通过【selstart】 属性能获得当前插入点所在的位置。5. 要对文本框中已有的内容进行编辑,按下键盘上的按键,就是不起作用,原因是设置了【locked】属性为True6. 在窗体上已建立多个控件如Text1,Label1,Command1,若要使程序一运行焦点就定位在Command1控件上,应对Command1控件设置【tabindex】属性的值为【0】 。一、问答题1.VB提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么?答:见教材P
7、39的表3.1 VB的基本数据类型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(!)一、
8、填空题1.在程序运行过程中,若需对程序中使用到的变量声明均采用显式声明方式,则必须在程序设计时在通用声明段部分加上Option Explicit语句。2.已知有如下声明语句:Dim a ,b as Integer 则变量a的类型是variant(变体型)。3已知有如下四个算术运算符:*、Mod、/、+,*、/运算符的优先级别最高4.已知a=3.5,b=5.0,c=2.5,d=True,则表达式:a=0 and a+cb+3 or not d 的值是false5.数学表达式 的VB算术表达式为sin(15*3.14/180)+sqr(x+exp(3)/abs(x-y)-log(3*x)6. 数学
9、表达式 的VB算术表达式为(a+b)/(1/(c+5)-c*d/2)7. 数学表达式的VB算术表达式为(-b+sqr(b2-4*a*c)/(2*a)8.表示x是5的倍数或是9的倍数的VB算术表达式为 x mod 5=0 or x mod 9=09.产生一个”C”L”范围内的大写字母表达式为chr(int(rnd*10+67)10.取字符变量S中第五个字符起的6个字符的表达式为mid(S,5,6)11.表示10X=10 and x0 and y0 or x0 and y=”A” and ucase(S)=”a” and Lcase(S)=”z”18.x,y之一小于z 的表达式为xz or xz
10、and yz一、问答题1.结构化程序设计的三种基本结构是什么?答:顺序结构、选择结构和循环结构。2.指出下列赋值语句中的错误(包括运行时的错误)(1)10x=sin(x)+y 变量名不能数字打头(2)c=3+sqr(-3) sqr函数中的参数不能为负数(3)c+x+y=c*y 赋值语句的左边不能是表达式(4)x=sin(x)/ (20 Mod 2 ) 分母不能为03.msgbox函数与inputbox函数之间有什么区别?各自获得什么值?答:msgbox函数的作用是打开信息框,等待用户选择按钮而inputbox函数的作用是打开一个对话框,等待用户输入内容;msgbox函数的返回值是17的整数值,
11、而inputbox函数的返回值是用户输入的数据,返回值的数据类型为字符型。4.要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使用什么函数?如何编写对应的Print方法?答:使用Format函数,具体如下:Print format(x,”0.0”);format(y,”0.00”);format(z,”0.000”)5.语句If Then 中的表达式可以是算术、字符、关系、逻辑表达式中的哪些?答:可以是算术表达式,关系表达式和逻辑表达式6.指出下列语句中的错误(1) if xy then print x 正确的写法:x=y(2) if 10 x 10 and x207.在
12、多分支结构的实现中,可以用If Then ElseIf形式的语句,也可以用Select Case End Select形式的语句,由于后者的条件语句更灵活、简洁,是否完全可以取代前者?答:不可以。Select Case End Select形式的语句的使用是受到限制的。只能用在对一个变量条件的判断。若要对多个变量条件进行判断,只能使用If Then ElseIf形式的语句8.计算下列循环语句的次数(1) For i=-3 to 20 step 4 循环次数为:6(2) For i=-3.5 to 5.5 step 0.5 循环次数为:19(3) For i=-3.5 to 5.5 step -
13、0.5 循环次数为:0(4) For i=-3 to 20 step 0 死循环9.如果事先不知道循环次数,如何用FOR Next结构来实现?答:可先设循环变量的终值为一个较大的值,然后在循环体内嵌套条件分支10. 如何书写Do Loop结构,使得循环体至少执行一次? 答:do .Loop while 11.当发现了死循环,如何终止循环答:按ctrl+break键中断程序12.如何在程序中设置断点?如何去除断点?答:设置断点的方法是将光标移到要设置断点的代码行,按F9或单击调试工具栏的”切换断点”按钮。设置断点后,代码窗口将以粗体形式突出显示选定行,并在该行显示一个圆点符号,以指出该代码行使一
14、个断点。 清除断点的方法是将光标移到要删除断点的代码行,按F9或单击调试工具栏的”切换断点”按钮,代码左侧的大圆点消失,表示该断点清除。12.当在编辑程序时,程序代码以红色显示,是什么错误?答:编辑错误。 二、填空题1.下面程序运行后的结果是22和484该程序的功能是用相减法求x,y的最大公约数和最小公倍数Private Sub Command1_Click()Dim x%, y%, z%x = 242 :y = 44z = x * yDo Until x = y If x y Then x = x - y Else y = y - xLoopPrint 最大公约数; x; 最小公倍数; z
15、/ xEnd Sub2.给定年份,下列程序用来判断该年是否为闰年。(提示:闰年的条件是年号可以被4整除但不能被100整除,或者被400整除)Private Sub Command1_Click()Dim y%Y=inputbox(“请输入年号”)If (y mod 4=0 and y mod 100 0) or (y mod 400=0) thenPrint “是闰年”ElsePrint “是普通年份”End ifEnd sub3.下列程序完成如下功能:以文本框Text1的值为n,计算1!+2!+3!n!的值。Private Sub Command1_Click()N=val(text1)Su
16、m=1:t=1For i=1 to nT=t*iSum=sum+tNext iPrint “1!+2!+3!+”;n;”!的值为”;sumEnd sub4.找出被3、5、7除,余数均为1的最小的5个正整数。Private Sub Command1_Click()Dim countn%,n%Countn=0N=1DoN=n+1If n mod 3=1 and n mod 5=1 and n mod 7=1 then Print nCountn=countn+1End ifLoop untilcountn=5 (或Loop while countn5)End sub5.某次大奖赛,有7个评委打分,
17、下列程序对每一位参赛者输入7个评委的分数,去掉一个最高分,去掉一个最低分,求出的平均分就是该参赛者的最后得分。Private Sub Command1_Click()Dim mark!,aver!,i%,max1!, min1!Aver=0For i=1 to 7Mark=inputbox(“输入第” & I & “位评委的打分”)If i=1 thenMax1=mark:min1=markElseIf markmax1Max1=markEnd ifEnd ifAver=aver+markNext i Aver=(aver-max1-min1)/5 Print averEnd sub6.有一个
18、长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩5阶,只有当如果每步跨7阶时恰好走完,显示这个阶梯至少要有多少阶。(提示:阶梯数一定是7的倍数)Private Sub Command1_Click()Dim n%,m%For n=7 to 10000 step 7If n mod 2=1 and n mod 3=2 and n mod 4=3 and n mod 5=4 and n mod 6=5 thenPrint nExit forEnd ifNext nEnd sub一、问答题1.在VB6.0中,数组的下
19、界默认为0,用什么语句可以重新定义数组默认下界?答:Option Base 语句。2. 要分配存放12个元素的整型数组,下列数组声明(下界若无,按默认规定)哪些符合要求?(见P124)答:(2)、(4)、(7)、(8)3.程序运行时显示“下标越界” 可能产生的错误有哪几种情况?答:下标比下界小或者比上界大。4.已知下面的数组声明,写出它的数组名、数组类型、维数、各维上下界、数组的大小、并按行的顺序列出个元素。Dim a(-1 to 2,3) as single答:数组名:a,数组类型:单精度型,维数:二维,一维下界-1,上界2,二维下界0,上界3 ,数组大小44共16个元素,各元素为:(-1,
20、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数组
21、的大小?答:不能6.使用Redim语句可以改变数组类型吗?答:Redim语句可以反复地改变数组的元素以及维数的数目,但是不能将一个数组定义为某种数据类型之后,再用redim将该数组改为其它类型。8、简述列表框和组合框的异同处。答:相同之处都是可以存放字符串;不同处在于组合框是文本框和列表框的组合,可以输入内容,但要通过AddItem方法添加;列表框只能选择项目,不能直接输入内容。9.列表框或组合框中选中的项目、总项目数的属性分别是什么?答:表示选中的内容,属性有:Text; 总项目数的属性是Listcounts10.声明一个有20个元素的一维字符类型数组,要求:(见P124习题五-6)答:见已
22、给资源(实验代码参考2的习题五-6)二、填空题(1)在VB中,若要设定每个数组默认的下界固定为1,其声明语句是 Option Base 1(2)程序中自动测试数组的下界用Lbound 函数来实现,上界用Ubound 函数实现(3)在运行时load 语句可以为控件数组增加控件元素;unload 语句删除一个存在的控件元素(4)当数组首次被声明时,对所有的数值型数组默认初值是 0 ;字符数组默认初值是空串(5)当用Redim语句改变动态数组大小时,数组元素的值会丢失;用Preserve 关键字可以保留数组元素原来的值。(6)已知建立了5个元素的Command1控件数组,用Index 参数可识别用户
23、单击了某控件数组元素(7)下面程序的功能是从键盘输入6个整数,找出最大数和最小数所在位置,并将两者对调,然后输出调整后的6个数。Private Sub Form_Click()Dim a%(5), max%, min%, imin%, imax%, i%, t%For i = 0 To 5 从键盘上输入6个数 a(i) = InputBox(输入)Next iimin = 0 第一个数组元素的下标(0)为最小数下标imax = 0 第一个数组元素的下标(0)为最大数下标For i = 1 To 5 找出最小数和最大数所在位置的下标 If a ( I ) a (imax) Then imax =
24、 iNext it = a(imax) 进行两数互换a(imax) = a(imin)a(imin) = tFor i = 0 To 5 输出调整后的6个数 Print a(i);Next iEnd Sub(8)下面程序对已知数组a,删除数组中数组元素中某个元素Private Sub Command1_Click()Dim a(), key%, j%A=array(1,6,8,3,5,9,10,2,7,4)Key=val(inputbox(“输入要删除的值”)For i=0 to Ubound(a)If key=a( I ) then 比较是否是要删除的数据,如果找到,For j=i+1 to
25、 Ubound(a) 那么从下一个数(i+1)开始A(j-1)=a( j ) 将每一项前移,实现删除Next jRedim preserve a(Ubound(a)-1) 使数组元素减少一个,而又要保留原来数据Msgbox(“删除完成”)Exit subEnd ifNext iMsgbox(“找不到要删除的元素”)End sub(9)下列程序表示将输入的一个数插入到按递减的有序数列中,插入后使该序列仍有序。Private Sub Form_Click()Dim a, i%, m%A=array(19,17,15,13,11,9,7,5,3,1)N= Ubound(a)Redim preserv
26、e a(n+1) 使数组元素增加一个,又要保留原来数据M= val(inputbox(“输入欲插入的数”)For i= Ubound(a)-1 to 0 step -1If m =a( I ) then a( I+1)= a (I ) 寻找插入的位置IF I=0 then a( I )=m 欲插入的数比所有数组元素都大时Elsea( I+1)=m 新数据找到插入位置,插入到数组中exit forend ifnext ifor i=0 to Ubound(a)print a( I )next iend sub填空题(1)在过程定义时,参数有传值和传址,若形参是数组,不能使用Byval来修饰参数。
27、(2)Exit Function语句只能出现在 函数 的过程体。(3)在过程体,用static 方式声明的局部变量,其值可以保留至下次过程被调用。(4)过程自己调用自己称为 递归。1.框架的作用是什么?答:框架的作用:在同一窗体需建立几组相互独立的单选钮可使用框架;窗体上功能区划分也可使用框架2.滚动条的Scroll和Change事件有什么区别?答:Scroll事件是拖动滑块时发生的事件,单击两端的箭头或空白处不会产生Scroll事件。此外,在拖动滑块的过程中会产生多个Scroll事件,而不是仅仅在拖动滑块结束时产生一个Scroll事件。Change事件是当Value属性值改变时产生的事件。3
28、.如何在程序的运行期间改变鼠标的形状答:鼠标的形状由MousePointer 属性决定。可以在属性窗口中设置,也可以在程序代码中设置。在程序运行期间,通过该属性的设置可以改变鼠标的形状。如果想使用一个自定义图标,则应把MousePointer属性设置为99(VbCustom),然后将图标文件用LoadPicture函数装入MouseIcon属性中,或者某个图形框中的图标直接赋值给MouseIcon属性。4.Keypress和KeyDown的区别是什么?答:用户按下并且释放一个会产生Ascii码的键时,触发KeyPress事件;用户按下键盘上任一键时,触发KeyDown事件。KeyPress与K
29、eyDown事件的主要区别有:(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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1