《VB课后习题答案.doc》由会员分享,可在线阅读,更多相关《VB课后习题答案.doc(22页珍藏版)》请在三一办公上搜索。
1、第一章1第二章2第3章3第4章4第5章8第六章11第7章14第8章17第九章18第十章19第一章1、 简述VB6.0的主要特点答:方便、直观的可视化设计工具;面向对象程序设计方法;事件驱动的编程机制;易学易用的应用程序集成开发环境;结构化程序设计语言;完备的联机帮助功能;强大的多媒体、数据库和网络功能。2、 当正常安装VB6.0后,误把Windows子目录删除。当重新安装Windows后,是否需要再次安装VB6.0?答:要重新安装的。因为安装VB6.0时,有些VB程序被系统自动安装在Windows目录下,所以一旦删除Windows子目录,就必须重新安装VB6.0。3、 Visual Basic
2、 6.0分为学习版、专业版和企业版,如何知道所安装的是哪个版本?答:在VB6.0的启动界面上,能显示对应的版本。4、 叙述建立一个完整应用程序的过程答:首先建立用户界面的控件对象(简称控件);然后对控件属性进行设置;再对控件事件过程及编程;保存应用程序;程序调试和运行。5、 Visual Basic 6.0有多种类型窗口,若要在设计时看到代码窗口,应怎样操作?答:选择“视图”“代码窗口”命令或单击“工程资源管理器”窗口中的“查看代码”按钮。6、 当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。试问该工程涉及多少个要保存的文件?若要保存该工程的所有文件,应先保存什么文件?再保存什么文件
3、?若不这样做,系统会出现什么信息?答:涉及两个文件要保存。先保存窗体文件(.frm),再保存工程文件(.vbp)。若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求先保存窗体文件。7、 保存文件时,若不改变目录名,则系统默认的目录是什么?答:系统默认的目录是VB988、 安装Visual Basic 6.0后,帮助系统是否也已安装?答:没有。VB6.0的帮助系统在两张光盘上,即MSDN Library,其中还包含了VC、VFP等其他语言的帮助系统。9、 如何使用Visual Basic 6.0的帮助系统?答:最方便的方法是选定要帮助的内容,然后按F1功能键,这时系统打开MSDN Lib
4、rary查阅器,直接显示与选定内容有关的帮助信息。第二章10、 什么是类?什么是对象?什么是事件过程?答:类是同类对象集合的抽象,它规定了这些对象的公共属性和方法;对象是类的一个实例,对象包含三个要素:属性、方法和事件。当在对象上发生了事件后,应用程序就要处理这个事件,而处理的步骤就是事件过程。11、 属性和方法的区别是什么?答:属性是对象的特征,方法是对象的行为。前者有值,可以被赋值或引用;后者没有值,表示能够执行的操作。12、 当标签边框的大小由Caption属性的值进行扩展或缩小时,应对该控件的什么属性进行何种设置?答:将该控件的Autosize属性值设置为true。13、 在VB6.0
5、中,命令按钮的显示形式可以有标准的和图形的两种选择,它们通过什么属性来设置?若选择图形的,则通过什么属性来装入图形?若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能显示该图形,而显示的是Caption属性设置的文字,应怎样修改?答:命令按钮的显示形式通过将Style属性值设置为Graphical来实现。 通过Picture属性来装入图形。 不能显示图形是因为Style属性值被设置为Standard,只要将其改为Graphical,并且将Caption的值设置为空即可。14、 如果文本框要显示多行文字,应对什么属性设置为何值?答:将MultiLine属性的值设置为True。15、 标签
6、和文本框的区别是什么?答:在程序运行时,标签只能显示文字,不能输入文字,显示文字通过对Caption属性赋值来实现;而文本框既能显示文字,也能输入文字,这通过text属性来实现。16、 要让文本框获得焦点的方法是什么?答:SetFocus方法。17、 简述文本框的Change和KeyPress事件的区别答:相同点是当在文本框输入内容时,同时激发上述两个事件;不同点是Keypress事件可通过参数KeyAscii返回所按键的编码值,可依此判断数据输入的正确性或数据输入结束与否,因而该事件使用较多;change事件还可以发生在程序改变文本框的text属性时。18、 当某文本框输入数据后(按了回车键
7、),经判断后认为是数据输入错,应怎样删除原来文本框中的数据?答:假定文本框的名称为Text1,则事件过程如下:Private Sub Text1_KeyPress(KeyAscii As Integer ) ifKeyAscii = 13 then if 出错条件判断成立 then Text1=” end if end ifend sub 注意:删除刚输入的字符,通过KeyAscii=0语句实现;焦点定位文本框对象采用SetFocus方法。19、 在程序运行前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一般存放在什么事件中?如果要将命令按钮定位在窗体的中央,试写
8、出事件过程代码。答:这些代码一般放在Forem_Load()事件过程中。将窗体定位在屏幕的中央,只能在属性窗口中将Form1窗口的StartUpPosition属性值设置为2(表示屏幕中心),该属性不能在运行时设置。要将按钮定位在窗体的中央,事件过程如下:Private sub Form_Load() Command1.left= Form1.scaleWidth2-command1.Width2 Command1.Top = Form1.ScaleHeight 2 command1.Height 2End Sub其中,ScaleWidth、ScaleHeight表示窗体的相对宽度和高度。20
9、、 VB6.0提供的大量图形文件存放在哪个目录?若你的计算机上没有安装,应怎样安装这些图形文件?答:存放在Graphics目录下。在VB6.0的安装盘上可以找到Graphics子目录,将其复制到硬盘上的VB目录下。第3章1、合法的有:(1)单精度(3)单精度(4)双精度(6)整形(7)字符型(9)日期型(10)双精度(12) 八进制表示(14)十六进制表示(15)逻辑型(18)单精度数 2、合法变量有:(1),(2),(6),(9),(10),(11) 3、算术表达式写成VB表达式 (1)abs(x+y) +z5 (2)(1 + x * y ) 6 (3)(10*x + sqr(3*y) )
10、/ (x * y ) (4)( -b+sqr(b2-4*a*c) )/2/a (5)1 / (1/r1+1/r2+1/r3) (6)sin(45*3.14/180)+ ( exp(10)+ log(10) )/ sqr( x+y+1) 4、 根据条件写出相应的VB表达式 (1) chr( int ( Rnd * 10 +67 ) (2) int ( Rnd * 101 +100 ) (3) x * y 0 (4) x/5=0 or x /7 =0 (5) (x mod 10) 10 + x /10 (6)Round(123.2389*100)/100 (7) Ucase (c ) =A and
11、 Ucase(c )=a and Lcase(c )=10 and x 20 (10) ( x z ) or ( x z and y z and y z 5、 下出下列表达式的值: (1) 123+23 mod 10 7 +Asc(A) 【188】 (2) 100+100 & 100 【200100】 (3) Int ( 68.555*100+0.5)/100 【68.56】 (4) 已知A$=“87654321, 求表达式Val(Left$(A$,4)+ Mid(A,4,2)的值 【876554】 (5)DateAdd(m,1,#1/30/2000#) 【2000-2-29】 (6) Len
12、(VB程序设计) 【6】第4章1、 结构化程序设计的三种基本结构是什么?答:顺序结构、选择结构和循环结构。2、 指出下列赋值语句中的错误(包括运行时错误):(1)10x=sin(x)+y 10x是非法变量名(2)c=3+sqr(-3) 待求平方根的数为负数(3)c+x+y=c*y 赋值符左边是表达式了(4) x=sin(x)/(20 mod 2) 分母为零了3、 Msgbox函数与InputBox函数之间有什么区别?各自获得什么值?答:两个函数共同之处都显示对话框。区别:Inputbox函数等待用户在文本框中输入数据,获得的是输入的字符串数据;Msgbox函数等待用户按一按钮,获得的是表示按钮
13、的整数值,以决定程序的流向。4、 要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使用什么函数?如何编写对应的print方法?答:使用format函数,具体如下:print Format(x,”0.0” )print Format ( y , “ 0.00 “ )print Format ( z , “ 0.000 “ )5、 语句 if then 中的表达式可以是算术、字符、关系、逻辑表达式中的哪些?答:算术、关系、逻辑表达式6、 指出下列语句中的错误:(1) if xy then print x 表达式书写错误,应写成:x=y(2) if 10x20 then x=x
14、+20 表达式书写错,应是:10x and x 20 y = x * x + 3 * x +2 case is=10 y = sqr ( 3 * x ) 2 case is 0 y= 1 / x + Abs ( x ) end select print y end sub按照下列条件,写出相应的条件语句(1)字符型变量中第三个字符是“C”时,利用Msgbox显示“yes”,否则显示“No” if Mid ( c , 3, 1 ) = “C” then Msgbox “yes” else Msgbox “No”(2)利用if语句、select case语句两种方法计算分段函数:答:private
15、 sub command1.click() x=val( text1) if x 20 then y = x * x + 3 * x +2 elseif x=10 then y = sqr ( 3 * x ) 2 elseif x0 then y= 1 / x + Abs ( x ) end if print y end sub(3)利用if语句和iif函数两种方法求三个数x,y,z中的最大值并存入变量max中。 if xy then max=x else max = y if zmax then max = z max = iif ( xy , x , y ) : max = iif ( m
16、ax z, max , z )8、 在多分支结构的实现中,可以用ifthenelseifendif形式的语句,也可以用select caseend Select形式的语句,由于后者的条件书写更灵活、简洁,是否完全可以取代前者?答:虽然Select Caseend Select形式的语句中条件书写更灵活、简洁,程序可读性强,但使用它有限制。(适合于对一个变量判断的)首先,看该语句的形式: Select Case case case Case else End Select其中变量或表达式只能含有一个变量,任何含有多个变量的形式都是错误的。如,要判断x,y是否在第一、三象限内,若输入如下语句:se
17、lect case x,y, VB程序会显示“缺少:语句结束”。其次,在后面的case表达式列表中不能出现Select case变量或表达式中使用的变量,也不能出现主教材上列出的四种形式以外的符号或关键字(符号是:逗号;关键字是:is, to)。9、 计算下列循环语句的次数(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 -0.5 无循环,因为步长0 ,循环初值小于终值(4)For I = -3 to 20 step 0 无限循环,因为步长=010、 下列30-
18、90为语句标号,分别标记该语句,第40名共执行了几次,第50名共执行了几次,执行第90号语句后显示的结果是多少?30 For j =1 to 12 Step 3 循环4次40 For k = 6 to 2 step -2 循环3次,被执行4次50 mk = k 共执行4*3=12次60 print j , k70 next k80 next j90 print j , k , mk 13 0 211、 如果事先不知道循环次数,如何用forNext结构来实现?答:将循环终值设置得足够大,再在循环体内设置条件语句,满足条件退出循环。12、 利用循环结构,实现如下功能:(1) s=0: for I
19、=1 to 10 s = s + ( i+1)*(2*i+1) next i(2)分别统计1100中,满足3的倍数、7的倍数的数各是多少? s3 = 0: s7 = 0 for I =1 to 100 if I mod 3 = 0 then s3 = s3 +1 if I mod 7 = 0 then s7 = s7 +1 next i(3)将输入的字符串以反序显示。例如,输入“ASDFGHJKL”,显示“LKJHGFDSA”。 s = InputBox(“ 请输入字符串”) for I = Len( s ) to 1 step -1 print Mid ( s, I, 1 ) next i1
20、3、10100将20转换成2进制数表示下面程序的运行结果是什么?该程序的功能是什么?Private Sub Command1_Click()Dim x$, n%n = 20Do While n 0 a = n Mod 2 n = n 2 x = Chr(48 + a) & x Loop Print xEnd Sub14、22,484利用相差法求x,y的最大公约数和最小公倍数下面程序的运行结果是什么?该程序的功能是什么?Private Sub Command2_Click() Dim x%, y%, z% x = 242: y = 44 z = x * y Do Until x = y If x
21、 y Then x = x - y Else y = y x Loop Print x, z / xEnd Sub15、 利用随机函数产生50100范围内的20个随机数,显示其中最大值,最小值和平均值。Private Sub Command3_Click() Dim i%, min%, max%, avg!, x% min = 100: max = 50: avg = 0 For i = 1 To 20 x = Int(Rnd * 51 + 50) Print x; If x max Then max = x If x max Then max = c(i, j): maxi = i: max
22、j = j End If Next j Next i(4)以下三角形式显示A矩阵,上三角形式显示B矩阵 For i = 1 To 4 For j = 1 To i Print a(i, j); Space(2); Next j Print Next i Print 输出B上三角元素 For i = 1 To 4 Print Tab(i * 5); For j = i To 4 Print b(i, j); Next j Print Next i(5)将A矩阵第一行与第三行对应元素交换位置 For j = 1 To 4 t = a(1, j): a(1, j) = a(3, j): a(3, j
23、) = t Next j(6)求A矩阵 矩阵条对角线元素之和 Sum = 0 For i = 1 To 4 Sum = Sum + a(i, i) + a(i, 5 - i) Next i(7)将A矩阵按列的次序把各元素放入一维数组D中,显示结果Dim D%(16)For i = 1 To 4 For j = 1 To 4 D(k) = a(j, i): k = k + 1 Next jNext iPrint D一维数组无素为:For k = 0 To 15 Print D(k);Next k6、 声明一个一维字符类型数组,有20个元素,每个元素最多放10个字符,要求:1)由随机数形成小写字母
24、构成的数组,每个元素的字符个数由随机数产生,范围1102)要求将生成的数组分4行显示,规定每个元素宽度为103)显示生成的字符数组中字符最多的元素 Dim st(1 To 20) As String, c As String * 1 Dim i%, n% For i = 1 To 20 n = Int(Rnd * 11 + 1) For j = 1 To n c = Chr(Int(Rnd * 26 + 97) st(i) = st(i) & c Next j Next i (2)按一行显示5个字符串要求输出 For i = 1 To 20 Print st(i); Space(15 - Le
25、n(st(i); If i Mod 5 = 0 Then Print Next i (3)显示20个中字符个数最多的一个 maxlen = 0 maxstr = For i = 1 To 20 If Len(st(i) maxlen Then maxlen = Len(st(i) maxstr = st(i) End If Next i Print Print 最多字符个数:; maxlen; 字符串是:; maxstr7、 简述列表框和组合框的异同处答:相同处都是可存放字符串;不同处在于:组合框是文本框和列表框的组合,可以输入内容,但要通过additem方法添加;列表框只能选择项目,不能直接
26、输入内容。8、 列表框或组合框中选中的项目、总项目数的属性分别是什么?答:表示选中的内容,属性有:text;总项目数的属性为ListCounts。9、 简述自定义类型与自定义变量的区别答:前者仅定义了类型,这如同系统提供的integer、string等基本类型;后者系统为其分配了存储单元。10、 自定义一个职工类型,包含职工号、姓名、工资。声明一个职工类型的动态数组。输入n信职工的数据;要求按工资递减的顺序排序,并显示排序的结果,每个职工一行显示三项信息。Private Type zgtype no As Integer name As String * 10 gz As SingleEnd
27、TypeDim s( ) As zgtype, n%Private Sub Form_click() Dim t As zgtype n = InputBox(请输入人数) ReDim s(1 To n) For i = 1 To n With s(i) .no = InputBox(请输入职工工号) .name = InputBox(请输入职工姓名) .gz = InputBox(请输入职工工资) End With Next i 根据工资递减排序 For i = 1 To n - 1 For j = i + 1 To n If s(j).gz s(j - 1).gz Then t = s(j
28、): s(j) = s(j - 1): s(j - 1) = t End If Next j Next i 输出信息 For i = 1 To n Print s(i).no, s(i).name, s(i).gz Next iEnd Sub第六章1、 简述子过程和函数过程的共同点和不同之处答:子过程和函数过程的共同点:函数过程和子过程都是功能相对独立的一种子程序结构,它们有各自的过程头、变量声明和过程体。在程序中使用它们不但可避免书写重复的程序语句,缩短代码,而且可使程序条理清晰,容易阅读。两者不同点是:1)过程声明的关键字不同,子过程用的是sub,函数过程用的是function.2)子过程
29、名无值就无类型声明,函数过程名有值就有类型声明3)函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值;而子过程名在过程体内不能赋值。4)调用方式不同,子过程是一条独立的语句,可用call子过程或或省略call直接以子过程名调用;函数过程不是一条独立语句,是一个函数值,必须参与表达式的运算5)一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数过程定义的形式,并在子过程的形参表中增加一个地址传递的形参来传递结果。2、 什么是形参、什么是实参?什么时候是值引用?什么是地址引用?地址引用时,对应的实参有什么影响?答:形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个
30、数、类型、位置,形参的名字并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。实参是调用子过程时提供给过程形参的初始值或通过过程体处理后获得的结果。调用时用实参代替形参,实参与形参在个数、类型、位置一一对应,实参与形参名相同与否无关。实参与形参的结合有两种方法,即传地址(byref)和传值(byval),或称地址引用和值引用,缺省为地址引用。值引用时,系统将实参的值传递给对应的形参,实参与形参断开了联系。如果在过程体中改变形参的值,不会影响到实参。地址引用时,实参与形参变量共同用一个存储单元,如果在过程中改变了形参的值,则对应的实参也将发生改变。地址引用时,实参只能是变量,不能是常量或
31、表达式。3、 指出下列过程语句说明中的错误:1)sub f1 ( n % ) as Integer 错误为sub子过程名无返回值,也就没有类型2)function f1 % ( f1 % ) 函数名与形参名相同了3)sub f1 (byval n % ( ) ) 形参n为数组,不允许声明为byval值传递4)sub f1 ( x (i) as integer ) 形参x( i)不允许为数组元素4、 已知如下求两个平方数和的fsum子过程:public sub fsum( sum % ,byval m%, byval n%) sum = a*a + b * bend sub在事件过程中若有如下变
32、量声明:private sub command1_click ( ) Dim a%, b% ,c! a = 10 : b = 20则指出如下过程调用语句的错误所在:(1)fsum 3 , 4 , 5 fsum子过程的第一个形参是地址传递,因此对应的实参应该是个变量,不应是3(2)fsum c , a , b fsum子过程的第一个形参是地址传递并且是整形,但对应的C是单精度(3)fsum a + b, a , b fsum子过程的第一个形参是地址传递,对应的实参不应该是个表达式a+b(4)call fsum (sqr (a) , sqr (b ) fsum子过程的第一个形参是地址传递,对应的实
33、参不应该是个表达式sqr(c)(5)call fsum c, a , b 用call语句调用fsum子过程,必须加圆括号括起实参。5、 利用迭代法求议程x2-a=0的近似根,要求精度为10-5,失代公式为 。编制三个过程:迭代函数过程、迭代子过程和递归法函数过程。Private Sub Command1_Click() Print Print 函数过程; f1(10) Call s1(x!, 10) Print 子过程 ; x! Print 递归调用; dgf(x, 10)End SubPublic Function f1(a!) 函数过程 Dim x!, x1! x = a Do x1 =
34、(x + a / x) / 2 If Abs(x - x1) 0.00001 Then Exit Do x = x1 Loop f1 = xEnd FunctionPublic Sub s1(x1!, a!) 子过程 Dim x! x = 9 Do x1 = (x + a / x) / 2 If Abs(x1 - x) 0.00001 Then Exit Do x = x1 LoopEnd SubPublic Function dgf!(x, a!) 递归调用 x1 = (x + a / x) / 2 If Abs(x - x1) 0.00001 Then dgf = x Else dgf =
35、 dgf(x1, a) End IfEnd Function6、 要使变量在某事件过程中保留值,有哪几种变量声明的方法?答:声明变量为全局(public)、通用声明段或标准模块声明的模块级变量、局部过程声明的表达态变量static。7、 为了使某变量在所有的窗体中都能使用,应在何处声明该变量?答:在标准模块声明为全局变量8、 在同一模块、不同过程中声明的相同变量名,两者是否表示同一个变量?两者间有无联系?答:表示不同的变量;两者没有关系。第7章1、 框架的作用是什么?如何在框架中建立控件?答:对单选按钮进行分组,每一组单选按钮都是独立的,对一组单选按钮进行操作不会影响其他组单选按钮的选择;另外
36、可对窗体上现有控件进行分组,提供视觉上的区分和总体的激活或屏蔽特性。在窗体上创建框架及其内部控件时,必须先建立框架,然后在其中建立各种控件。在框架内创建控件的方法如下:1)先单击工具箱上的工具,然后利用出现的“+”指针,在框架内行当位置拖拉出适当大小的控件,不能使用双击工具箱上工具的自动方式。2)如果要用框架对窗体中现有控件进行分组,则应先选定控件,然后剪切到剪贴板,最后粘贴到框架上。2、 如果要让定时器每30秒产生一个Timer事件,则Interval属性应设置为多少?答:定时器是以Interval属性的值作为时间间隔产生Timer事件的。Interval属性值的单位ms(0.001s),因此当Interva