vb难点与考点.doc_第1页
vb难点与考点.doc_第2页
vb难点与考点.doc_第3页
vb难点与考点.doc_第4页
vb难点与考点.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

2011年计算机二级考试VB常见错误和难点分析1.标点符号错误在VB中只允许使用西文标点,任何中文标点符号在程序编译时产生“无效字符”错误,并在该行以红色字显示。用户在进入VB后不要使用中文标点符号。中、西文状态下标点号对照见下表所示。中、西状态下标点符号对照2.字母和数字形状相似L的小写字母“l”和数字“1”形式几乎相同、O的小写字母“o”与数字“0”也难以区,这在输入代码时要十分注意,避免单独作为变量名使用。3.对象名称(Name)属性写错在窗体上创建的每个控件都有默认的名称,用于在程序中唯一地标识该控件对象。系统为每个创建的对象提供了默认的对象名,例如,Text1、Text2、Command1、Label1等。用户可以将属性窗口的(名称)属性改为自己所指定的可读性好的名称,如txtInput、txtOutput、 cmdOk等。对初学者,由于程序较简单、控件对象使用较少,还是用默认的控件名较方便。当程序中的对象名写错时,系统显示“要求对象”的信息,并对出错的语句以黄色背景。用户可以在代码窗口的“对象列表”框检查该窗体所使用的对象。4.Name属性和Caption属性混淆Name属性的值用于在程序中唯一地标识该控件对象,在窗体上不可见;而Caption属性的值是在窗体上显示的内容。5.对象的属性名、方法名写错当程序中对象的属性名、方法名写错时,VB系统会显示“方法或数据成员未找到”的信息。在编写程序代码时,尽量使用自动列出成员功能,即当用户在输入控件对象名和句点后,系统自动列出该控件对象在运行模式下可用的属性和方法,用户按空格键或双击鼠标即可,这样既可减少输入也可防止此类错误出现。6.变量名写错用Dim声明的变量名,在后面的使用中表示同一变量而写错了变量名,VB编译时就认为是两个不同的变量。例如,下面程序段求1100的和,结果放在Sum变量中:Dim sum As Integer,i As IntegerSum=0For i =1 to 100Sum=Sun+iNext iPrint Sum显示的结果为100。原因是累加和表达式Sum=Sun+i中的右边的变量名Sum写成Sun。VB对变量声明有两种方式,可以用变量声明语句显式声明,也可以用隐式声明,即不声明直接使用。上述变量名的写错,系统为两个不同的变量各自分配内存单元,造成计算结果不正确。因此,为防止此类错误产生,必须对变量声明采用限制其为显式声明方式,也就是在通用声明段加Option Explicit语句。7.语句书写位置错在VB中,除了在“通用声明”段利用Dim等对变量声明语句外,其他任何语句都应在事件过程中,否则运行时会显示“无效外部过程”的信息。若要对模块级变量进行初始化工作,则一般放在Form Load()事件过程中。8.无意形成控件数组若要在窗体上创建多个命令按钮,有些读者会先创建一个命令按钮控件,然后利用对该控件进行复制、粘贴,这时系统显示:已经有一个控件为“Command1”。创建一个控件数组吗?的信息,若单击“是”按钮,则系统创建了名称为Command1的控件数组。若要对该控件的 Click事件过程编程,系统显示的框架是:Private Sub Command1_Click(Index As Integer)End SubIndex表示控件数组的下标。若非控件数组,Click事件过程的框架是:Private Sub Command1_Click()End Sub请注意直到学习实验 数组前,一律不使用控件数组。9.Print方法中定位问题定位通过Tab、Spc函数和最后的逗号、分号和无符号来控制。VB中通过Print方法中各参数的综合使用达到所需的结果,但初学者往往难以掌握。(1) Tab(n)与Spc(n)的区别Tab(n)从最左第1列开始算起定位于第n列,若当前打印位置已超过n列,则定位于下一行的第n列,这是常常定位不好出现的问题。在格式定位中,Tab用得最多。Spc(n)从前一打印位置起空n个空格。例如,下面程序段显示了Tab与Spc的区别,效果如图所示。Private Sub Commandl_Click()Print “1234567890”,Print Tab(1);”*“;Tab(2);”%“;spc(2);”$“End Sub(2) 紧凑格式”;“分号的使用紧凑格式”;“,即输出项之间无间隔。但对于数值型,输出项之间系统自动空一列,而由于数值系统自动加符号位,因此,大于零的数值,实际空两列。对于字符型之间无空格。例如,下面程序段,效果如图所示。Private Sub Command1_Click()Print 1;-2;3Print”1234“;”5678“Print”A“;”B“;”C“;”D“,”E“,”F“End Sub从该例应区分数值和字符在紧凑格式输出的差异。10.打开工程时找不到对应的文件一般,一个再简单的应用程序也应由一个工程.vbp文件和一个窗体.frm文件组成。工程文件记录该工程内的所有文件(窗体.frm文件、标准模块.bas文件、类模块.cls文件等)的名称和所存放在磁盘上的路径。若在上机结束后,把文件复制到U盘上保存,但又少复制了某个文件,下次打开工程时就会显示”文件未找到“。也有在VB环境外,利用Windows资源管理器或DOS命令将窗体文件等改名,而工程文件内记录的还是原来的文件名,这样也会造成打开工程时显示”文件未找到“。 解决此问题的方法:一是修改.vbp工程文件中的有关文件名;二是通过”工程“菜单的”添加窗体“中的”现存“选项,将改名后的窗体加入工程。1、VB的特点、运行环境、对象、属性、方法、事件各概念,尤其是方法和事件的区分。熟悉VB的IDE,VB开发应用程序的一般步骤。特点:GUI(集成开发环境)、OLE(对象的连接和嵌入)、OOP(面向对象);运行环境:Windows(VB5.0以上在32位操作系统)方法:对象可以执行的动作或行为;(主动性)事件:使某个对象进入活动状态的一种操作或动作。(被动性)例题:1、VB的使用目的是( )。A. 开发Windows应用程序 B.图象处理C.制作WAV文件 D.文字处理2、一个对象可以执行的动作和可被对象识别的动作分别称为( )。A.方法、事件 B.事件、方法 C.方法、属性 D.事件、属性3、一只白色的足球被踢进球门,则白色、足球、踢、进球门是( )。A. 属性、对象、方法、事件 B.属性、对象、事件、方法C.对象、属性、方法、事件 D.对象、属性、事件、方法2、熟练应用窗体、控件。掌握窗体的常用方法(Hide、Show、Print、Cls、Refresh、Move)、属性和事件(Load、Activate、Click)。Load事件、Unload事件、End语句常用控件:CommandButton(Default、Cancel、Enabled、Style、DisabledPicture、DownPicture)、Label(AutoSize)、TextBox(Alignment、MaxLength、PasswordChar、Multiline、ScrollBars注:Multiline=True)、OptionButton(Value)、ListBox(属性:listlistcountlistindexselected、方法:AddItem、RemoveItem、Clear)、ComboBox(P27)、HscrollBar、VscrollBar(min、Max、Value)、PictureBox(print方法)、Timer(运行时不可见、只有Timer事件、Interval)方法、属性、事件的掌握。容器控件:Form、Picture、Frame 特殊控件:菜单的使用(只响应Click事件)1、以下窗体名中哪些是非法的窗体名( )。对象名命名规则:以字母或汉字开头,后面可以是字母、数字、下划线、汉字。(变量名类似)A._aform B.3frm C.f_1 D.frm 5 E.f_1*2、一个名称为myfrm,标题属性为form1的窗体,它的单击事件名应为( )。A. myfrm_click B.form1_clickC.form_click D.me_click3、执行下面语句:print “5*20” 的结果是( )。A.“5*20” B.出现错误信息 C.5*20 D.1004、下列语句代码哪一些可正常执行(正常执行是指系统不给出出错提示);A、Print 32765 + 3 B、Print 5 + 7 = 14C、Print 256 / 128 D、Print “14” + 12 E、Print “14” & 125、以下使用方法的代码中,正确的是( )。A、Label1.Setfocus B、Form1.ClearC、Text1.SetFocus D、Combo1.Cls6、在程序中可以通过复选框和单选按钮的( )属性值来判断他们的当前状态。A. Caption B.Value C.Checked D.Selected7、将复选框的Value属性设为“2”,其效果与把它的Enabled属性设为“False”有何异同?若把一个控件的Visible属性设为“False”,意味着什么?8、当用户单击命令按钮时,( )属性可以使得命令按钮对激发事件无效。A. Name B.Enabled C.Default D.Cancel9、在文本框Text1和Text2中分别输入35与48,变量S与X分别为字符型与整型,以下赋值语句的执行结果是什么?s = Text1.Text + Text2.Text x = Text1.Text + Text2.Texts = Text1.Text & Text2.Text x = Text1.Text & Text2.Texts = Val(Text1.Text) + Text2.Textx = Val(Text1.Text) + Text2.Texts = Val(Text1.Text) & Text2.Textx = Val(Text1.Text) & Text2.Text1、下列模块中哪个是一个工程必须具备的( )。A. 窗体模块 B.标准模块 C.类模块 D.用户自定义模块2 语言基础一、 书写规范:“:”间隔符号、续行符号“ _”、注释符号“”二、 数据:数据类型、关键字、存储单位、初值。数值常量 &O (8) &H(16)字符常量 “” 命名规则 局部 Dim/Static常量 逻辑常量 变量 作用域 窗体/模块 Dim/Private日期常量 #月/日/年# 全局(共有)Public例如:1、在窗体或标准模块的通用声明处可以用_语句定义变量。A. Dim、Redim B. Dim、StaticC. Dim、Private、Public D. Dim、Private、Static注意:在窗体和类模块中,不能将定长字符串、符号常量、数组用Public来定义。隐式说明的六个符号:%、&、!、#、$例:m1&=5*x%3+x% mod y% 和 m1&=“5*x%3+x% mod y%”的正确性Option Explicit 语句功能:强制变量的声明例题:1、下列字符串中( )是合法变量A.char_1,student,no,a1234 B.exp,123a,x*yC.xy,xy D.end,lbcx四、 VB公共函数算术:Sqr、Log、Exp、Abs、Rnd、Sin、Cos字符:Len、left、Right、Mid、Ucase、Lcase、Ltrim、Rtrim、Trim、Instr、String、Space转换:Str、Val、Chr、Asc、Int、Cint日期:Date、Time、Now、Year、Month、Day、Week、Day例如:1、设s1,s2均为字符串变量,s1=”Visual Basic”,s2=”b”,则下面关系表达式中结果为True的是( )。A.Mid(s1,8,1)s2 B.Len(s1)2*Instr(s1,”l”)C.Chr(66) & Right(s1,4)=”Basic”D.Instr(Left(s1,6),”a”)+60Asc(Ucase(s2)2、求出下列表达式的运算结果;A.Mid(“visual basic”, 1, 12) = Right(“Programming language visual basic”, 12)B. “ABCRG” = “abcde” C. Int(134.69) = CInt(134.69)D. 78.9 / 32.77 = 97.5 / 43.87 And -45.4 -4.98E. Str(32.345) = CStr(32.345)3、VB只有求自然对数的函数Log(x),如果计算式中需要使用常用对数或以2为底的对数,应如何处理?(使用换底公式)四、 VB公共函数算术:Sqr、Log、Exp、Abs、Rnd、Sin、Cos字符:Len、left、Right、Mid、Ucase、Lcase、Ltrim、Rtrim、Trim、Instr、String、Space转换:Str、Val、Chr、Asc、Int、Cint日期:Date、Time、Now、Year、Month、Day、Week、Day例如:1、设s1,s2均为字符串变量,s1=”Visual Basic”,s2=”b”,则下面关系表达式中结果为True的是( )。A.Mid(s1,8,1)s2 B.Len(s1)2*Instr(s1,”l”)C.Chr(66) & Right(s1,4)=”Basic”D.Instr(Left(s1,6),”a”)+60Asc(Ucase(s2)2、求出下列表达式的运算结果;A.Mid(“visual basic”, 1, 12) = Right(“Programming language visual basic”, 12)B. “ABCRG” = “abcde” C. Int(134.69) = CInt(134.69)D. 78.9 / 32.77 = 97.5 / 43.87 And -45.4 -4.98E. Str(32.345) = CStr(32.345)3、VB只有求自然对数的函数Log(x),如果计算式中需要使用常用对数或以2为底的对数,应如何处理?(使用换底公式)例如:1、if 语句:Private Sub Form_Click()Dim x As Integer, y As IntegerDim z As Singlex = 0.2y = 1If (x = 1) Thenz = Log(x)ElseIf x = 0 And x 1 And y = 0 Thenz = 2 * x - yElsez = Exp(x + y)End IfPrint “z=” + Str(z)End Sub结果: z=-12、Select Case语句Private Sub Form_Click()Dim ch As String, i As Integerch = “c”Select Case chCase “A”, “a”i = 1Case “B”, “b”i = 2Case “C”, “c”i = 3Case “D”, “d”i = 4Case Elsei = 5End SelectPrint “运行结果” + Ucase(ch) + Str(i)End Sub结果:运行结果C3 循环结构1、For-Next (循环次数的计算)特例:例如:有循环:for I=n1 to n2 step n3 下列哪些语句会影响循环次数( )A. n1=n1+IB. n3=2*n3C. n2=n2+n3D. I=I+n32、Do-Loop (While,Until)例如:运行下面的程序,单击窗体后在窗体上的内容是( );若将程序中的A语句与B语句的位置互换,再次执行程序,单击窗体后在窗体上显示的内容是( )Private Sub Form_Click()Dim a As Integer, b As Integera = 0: b = 0Do While a = 8a = a + 2 A语句b = b + a * a B语句LoopPrint a, bEnd Sub例如:窗体上显示的结果:Private Sub Form_Click()Dim p As Integer, i As Integer, n As Integerp = 2: n = 20For i = 1 To n Step pp = p + 2n = n - 3i = i + 1If p = 10 Then Exit ForNext iPrint i, p, nEnd Sub一、 InputBox函数MsgBox函数 (注意参数含义及顺序)x=InputBox(_,_,_)写出显示下图信息框的MsgBox函数5、数组1、数组的上、下界:Ubound()、Lbound() 2、数组的大小的计算、数组的结构:(二维数组:以列存放) 3、Erase语句:重新初始化静态数组的元素、或释放动态数组的存储空间。 4、For Each Next结构语句 5、用Array函数给数组赋值(只能给Variant类型的变量赋值) 6、控件数组(load/Unload Object(Index)动态数组 (Redim语句)数组分类:固定大小数组 Option Base语句功能Preserve语句功能例如:n数组重点算法:n一数组,求其中最大和最小;n对一数组排序(选择法、冒泡法、直接排序法)n在一数组中查找指定的数(顺序、二分查找);n删除一数组中重复的数2、在窗体模块的通用声明处用下面的语句声明变量、数组、正确语句有( )个。A.Public a(5) as integer B.Public n as integerC.Public st as string*10 D.Private b() as integer3、下列语句中的( )语句可以用来正确地声明一个动态数组。A.Private A(n) as integer B.Dim A() as integerC.Dim A(,) as integer D.Dim a(1 to n)4、下列关于数组的说法中正确的是( )。A.在过程中,不能用private语句定义数组B.利用Redim语句重新定维时,不得改变已经说明过的数组的数据类型。C.数组重新定维后,原有的数据元素内容将不予保留5、过程的形参为数组时,以下定义语句中正确的是( )。A.private sub sort(a() as integer)B.private sub sort(a(10) as integer)C.private sub sort(a(,) as integer)D.private sub sort(byval a() as integer)6、某过程的说明语句中,正确的数组说明语句是_。Const N As Integer=4 : Dim L As Integer Dim x(L) As Integer Dim A(K) As IntegerConst K As Integer=3 Dim B(N) As Integer Dim Y(2000 To 2008) As IntegerA. B. C. D.7、文件管理控件文件处理 顺序文件和随机文件的打开(open)语句,EOF函数,读写语句。do while not eof(1) do until eof(1)print #1, write #1,input #1,a,b,c line input #1,s input(#1,100)get #1,a put #1,”af”打开方式:顺序文件Open “文件路径+文件名(包括文件后缀)” For Output As #1-511Open “文件路径+文件名(包括文件后缀)” For Append As #1-511Open “文件路径+文件名(包括文件后缀)”For Input As #1-511随机文件:Open “文件路径+文件名(包括文件后缀)”For Random As #1-511二进制文件:Open “文件路径+文件名(包括文件后缀)”For Binary As #1-511Open语句打开文件的注意:1.如果以Output、Append、Random、Binary模式打开一个不存在的文件时,VB自动创建一个相应文件;2.在Input Random Binary模式下,可以用不同的文件号打开同一文件,但Output Append方式不可以;3.所有当前使用的文件号必须是唯一的;4.如果以Output模式打开一个已存在的文件,即使没有进行写操作原来数据也将被覆盖。Close语句注意:(Reset)1.直接使用 Close语句(缺省文件号),则所有用Open语句打开的活动文件都被关闭;2.当程序结束时,所有打开的文件自动被关闭。Lock和Unlock语句注意:1.对于二进制文件,Lock和Unlock的是字节范围;2.对于随机文件,Lock和Unlock的是记录范围;3.对于顺序文件,Lock和Unlock的是整个文件,即使指明范围也不起作用;4.缺省情况下Lock和Unlock的范围是整个文件;5.Lock和Unlock总是成对使用。特别注意:在关闭文件或结束程序之前,必须用Unlock语句对先前锁定的文件解锁,否则会产生难以预料的错误。1.要对顺序文件进行写操作,下列打开文件语句中正确的是( )。Open “file1.txt” for output as #1Open “file1.txt” for input as #1Open “file1.txt” for Random as #1Open “file1.txt” for binary as #12.在VB中文件访问的类型有( )。A.顺序、随机、二进制 B.顺序、随机、字符A. 顺序、十六进制、随机 D.顺序、记录、字符例如:将文件Data1中的无序数据和Data2中的有序数据插入到Data3中,要求:Data3中的数据必须也是排好序。请填写空白处以实现该题功能。Private Sub Form_Click()Dim a() As Integer, b() As IntegerDim k As Integer, i As IntegerOpen “e:data1.txt” For Input As #2Open “e:data2.txt” For Input As #3Do While Not EOF(2)k = k + 1ReDim Preserve a(k)Input #2, a(k)Loop_k=0_Do While Not EOF(3)k = k + 1ReDim Preserve b(k)Input #3, b(k)LoopCall insert(a, b)Open “e:data3.txt” For Output As #4_k=ubound(b)_For i = 1 To kPrint #4, b(i)Next iCloseEnd SubPrivate Sub insert(a() As Integer, b() As Integer)Dim m As Integer, i As IntegerDim n As Integer, j As Integerm = UBound(a): n = UBound(b)_redim preserve b(m+n)_i = 0Do While i mi = i + 1j = nDo While j = 1 And a(i) b(j)If a(i) b(j) Then_b(j+1)=b(j)_j = j - 1ElseExit DoEnd IfLoop_b(j+1)=a(i)_n = n + 1LoopEnd Sub注意:F按值传递参数形参和实参的类型不一定要统一,VB自动进行数据的转换。例如:Private Sub Form_Click()Dim a As String : a = 2Call sub1(a)Print aEnd SubPrivate Sub sub1(ByVal b As Integer)b = b + 1 : Print bEnd SubF按地址传递参数当实参是变量时:如果形参规定了类型,则实参必须跟形参保持一致如果形参没有规定类型,则VB按要求进行数据类型转换当实参是常量或表达式时:VB自动用“按值传递”的方式进行处理,如果数据类型不统一,VB自动进行数据转换例如:1、在应用程序中用“Private function Fun(X as integer,Y as single)”定义了函数Fun。调用函数Fun的过程中的变量I、J均为Integer型,能正确引用函数Fun的是( )A.Fun(I,J) B.Call Fun(I,3.56) C.Fun(3.14,234) D.Fun(“245”,“231.5”)2.程序中的不同过程之间,不能通过_进行数据传递。全局变量 窗体或模块级变量 形参与实参结合 静态变量A. B. C. D.二级考试必考题型:(课后习题)传值 传地址 Static变量 同名变量 递归过程例如:1、以下有关变量作用域的说法中,错误的是( )A. 只有在标准模块中用public语句说明的变量才是全局变量B. 在过程中不能使用public语句说明全局变量C. 在标准模块的通用声明处可用private语句说明模块级变量D. 在窗体的通用声明处可用private语句说明窗体级变量2.一个名为frm1的窗体,在窗体通用声明处和过程sub1中分别定义:public k as integer、dim k as integer如何在sub1中访问全局变量k( )A.frm1.k B.form.k C.form1.k D.k例:阅读程序,给出输出结果:(1)字符串处理(数组参数)Option Base 1Private Sub Form_Click()Dim st As String, char As StringDim data() As String, i As Integer, j As Integerst = “10281018123811181038”For i = 1 To Len(st)If Mid(st, i, 1) “8” Thenchar = char & Mid(st, i, 1)Elsej = j + 1ReDim Preserve data(j)data(j) = charchar = “”End IfNext iCall conver(data, char)Print charEnd SubPrivate Sub conver(a() As String, ch As String)Dim i As Integer, j As IntegerDim n As Integer, dec As IntegerFor i = 1 To UBound(a)n = Len(a(i)For j = 1 To ndec = dec + Val(Mid(a(i), j, 1) * 8 (n - j)Next jch = ch & Chr(dec)dec = 0Next iEnd Sub(2)static变量Private Sub Command1_Click()Dim n As Integer, i As Integern = 2For i = 9 To 1 Step -1Call sub2(i, n)Print i, nNext iEnd SubPrivate Sub sub2(x As Integer, y As Integer)Static n As IntegerDim i As IntegerFor i = 3 To 1 Step -1n = n + xx = x - 1Next iy = y + nEnd Sub(3) 递归Private Sub Command1_Click()Dim a As Integera = 2Call sub1(a)End SubPrivate Sub sub1(x As Integer)x = x * 2 + 1If x 10 ThenCall sub1(x)End Ifx = x * 2 + 1Print xEnd Sub(4)递归Private Sub test(x As Integer)Dim i As IntegerIf x 0 ThenCall test(x - 1)For i = 1 To xPrint x;Next iPrintEnd IfEnd SubPrivate Sub Form_Click()test 3End Sub(5)同名变量Dim y As IntegerPrivate Sub Form_Click()Dim x As Integer,y as integerx=1 : y=1Print “x1=”;x, “y1=”;yTestPrint “x4=”;x, “y4=”;yEnd SubPrivate Sub Test()Dim x As IntegerPrint “x2=”;x, “y2=”;yx=2 : y

温馨提示

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

评论

0/150

提交评论