VB教材习题答案.docx
《VB教材习题答案.docx》由会员分享,可在线阅读,更多相关《VB教材习题答案.docx(62页珍藏版)》请在冰豆网上搜索。
![VB教材习题答案.docx](https://file1.bdocx.com/fileroot1/2022-12/30/f5895e5f-bbfb-4d23-96b8-12fe8fbccbe0/f5895e5f-bbfb-4d23-96b8-12fe8fbccbe01.gif)
VB教材习题答案
新编VisualBasic程序设计教程
习题解答
蔡树元著
目录
第一章VisualBasic概述1
第二章创建用户界面2
第三章VB语言基础4
第四章算法基础VisualBasic的基本语句6
第五章数组14
第六章程序调试26
第八章过程27
第一章VisualBasic概述
1.VB是用于开发________环境下应用程序的工具。
(B)
A.DOSB.WindowsC.DOS和WindowsD.UNIX
2.VB6.0是________位操作系统下的应用程序开发工具。
(A)
A.32B.16C.32或16D.64
3.一个对象可执行的动作与可被一个对象所识别的动作分别称为________(B)
A.事件、方法B.方法、事件C.属性、方法D.过程、事件
4.有一个红色、充满氢气的气球,如果人不小心松开手抓的引线,就会飞走;如果用针刺它,则会爆破。
请问,对于气球对象,哪些是属性、哪些是事件、哪些是方法?
答:
属性是红色、氢气;事件是松开、针刺;方法是飞走、爆破。
5.简述事件驱动过程程序的设计原理?
答:
使用VB不仅可以非常便捷地设计出Windows应用程序的窗口界面,设置界面中各种对象的属性,而且可以通过编写程序代码段,为对象规定在被某个“事件”激活时应发生的各种动作以及所要进行的信息处理的具体内容,这样的代码段称为“过程”。
为各个对象编写的过程集合在一起,就构成一个完整的应用程序。
6.VB的集成开发环境都有哪些元素些组成?
答:
VB的集成开发环境由标题条、菜单条、弹出式菜单(上下文菜单)、工具栏、控件工具箱、初始窗体、工程资源管理器子窗口、属性子窗口、窗体布局子窗口、代码编辑器窗口、立即、本地和监视窗口等。
7.简述用VB开发应用程序的一般步骤?
答:
VB开发应用程序的一般步骤是:
①创建程序的用户界面;②设置界面上各个对象的属性;③编写对象响应事件的程序代码;④保存工程;⑤测试和调试应用程序,检查并排除程序中的错误;⑥创建可执行程序。
第二章创建用户界面
1.窗体的属性主要可分为几类?
Caption属性和Name属性有何不同?
答:
窗体的属性主要可分为:
杂项、外观、行为、字体、位置等五类。
Caption:
窗体标题,是出现在窗体标题栏上的文本内容;Name:
窗体名称,在程序代码中被作为对象的标识名。
2.以下窗体名中哪些是非法的窗体名?
(ABE)
A.aformB.3frmC.f_1D.frm5E.f_1*
3.VB为什么要提供多种窗体边框风格?
试从已学习过的各种Windows应用程序的窗口中举例说明?
答:
VB中提供了六种窗体的边框风格,如设定值为1和3,它表示Windows应用程序中的对话框,其大小不可改变;设定值为2表示Windows应用程序中的窗口,其大小可以改变。
4.在桌面上存在多个窗口时,改变窗口的工作状态会引发何种事件?
改变窗口大小呢?
答:
改变窗口的工作状态会引发激活事件和失去激活事件;改变窗口大小会引发Resize事件。
5.(略)
6.有程序代码如下:
Form2.Caption=”Help”,试问:
Form2、Caption和Help分别代表___(C)
A.对象、值、属性B.值、属性、对象
C.对象、属性、值D.属性、对象、值
7.VB的常用控件中,哪些控件具有Caption属性,而没有Text属性?
哪些控件具有Text属性,却没有Caption属性?
答:
具有Caption属性而没有Text属性的控件有:
标签、命令按钮、复选框、选项按钮、框架;具有Text属性而没有Caption属性的控件有:
文本框、组合框、列表框。
8.对象的属性是否只能在设计界面时在属性窗口中进行设置?
属性窗口中的属性列表是否包括了一个对象的所有属性?
答:
属性的设置既可以在属性窗口中进行设置,也可以在程序代码中进行设置,但有些对象的有些属性只能在属性窗口中进行设置,如文本框的多行属性,有些对象的有些属性只能在程序代码中进行设置,如列表框的列表项数目属性;属性窗口中的属性列表中不包括一个对象的所有属性,如列表框的ListIndex属性、ListCount属性就不在属性列表中。
9.除窗体之外,还有哪些控件可作为其他控件的容器使用?
答:
还有:
框架、图片框
10.常用控件中具有Value属性的控件有哪些?
它们的取值及类型有何异同?
答:
常用控件中具有Value属性的控件有:
选项按钮、复选框、滚动条:
(1)选项按钮的取值为逻辑型,选中该选项按钮时,其值为True,未选中该选项按钮时,其值为False;
(2)复选框的取值为数值型,选中该复选框时,其值为1,未选中该复选框是,其值为0,复选框变灰时,其值为2;
(3)滚动条的取值为数值型,其值为滚动块在滚条中的位置。
11.哪些控件对象可以获得焦点?
某程序的界面上有多个文本框,还有命令按钮,如果没有特别设置,在程序启动时,哪个控件将具有焦点?
答:
可以获得焦点的控件对象:
文本框、命令按钮、选项按钮、复选框、列表框、组合框、滚动条(水平滚动条、垂直滚动条)
如果没有特别设置,在程序启动时,首先设置具有焦点的控件将具有焦点。
12.以下使用方法的代码中,正确的是________(C)
A.Label1.SetFocusB.Form1.Clear
C.Text1.SetFocusD.Combo1.Cls
将复选框的Value属性设为"2",其效果与把它的Enabled属性设置为"
13.False"有何异同?
若把一个控件的Visible属性设为"False",意味着什么?
答:
将复选框的Value属性设为2,表示该复选框暂时变灰,启动后仍然可以对其操作,而将复选框的Enabled属性设置为False,表示该复选框灰化,启动后不可以对其操作,直到将Enabled属性设置为True,才能对其操作。
若把一个控件的Visible属性设为False,表示该控件不可见。
14.如何给一个列表框或组合框控件增添列表项?
已有的列表项如何删除?
答:
给列表框或组合框控件增添列表项,可用属性窗口中的List属性,或在程序代码中使用AddItem方法。
如果删除所有的列表项可用Clear方法,如果删除某一列表项可用RemoveItem方法。
附:
显示、清除、删除方法
1.显示方法:
(1)窗体[窗体名.]Print内容
例:
[Form1.]Print"学习VisualBasic"
(2)文本框文本框名.Text=内容
例:
Text1.Text="学习VisualBasic"
(3)标签标签名.Caption=内容
例:
Label1.Caption="学习VisualBasic"
(4)图片框图片框名.Print内容
例:
Picture1.Print"学习VisualBasic"
(5)列表框列表框名.AddItem内容[,位置号]
例:
List1.AddItem"学习VisualBasic"
List1.AddItem"学习VisualBasic",6
(6)组合框组合框名.AddItem内容[,位置号]
例:
Combo1.AddItem"学习VisualBasic"
Combo1.AddItem"学习VisualBasic",6
2.清除方法
(1)窗体[窗体名.]Cls
例:
[Form1.]Cls
(2)文本框文本框名.Text=""
例:
Text1.Text=""
(3)标签标签名.Caption=""
例:
Label1.Caption=""
(4)图片框图片框名.Print内容
例:
Picture1.Cls
(5)列表框列表框名.Clear
例:
List1.Clear
(6)组合框组合框名.Clear
例:
Combo1.Clear
3.删除方法
(1)列表框列表框名.RemoveItem位置号
例:
List1.RemoveItemList1.ListIndex
(2)组合框组合框名.AddItem内容[,位置号]
例:
Combo1.RemoveItemCombo1.ListIndex
第三章VB语言基础
1.如果编写的过程要被多个窗体及其对象调用,应将这些过程放在哪一类模块中?
(B)
A.窗体模块B.标准模块C.工程D.类模块
2.事件过程与通用过程的主要区别是什么?
答:
事件过程是指为窗体以及窗体上的各种对象编写的用来响应由用户或系统引发的各种事件的代码行;通用过程是指一个应用程序中的多个窗体可以共享一些代码,或者一个窗体内不同的事件过程可以共享的一些代码;事件过程是由用户或系统响应某个事件而执行的,通用过程是由事件过程或其他通用过程调用而执行的。
3.通用过程只能存在于标准模块中,这种说法对吗?
答:
不对,通用过程既可存在于标准模块中,也可存在于窗体模块中。
4.VB有哪些数据类型?
答:
VB中的数据类型有:
整型、长整型、单精度、双精度、定长字符型、变长字符型、逻辑型、字节型、日期型、货币型、对象型、变体型。
5.字符型常量与日期型常量在使用时有何区别?
下列常量中哪些是字符串型常量,哪些是日期型常量?
哪些什么也不是?
A.“Iamastudent.”B.“江苏南京”C.#02/25/1999#
D.#January1,1993#E.“02/25/1999#F.#January1,1993”
答:
字符型常量在使用时要加西文的双引号,日期型常量再使用时要加#号;字符型常量有:
A、B;日期型常量有:
C、D;什么也不是:
E、F。
6.下列符号中哪些是VB合法的变量名?
A.blnFragB._a5bC.lngNumD.Area_Triangle
E.User&InputF.5Name
答:
合法的变量名有:
A、C、D
7.变量作用域包括几个等级?
说明的方式有何区别?
答:
变量作用域包括三个等级:
过程级、窗体级、全局级。
局部(过程级):
用Dim、Static在过程中定义,作用范围:
该过程,脱离该过程后无效,也就是在其它过程中无效;Static:
静态变量,脱离该过程后,变量的值不消失,用于子过程或函数过程中;窗体(模块)级:
用Private、Dim在通用/声明部分定义,作用范围:
该窗体中所有过程,脱离该窗体后无效,也就是在其它窗体的过程中无效;全局(公有的):
用Public在通用/声明部分定义;如果在标准模块中定义,则作用范围为该工程的所有窗体,调用时直接使用变量名;如果在窗体模块中定义,则作用范围为该工程的所有窗体,但本窗体调用时直接使用变量名,该工程中其它窗体调用时,须加定义时的窗体名作为前缀。
8.写出下面数学式对应的算术表达式。
(1)
a/(b+c/d)
(2)
(x+Sqr(x*x+1))^(1/3)
(3)
2*y/((a*x+b*y)*(a*x-b*y))
(4)
1+1/(1+1/m)
(5)
(d/3)^(2*x)/2
(6)
Log(y+cos(x)^2)
(7)
Abs((Exp(x)+Sin(x)^3)/(x+y))
(8)
Log((Exp(x*y)+Abs(Tan(z)^(-1)+Cos(x)^3))/(x+y-z))
9.指出并改正下面数学式对应的VB算术表达式中的错语。
(1)
A+B/A-B(A+B)/(A-B)
(2)
ABC/(D+1)*YA*B*C/((D+1)*Y)
(3)
XY^5(X*Y)^5
10.将下面的条件用VB的逻辑表达式表示。
(1)X+Y小于10且X-Y要大于0
(2)X、Y都是正整数或都是负整数
(3)A、B之一为零但不得同时为零
(4)C1+C2+C3大于等于255或C1与C2分别大于90且C3大于80
答:
(1)X+Y<10AndX-Y>0
(2)X*Y>0AndX=Int(X)AndY=Int(Y)
(3)A*B=0AndA<>B或A=0XorB=0
(4)C1+C2+C3>=255OrC1>90AndC2>90AndC3>80
11.求下列表达式的运算结果:
Mid(“VisualBasic”,1,12)=Right(“ProgrammingLanguageVisualBasic”,12)True
“ABCRG”>=“abcde”False
Int(134.69)>=Cint(134.69)False
78.9/32.77<=97.5/43.87And–45.4>-4.98False
Str(32.345)=Cstr(32.345)False
12.下列语句代码哪些可正常执行(正常执行是指系统不给出出错提示)?
A.Print32765+3溢出
B.Print5+7=14False
C.Print256/1282
D.Print“14”+3246
E.Print“14”&32“1432”
答:
能正常执行的语句有:
B、C、D、E,具体执行结果见上。
13.VB只有求自然对象的函数Log(X),如果计算式中需要使用常用对数或以2为底的对数,应如何处理?
答:
使用换底公式。
常用对数:
Ln(x)应用Log(x)/Log(10)表示;Log2(x)应用Log(x)/Log
(2)表示。
14.执行语句代码PrintFormat(7543.568,“##,##0.00”),以下答案中那一个是正确的结果。
(C)
A.7543.57B.7,543.56C.7,543.57D.7543.56
第四章算法基础VisualBasic的基本语句
1.设X与Y是同一类型的变量,试设计一个算法,把X与Y中的数据相互交换。
答:
S1:
输入X与Y
S2:
X=>A
S3:
Y=>X
S4:
A=>Y
S5:
输出X与Y
程序代码如下:
OptionExplicit
DimAAsString,BAsString,tempAsString
PrivateSubCommand1_Click()
A=Text1.Text
B=Text2.Text
temp=A
A=B
B=temp
Text1.Text=A
Text2.Text=B
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
Text1.SetFocus
EndSub
PrivateSubCommand3_Click()
UnloadMe
EndSub
2.设A、B、C是同一类型的变量,并分别被赋予不同大小的数据,设计一个算法,使得执行的结果为A>B>C
答:
S1:
输入A、B、C
S2:
如果A
S3:
如果AS4:
如果BS5:
输出A、B、C
程序代码如下:
OptionExplicit
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger,cAsInteger
DimtAsInteger
a=Text1.Text:
b=Text2.Text:
c=Text3.Text
Ifat=a:
a=b:
b=t:
End
Ifat=a:
a=c:
c=t:
End
Ifbt=b:
b=c:
c=t:
End
Text4.Text=a
Text5.Text=b
Text6.Text=c
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Text1.SetFocus
EndSub
PrivateSubCommand3_Click()
UnloadMe
EndSub
3.设计一个可以判断某数是否是素数的算法。
答:
S1:
输入一个正整数N
S2:
I=2
S3:
如果N能被I整数,则转S7
S4:
I=I+1
S5:
如果I小于等于N-1则转S3
S6:
输出N是素数,程序结束
S7:
输出N不是素数,程序结束
程序代码如下:
OptionExplicit
DimxAsLong
PrivateSubCommand1_Click()
DimiAsInteger
Fori=2Tox-1
IfxModi=0ThenExitFor
Nexti
Ifi=xThen
Text2.Text="是素数"
Else
Text2.Text="不是素数"
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubText1_Change()
x=Val(Text1.Text)
EndSub
4.设计一个判断某正整数是一个回文数的算法。
所谓回文数是指左右数字完全对称的自然数。
答:
S1:
输入一个数字字符串S
S2:
I=1
S3:
如果第I个数字与倒数第I个数字不同,则转S7
S4:
I=I+1
S5:
如果I小于等于字符串长度的一半,则返回S3
S6:
输出S是回文数,程序结束
S7:
输出S不是回文数,程序结束。
程序代码如下:
OptionExplicit
PrivateSubCommand1_Click()
DimxAsString,iAsInteger
x=Text1.Text
Fori=1ToLen(x)/2
IfMid(x,i,1)<>Mid(x,Len(x)-i+1,1)ThenExitFor
Nexti
Ifi>Len(x)/2Then
Label1.Caption="是回文数"
Else
Label1.Caption="不是回文数"
EndIf
EndSub
PrivateSubCommand2_Click()
Label1.Caption=""
Text1.Text=""
EndSub
PrivateSubCommand3_Click()
UnloadMe
EndSub
5.设计一个算法,求出给定的自然数的所有因子。
答:
S1:
输入一个正整数N
S2:
I=1
S3:
如果N能被I整数,则输出I
S4:
I=I+1
S5:
如果I小于等于N则转S3
S6:
程序结束
程序代码如下:
OptionExplicit
PrivateSubForm_Click()
DimxAsLong,iAsLong,jAsLong
x=InputBox("请输入一个自然数:
")
Printx&"的所有因子如下:
"
Fori=1Tox
IfxModi=0Then
Printi;
j=j+1
IfjMod10=0ThenPrint
EndIf
Nexti
Print
Print"共有";j;"个。
"
EndSub
6.在文本框Text1与Text2中分别输入35与48,变量S与X分别为字符型与整型,试问以下赋值语句的执行结果是什么?
(1)S=Text1.Text+Text2.Text“3548”
(2)X=Text1.Text+Text2.Text3548
(3)S=Text1.Text&Text2.Text“3548”
(4)X=Text1.Text&Text2.Text3548
(5)S=Val(Text1.Text)+Text2.Text“83”
(6)X=Val(Text1.Text)+Text2.Text83
(7)S=Val(Text1.Text)&Text2.Text“3548”
(8)X=Val(Text1.Text)&Text2.Text3548
7.根据下图填空:
z=InputBox("输入一个数:
","程序示例",1.5)
1.写出显示如下图所示信息框的MsgBox函数。
MsgBox("Z的值"&Str(z)&"大于0",48,"程序示例")
2.阅读程序,写出执行结果。
(1)PrivateSubForm_Click()
DimaAsInteger,bAsInteger
a=1:
b=0
DoWhilea<=5
b=b+a*a
a=a+1
Loop
Printa,b
EndSub
运行结果为:
655
(2)PrivateSubForm_Click()
DimchAsString,iAsInteger
ch="DEF"
Fori=1ToLen(ch)
ch=Mid(ch,2*i-1,1)&Left(ch,Len(ch))
Printch
Nexti
EndSub
运行结果为:
DDEF
EDDEF
FEDDEF
(3)PrivateSubForm_Click()
DimpAsInteger,iAsInteger
p=1
Fori=1To5
p=p+(2*i-1)/(2*i+1)
Ifp>=20ThenExitFor
Nexti
Printi,p
EndSub
运行结果为:
65
(4)PrivateSubForm_Click()
DimpAsInteger,iAsInteger,nAsInteger
p=2:
n=20
Fori=1TonStepp
p=p+2
n=n-3
i=i+1
Ifp>=10ThenExitFor
Nexti
Printi,p,n
EndSub
运行结果为:
11108
10.编写程序,随机生成100个两位整数,并统计出其中小于等于40、大于40且小于等于70及大于70的数据个数。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Di