《VB程序设计》综合复习资料.docx
VB程序设计综合复习资料一、填空题1 .在VB中工程文件的扩展名是Vbp,窗体文件的扩展名是frm,标准模块文件的扩展名是bas。2 . 一个控件在窗体的位置由Left和top属性决定,其大小由height和width属性决定。3 .变量的声明分为两种方法隐式声明和 显示声明。4 .使用print方法可在窗体中进行文本的输出,用circle方法可画圆,用line方法可画直线。5 .类是具有相同性质的对象的 集合6 .利用对象的属性setfocus可获得焦点,对于一个对象,惟独其visibl属e性和enabled属性为true,才干接受焦点。7 .文件按存取方式及其组成结构可分为顺序文件、随机文件和二进制_文件。8 .在VB中,用option base语句设定数组的下界,用ubound_和Ibound语句分别返回数组的上、下界。9 .在窗体上画一个名称为“Commandl"、标题为计“算”的命令按钮,再画7个标签,其中5个标签组成名称为Label 1的控件数组;名称为Label2的标签用于显示计算结果,其Caption属性的初始值为空;标签Label3的标题为计“算结果”o运行程序时会自动生成5个随机数,分别显示在标签控件数组的各个标签中。单击计“算”按钮,则将标签数组各元素的值累加,然后计算结果显示在Label2中。请填空。Private Sub Command 1 _Click()Sum = 0For i=() To 4Sum=Sum+label l(i).capt i onNext ilabel2.captiiJB_=SumEnd Sub10 .在窗体上画两个名称分别为Commandl和Command2、标题分别为初“始化”和求“和”的命令按钮。程序运行后,如果单击初被台化”命令按钮,则对数组a的各元素赋值;如果单击求杯口”命令按钮,则求出数组a的各元素之和, 并在文本框中显示出来。请填空。Option Base 1Dim a(3,2) As IntegerPrivate Sub Commandl_Click() “初始化”命令按钮For i=l To 3Forj=l To 2= i+iNext jNext iEnd SubPrivate Sub Command2_Click() “求和”命令按钮Forj=l To 3For i=l To 2s=s+_a(jJJ_Next iNext j不及格Elself x < 70 Then及格Elself x < 80 Then中等Elself x< 90 Then良好Else优秀End IfEnd Sub7.实现二维数组(矩阵)转置。7.参考代码如下:Option Base 1Private Sub Form_Load()Const N = 41常量N决定二维数组大小Dim a(N, N) As IntegerDim i, j, Temp As IntegerShow'数组初始化For i = 1 To N 1 For循环i从1变化到NForj = 1 ToNa(i,j) = i* 10+jNext jNext i输出原始数组转置前的数组:For i = 1 To N下oi循环i从1变化到NForj = 1 To NPrint a(ij); Next JPrintNext i'数组转置'For循环i从1变化到N咬换'For循环i从1变化到NFor i = 1 To NFor j = 1 To iTemp = a(i, j) a(i, j) = a(j, i) a(j, i)二 TempNext jNext i'输出转置后的数组 转置后的数组:For i = 1 To NForj = 1 ToNPrint a(i, j);Next jPrintNext iEnd Sub8.实现二进制方式文件的复制。8.参考代码如下:Private Sub Command 1 _Click()Dim ifl As Integer, if2 As IntegerDim sfl As String, sf2 As StringDim buffer() As Byte 使用动态数组请输入源文件名:源文件 请输入目标文件名:目标文件ifl = FreeFileOpen sfl For Binary As i将丁 1 开源文件if2 = FreeFileOpen sf2 For Binary As 创i健2月标文件ReDim buff讯 1 To LOF(ifl 分)配讷 存曲源文件Put #if2, buffer 目标文件Close '关闭所有打开的文件完成复制。End Sub设计如图所示界面:各按钮功能如下,请给出以下四个按钮的事件过程代码。源程序:private sub command l_click()if list!.listcount = 0 then列表无书exit subend ifselect case listl.listindexcase 0已是第一本case 1未选中书名case elsek = listl.listindexa = listl.list(k 1)listl.list(k _ 1) = listl.listindexlistl.list(k)= alistl.selected(k - 1) = true '光标选择 list1的第 k-1 项end selectend subprivate sub command2_click()if listl.listcount = 0 then列表无书exit subend ifselect case listl.listindexcase listl.listcount - 1已是最后一本case 1未选中书名case elsek 二 listl.listindexa = listl.list(k + 1)listl.list(k + 1) = listl .listindexlistl.list(k)= alistl.selected(k + 1) = trueend selectend subprivate sub command3_click()if listl.listcount = 0 then列表无书exit subend ifif listl.listindex = 1 then未选中书名elselistl.removeitem listl.listindexend ifend subprivate sub command4_click ()请输入入榜书名elselistl.additem trim(textl.text)删除 textl 中的先后空格text 1.setfocustextl.selstart = Otextl.sei length = len(textl.text),光标移到移到 textlend ifend subtext2.text = list 1.listindex + 1 end sub设计一个进度条,用来指示程序结束的时间进度,界面如下:源程序:private sub form_load() progressbar 1 .value = 0 timer 1. interval = 1000 timer 1.enabled = true end subprivate sub timer l_timer()if progressbar Lvalue < 100 thenprogressbar 1 .value = progressbar 1 .value + 10elseendend ifend sub统计文本框中英文单词的个数,设计界面参考如下Ttxtl统计题目一:编写一程序找出并显示19999之间的全部同构数。所谓同构数是指这样的整数,它恰好浮现在其平 方数的右边:如1, 25等。源程序:private sub command 1 _click()dim n, a, b, c, d as integerdim e as longfor n = 1 to 9999e = n A 2a = e mod 10b = e mod 100c = e mod 100()d = e mod 10000ifa = norb = norc = nord = n thentext 1 .text 二 text 1.text & str(n)end ifnext nend subTextl.Text= sEnd Sub11 .语句For j = 3 To 20 Ste使p循3环体执彳亍了612 .若要将窗体Forml隐藏起来,则可通过执行代码_ Form 1.Hide来实现。13 .要将焦点定位到命令按钮Commandl上,需要使用代码_ Command】.SetFocus。14 .为了使一个Picture控件能自动根据装入的图片调整大小,应设置该控件的_AutoSize 属性为True。15 .要使装入到列表框中的数据项能自动按字母顺序排序,应设置该控件的Sorted属性为Jure。16 .在Visual Basi中声明静态变量的关键字是 Static o17,表达式的值为0o _18 .窗体上放置了若干个文本框和命令按钮,当窗体装入后,要将焦点自动定位到文本框Textl上,则在设计时需 要将 Textl控件的 Tablndex 属性设置为 0=。19 .要使一个Picture控件不能自动根据装入的图片调整大小,应设置该控件的AutoSize属性为_Fais。/2().对于正在使用的动态数组ArrayaQ要增加一个单元,但不能破坏数组内的数据,则必须在语句ReDim中包括 preserve e21 .函数Abs(x)的功能是求x的绝对值。22 .表达式3/6*5的值是_2.523 .表达式的值为f_24 . VB中使用注释有2种方法,即_rem和25 . VB中的数据以四种形式存储:常量、变量、数组和记录。26 .在标签控件中通过编程使文字换行用的代码是 chr(10)o27 .要使鼠标停留在按钮上显示特殊的鼠标形状,应设置的属性值是mousepointe r。28 .设某列表框共有10项,按题目要求补齐程序,完成相应的功能。29 )按下命令按钮Command 1时将列表框第8项的内容显示在窗体上:Private Sub Command 1 _Click() List, selecte d=True Print Listl. _te_xtEnd Sub30 )单击列表框某一项时立即将该项打印在窗体上:Private Sub Listl_Click() Print listl End Sub(3)按下命令按钮Commandl时在窗体上删除第1、3、5、7、9项:Private Sub Command l_Click() For 1=1 To 5Listl._removeitem 2*i=_ 1Next IEnd Sub31 )在列表框的每一项之后插入一个新的项:Private Sub Command l_Click()For 1=1 to 10X=InputBox(请“输入插入的第”& I &项“内容”)Listl .AdditemNext IEnd Sub29.设在界面上放置了一个滚动条Hscrolll和一个标签控件Label 1,要使每次单击滚动条两端箭头时,或者单击滚动 条滑块与两端箭头之间的空白区域时,标签内容能够反映滚动条的值,补齐以下代码。Private Sub Hscrolll._ cb ange()Label 1 .Caption = Hscroll 1.v_a_l_ueEnd Sub要使拖动滚动条滑块时标签内容能够反映滚动条的值,补齐以下代码。Private Sub Hscrolll. s c rol()Label 1.Caption = Hscroll 1.v_a_LueEnd Sub生成消息框的命令是Msgbox、生成输入框的命令是Inputbox。二、选择题1 .以下叙述中错误的是(D)A.事件过程是响应特定事件的一段程序B.不同的对象可以具有相同名称的方法C.对象的方法是执行指定操作的过程D.对象事件的名称可以由编程者指定2 .以下合法的 Visual Basi标c识符是(A ) A . ForLoop B . Const C . 9abc D . a#x3 .当一个复选框被选中时,它的Value属性的值是(C )A. 3 B. 2 C. 1 D. 04 .表达式 的值是(B )A. 0 B . 2 C. 4 D. 65 .设 x=4,y=8,z=7 表达式 x<y And (Not y>z) Or z<的x值是(D ) A . 1 B . -1 C . True D . False6 .假定有以下程序段:For i= 1 to 3Forj=5 to 1 St dpPrint i*jNext j,i则语句Printi*的j执行次数是(A )A. 15 B. 16 C. 17 D. 187 .以下叙述中错误的是(D )A.如果过程被定义为Static类型,则该过程中的局部变量都是Static类型B.Sub过程中不能嵌套定义Sub过程C. Sub过程中可以嵌套调用Sub过程D.事件过程可以像通用过程一样由用户定义过程名8 .从键盘上输入两个字符串,分别保存在变量strl、str2中。确定第二个字符串在第一个字符串中起始位置的函数是(D ) A , Left B . Mid C . String D . Instr9 .以下能够触发文本框Change事件的操作是(D )A .文本框失去焦点B .文本框获得焦点C .设置文本框的焦点D.改变文本框的内容10 .假定有一个菜单项,名为Menuitem,为了在运行时使该菜单项失效(变灰),应使用的语句为(A )A . Menuitem.Enabled=False B . MenuItem.Enabled=TrueC . Menuitem.Visible=True D . Menuitem.Visible=False11 .为了使用通用对话框进行打开文件的操作,应将通用对话框的Action属性设定为(B )A. 0 B. 1 C. 2 D. 312 .为了检测到用户按下键盘上的所有键,应该使用的键盘事件为(C )、A . KeyPress B . MouseDown C . KeyDown D . MouseUp13 .用于从内存删除窗体的命令是(C) A . Move B . Hide C . Unload D . Delete14 .用于设置文件列表框控件显示文件类型的属性是(C) A . Filter B . Path C . Partern D . FileName15 .用于返回窗体可用区域宽度的属性是(A )A. ScaleWidth B. ScaleLeft C. ScaleHeight D. ScaleTop 三、读程序题1.分析以下程序,写出运行结果。Private Sub Form_Click()score = Int(Rnd * 10) + 80Select Case scoreCase 15 < 60Case 60 To 69Case 70 To 79Case 80 To 89Case ElseEnd Select Print A$ End Sub1、结果如下:B2 .读下面的程序,分析其功能,写出运行结果。在窗体上有一个命令按钮,名称为Commandl。然后编写如下程序:Private Sub Commandl _Click()For I = 1 To 4For J = 0 To IPr血 Chr$(65 + I);Next J Print Next IEnd Sub程序运行后,如果单击命令按钮,则在窗体上显示的内容是什么?2、结果如下:BBCCCDDDDEEEEE3 .阅读下面的程序,写出执行结果。Private Sub Form_load()Form 1. showd = 0For a = 1 To 2For b = 1 To aFor c = b To 5 d = d + 1Next c Next bNext aPrint dEnd Sub3、结果如下:144 .阅读下面的程序,分析并写出其功能。Sub insert(a() As Single,ByVai x As Single)Dim m as integer,n as integer n=lDo While n<20 And x>a(n) n=n+lLoopFor m=20-l To n Stepl a(m+l)=a(m)Next m a(n)=xEnd Sub4、功能如下:在20个由小到大罗列的数据中插入一个数,插入数据后的数据仍按由小到大的顺序罗列。5 .分析以下程序,写出运行结果。Sub selectPrint()Dim a as IntegerDim b as IntegerDim c as Integera=2:b=5:c=2If(a>=b)and(a>=c) or (b> Jhen Print a a=a+2ElsePrint bEndlfPrint a;b;cEnd Sub5、结果如下:24526 .阅读下面的程序,写出执行结果。Sub selectPrint()Dim a as IntegerDim b as IntegerDim c as Integer a=3:b=3:c=2If(a>=b)and(a>c)Then Print aPrint a,b,cEnd Sub6、结果如下:37 3 2四、简答题1 .在程序设计中为什么尽量不用GoTo语句? 1、主要是为了结构化。2 .框架的作用是什么? 2、框架主要是用作容器,可以实现多组单选按钮,并且可以美化界面。3 .滚动条的change事件和scroll事件有什么不同? 3、主要是用鼠标拖动滑块时对Value属性的影响不同。4 .颜色函数主要有哪些? 4、颜色函数主要有:RGB、QBColoro3 .如何为一个菜单项设置热键和快捷键? 3、为一个菜单项设置热键时需要在相应字符前面加& ,设置快捷键需要在 菜单编辑器中选择。4 .表达式2>3人血4<=5 04>4的值是什么? 4、Falseo8 .为了防止文本框中的信息运行后被用户修改,应将什么属性设置为什么值? 8、应将Locked属性设为True。9 .如何在框架中建立控件? 9、先建立框架,然后再在其中建立控件。10 .逐语句和逐过程有什么区别? 10、逐语句和逐过程的区别:前者进入过程内部,而后者不进入过程内部。 五、编程题(界面自行设计)1 .编程求任意两个正整数(利用两个文本框输入)的最大公约数,并利用标签输出结果。1、参考程序如下:Private Sub Command 1 _Click()Dim m, n, r As Integerm 二 Vai ( Text 1 .Text)n = Vai ( Text2.Text)If m < 0 Or n < 0 Then输入数据有错!Elser = m Mod nDo While r <> 0m = nn = rr = m Mod nLoop最大公约数为:End IfEnd Sub2 .编程实现对n个整数按由小到大的顺序排序。2、参考程序如下:Private Sub sort(arraya() As Integer, n As Integer)Dim p As Integer, i As Integer, j As Integer, temp As IntegerFor i = 1 To n - 1P = iFor j = i + 1 To nIf arraya(p) > arraya(j) Then p = jNext jIf p <> i Then temp = arraya(i) : arraya(i) = arraya(p) : arraya(p) = temp Next iEnd Sub3 .输入一年号,判断它是否是闰年。界面如下图所示,包括两个标签、一个文本框和一个命令按钮。提示:如果此 年号能被400整除或者不能被400除尽,也不能被100除尽,但能被4整除,则它是闰年;否则,不是闰年。3、参考程序如下:Private Sub Command 1 _Click()Dim year, x As Integer year = Val(Textl.Text)If year Mod 400 = 0 Then是闰年ElseIf year Mod 4 = 0 And year Mod 100 <> 0 Then是闰年Else不是闺年End IfEnd IfEnd Sub4 .求一元二次方程ax2+bx+c=0的根(包括实根和复根)。4、参考程序如下:Private Sub Command 1 _Click()Dim a, b, c, delt, realpart, imagpart As Singlea = Val(Textl.Text): b = Val(Text2.Text): c = Val(Text3.Text): delt = b*b-4*a*cIf a = 0 Then是一元一次方程If b<>0 thenElseIf c=0 then有无穷根Else无根End ifEnd ifElseIf delt = 0 Then有两个相等的实根Elself delt > 0 Then有两个不等的实根Else有两个共粗复根realpart = -b / (2 * a)imagpart = Sqr(-delt) / (2 * a)End IfEnd IfEnd Sub5 .随机输入10个100以内的整型数,计算其和及平均值。6 .参考代码如下:Private Sub Form_Click()Dim a( l 0) As Integer, i As IntegerDim sum As Integer, ave As Integersum = 0For i = 1 To 10a(i) = Int(Rnd * 101)sum = sum + a(i)Next iave = sum / 10Print sum, aveEnd Sub7 .输入某学生成绩(百分制),若是100N成绩290输出优秀;若是90成绩N80输出良好;若是80 成绩N 70输出中 等;若是70成绩次0输出及格;若是60成绩却,输出不及格;若是其他数则输出error信息。6.参考代码如下:Private Sub Command 1 _Click()Dim x As Singlex = Val(Textl.Text)Ifx 100 Or x 0 ThenElself x 60 Then