大学VB程序设计教程(第3版)课后实验答案期末试卷_第1页
大学VB程序设计教程(第3版)课后实验答案期末试卷_第2页
大学VB程序设计教程(第3版)课后实验答案期末试卷_第3页
大学VB程序设计教程(第3版)课后实验答案期末试卷_第4页
大学VB程序设计教程(第3版)课后实验答案期末试卷_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、问答题

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.当某文本框输入数据后(按了回车键),进行判断认为数据输入错,怎样删除原来数据?

怎样使焦点回到该文本框重新输入?

答:假定文本框的名称为Textl,则事件过程如卜:

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

If出错条件判断成立Then

Textl,先删除原来数据

Textl.SetFocus,焦点回到Textl

EndIf

EndIf

EndSub

11.在程序运行前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设

置,这些代码•般放在什么事件中?例如,程序要将命令按钮定位在窗体的中央,请写出事

件过程。

答:这些代码一般都放在Form_Load()事件过程中。

要将按钮定位在窗体的中央,事件过程如下:

PrivateSubForm_Load()

Command1.Left=forml.ScaleWidth\2-Command1.Wid山\2

Command!.Top=forml.ScaleHeight\2-Command!.Height\2

EndSub

其中,ScaleWidth、ScaleHeight表示窗体的相对宽度和高度。

二、填空题

1.对象的三要素为【属性、事件和方法】。

2.在刚建立工程时,使窗体上的所有控件具有相同的字体格式,应对【form窗体】的【font】

属性进行设置。

3.当命令按钮的Picture属性装入.bmp图形文件后,选项按钮上并没有显示所需图形,原因

是没有对【style】属性设置为1(Graphical)。

4.在文本框中,通过【selstart】属性能获得当前插入点所在的位置。

5.要对文本框中已有的内容进行编辑,按下键盘上的按键,就是不起作用,原因是设置了

【locked】属性为True

6.在窗体上已建立多个控件如Textl,Labell,Commandl,若要使程序一-运行焦点就定位在

Command1控件上,应对Command1控件设置【tabindex】属性的值为【0】。

一、问答题

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

型符又是什么?

答:见教材P39的表3.1VB的基本数据类型

2.哪种数据类型需要的内存最少,且可存储如3.2345这样的值。

答:Single(单精度型)

3.将数字字符串转换成数值,用什么函数?取字符串中的某儿个字符,用什么

函数?大小写字母间的转换用什么函数?

答:数字字符转换成数值用Vai函数;取字符串中的某几个字符用mid函数或left

函数或right函数;大小写字母间的互换用ucase或lease函数。

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,贝Li表达式:a>=0anda+c>b+3ornotd的值是false

sin15°+j+:——ln(3x)

5.数学表达式,记「叫"

的VB算术表达式为sin(15*3.14/180)+sqr(x+exp(3))/abs(x-y)-log(3*x)

a+b

6.数学表达式।“

的VB算术表达式为(a+b)/(l/(c+5)-c*d/2)

-b+\b2-4ac

7.数学表达式

的VB算术表达式为(-b+sqr(bA2-4*a*c))/(2*a)

8.表示x是5的倍数或是9的倍数的VB算术表达式为xmod5=0orxmod9=0

立产生一个”C“~“L“范围内的大写字母表达式为chr(int(md*10+67)

10.取字符变量S中第五个字符起的6个字符的表达式为mid(S.5.6)

11.表示10WX<20的关系表达式为x>=10andx<20

12.表达式Dateadd("m”,l,#1/30/2000#)的结果为2000229

13.整型变量x中存放了一个两位数,要将两位数交换位置,例如,13变成31,

实现的表达式是(xmod10)&x\10

14.在直角坐标系中,x,y是坐标系中任意点的位置,用x与y表示在第一或第三

象限的表达式是x>0andy>0orx<0andy<0

15.计算现在起离2010世界杯赛(2010年6月11日)举行还有多少天的函数表

达式为DateDiff("cT,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的表达式为x<zandy>zorx>zandy<z

一、问答题

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函数的返回值是卜7的整数

值,而inputbox函数的返回值是用户输入的数据,返回值的数据类型为字符型。

4.要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使

用什么函数?

如何编写对应的Print方法?

答:使用Format函数,具体如下:

Printformat(x,"0.0");format。,“0.00");format(z,”0.000")

5.语句If〈表达式〉Then……中的表达式可以是算术、字符、关系、逻辑表达

式中的哪些?

答:可以是算术发达式,关系友达式和逻辑发达式

6.指出下列语句中的错误

(1)ifxNythenprintx正确的写法:x>=y

(2)if10<x<20thenx=x+20正确的写法:x>10andx<20

7.在多分支结构的实现中,可以用If〈表达式》Then…Elself形式的语句,也

可以用SelectCase…EndSelect形式的语句,由于后者的条件语句更灵活、

简洁,是否完全可以取代前者?

答:不可以。SelectCase…EndSelect形式的语句的使用是受到限制的。只

能用在对个变量条件的判断。若要对多个变量条件进行判断,只能使用If<

表达式》Then•••Elself形式的语句

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的最大公

约数和最小公倍数

PrivateSubCommandl_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整除)

PrivateSubCommandl_Click()

Dimy%

Y二inputbox(“请输入年号”)

If(ymod4=0andymod100<>0)or(ymod400=0)then

Print"是丽

Else

Print”是普通年份”

Endif

Endsub

3.下列程序完成如下功能:以文本框Textl的值为n,计算1!+2!+3!…n!的

值。

PrivateSubCommandl_Click()

N=val(textl)

Sum=l:t=l

Fori=lton

T=t*i

Sum=sum+t

Nexti

Print"1!+2!+3!…+“;n;"!的值为";sum

Endsub

4.找出被3、5、7除,余数均为1的最小的5个正整数。

PrivateSubCommandl_Click()

Dimcountn%,n%

Countn=0

N=1

Do

N=n+1

Ifnmod3=1andnmod5=1andnmod7=1then

Printn

Countn=countn+1

Endif

Loopuntilcountn=5(或Loopwhilecounln〈5)

Endsub

5.某次大奖赛,有7个评委打分,下列程序对每一位参赛者输入7个评委的分数,

去掉一个最高分,去掉一个最低分,求出的平均分就是该参赛者的最后得分。

PrivateSubCommand1_C1ick()

Dimmark!,aver!,i%,maxi!,mini!

Aver=0

Fori=lto7

Mark二inputbox(“输入第"&I&“位评委的打分”)

Ifi=lthen

Max1=mark:mini-mark

Else

Ifmark<minlthen

Mini=mark

Elseifmark>maxl

Maxi二mark

Endif

Endif

Aver-aver+mark

Nexti

Avor=(aver-maxl-minl)/5

Printaver

Endsub

6.有一个长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如

果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩

5阶,只有当如果每步跨7阶时恰好走完,显示这个阶梯至少要有多少阶。(提

示:阶梯数一定是7的倍数)

PrivateSubCommandl_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(-lto2,3)assingle

答:数组名:a,数组类型:单精度型,维数:二维,一维下界-1,上界2,二维下界0,

上界3,数组大小4X4共16个元素,各元素为:(T,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,其声明语句是OptionBaseI

(2)程序中自动测试数组的下界用Lbound函数来实现,上界用Ubound函数实现

(3)在运行时load语句可以为控件数组增加控件元素;unload语句删除一个存在的控件

元素

(4)当数组首次被声明时,对所有的数值型数组默认初值是_Q_;字符数组默认初值是辿

(5)当用Redim语句改变动态数组大小时,数组元素的值会丢失;用Preserve关键字可以

保留数组元素原来的值。

(6)已知建立了5个元素的Command1控件数组,用Index参数可识别用户单击了某控件

数组元素

(7)F面程序的功能是从键盘输入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(1)<a(imin)Thenimin=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,删除数组中数组元素中某个元素

PrivateSubCommandl_Click()

Dima(),key%,j%

A=array(l,6,8,3,5,9,l0,2,7,4)

Key=val(inputbox(“输入要删除的值”)

Fori=0toUbound(a)

Ifkey=a(I)then1比较是否是要删除的数据,如果找到,

Forj=i+ltoUbound(a)哪么从下个数(i+1)开始

A止'将每一项前移,实现删除

Nextj

Redimpreservea(Ubound(a)-l)'使数组元素减少一个,而又要保留原来数据

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+l)'使数组元素增加一个,又要保留原来数据

M=val(inputbox("输入欲插入的数”))

Fori=Ubound(a)-1to0step-1

Ifm>=a(I)then

a(I+l)=a(I)'寻找插入的位置

IF1=0thena(I)=m’欲插入的数比所有数组元素都大时

Else

a(I+l)=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)或者(KeyCode=l14)and(Shift=2)

表达式,可以检测Ctrl和F3是否同时被按下,F3的键盘扫描码是114

6.MouseDown事件发生在MouseUp和Click事件之前,但MouseUp和Click事件发生的次

序与对象有关。

答:在窗体上创建一个Command1(命令按钮)和一个Labell(标签),然后编写下列事件

过程,就可以测试这三个事件发生的先后顺序了。

PrivateSubCommandl_Click()

Print"命令按钮的Click事件"

EndSub

PrivateSubCommandI_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAs

Single)

Print"命令按钮的MouseDown事件"

EndSub

PrivateSubCommandl_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Print"命令按钮的MouseUp事件"

EndSub

PrivateSubLabell_Click()

Print"标签的Click事件"

EndSub

PrivateSubLabell_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Print"标签的MouseDown事件"

EndSub

PrivateSubLabel1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Print"标签的MouseUp事件"

EndSub

测试后可以发现,在标签上发生的顺序是:MouseDown、MouseUp、Click,而在命令按钮

上发生的顺序是MouseDown>Click,MouseUp。

7.请说明键盘扫描代码(KeyCode)与键盘ASCII码(Keyascii)的区别。

答:键盘扫描代码(KeyCode)是对键盘上按键的编码,它告诉事件过程用户操作的物理键。

也就是说,大小写字母使用同•个键,它们的KeyCode相同。对于有上档字符和下档字符

的键,它们的KeyCode也是相同的,为下档字符的Ascii码。

8.计算机键盘上的“4”键的上档字符是“$”,当同时按下shift和“4”键时,KeyPress事件

发生了几次?过程中的KeyAscii参数值是多少?

答:KeyPress事件发生了诙,KeyAscii的参数值是36,也就是“$”字符的Ascii码是36。

因为KeyPress事件是在输入一个Ascii码字符时发生的事件,尽管在输入“$”字符时按了

两个键,但是输入了一个字符,所以KeyPress事件发生了一次。

9.怎样在程序中通过单击菜单项左边加上或删除标记“J”

答:通过设置checked属性值(false或true)

10.在使用“字体”对话框之前必须设置什么属性?要控制字体颜色,又将如何设置Flags

属性

答:必须设置flags属性值;要控制字体的颜色,应设置flags=&H103(或flags=&H3or&H100)

二、填空题

1.复选框回变属性设置为2时,变成灰色,禁止用户选择。

2.在程序运行时,如果将框架的enabled属性设为False.则框架的标题呈灰色,表示框架

内的所有对象均被屏蔽,不允许用户对其进行操作。

3.listcount-1表示列表框中最后一项的序号。

4.组合框是组合了文本框和列表框的特性而形成的一种控件。卜拉式列表框风格的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论