2013全国计算机等级考试二级VB语言上机题库(共187页).doc
精选优质文档-倾情为你奉上2013年国家二级VB题库*第01套 简单应用题(1)在考生文件夹下有一个工程文件sjt3.vbp,窗体上已经有一个标签Label1,请添加一个单选按钮数组,名称为Op1,含三个单选按钮,它们的Index属性分别为0、1、2,标题依次为"飞机"、"火车"、"汽车",再添加一个名称为Text1的文本框。窗体文件中已经给出了Op1的Click事件过程,但不完整,要求去掉程序中的注释符,把程序中的?改为正确的内容,使得在程序运行时单击"飞机"或"火车"单选按钮时,在Text1中显示"我坐飞机去"或"我坐火车去",单击"汽车"单选按钮时,在Text1中显示"我开汽车去",如图所示。 注意:不能修改程序中的其他部分。最后将修改后的文件按原文件名存盘。 Private Sub Op1_Click(Index As Integer) Dim a As String, b As String, c As String a = "我坐" b = "我开"' Select Case ? * Index * Case 0 Text1.Text = a + Me.Op1(0).Caption + "去" Case 1' Text1.Text = ? + Me.Op1(1).Caption + "去" * a * Case 2 Text1.Text = b + Me.Op1(2).Caption + "去" End SelectEnd Sub(2)在考生文件夹下有一个工程文件sjt4.vbp,Form1窗体中有一个文本框,名称为Text1;请在窗体上添加两个框架控件,名称分别为F1、F2,标题分别为"性别"、"身份";在F1中添加两个单选按钮控件Op1、Op2,标题分别为"男"、"女";在F2中添加两个单选按钮控件Op3、Op4,标题分别为"学生"、"教师";再添加一个命令按钮,名称为C1,标题为"确定"。如图所示。请编写适当的事件过程,使得在运行时,在F1、F2中各选一个单选按钮,然后单击"确定"按钮,就可以按照下表把结果显示在文本框中。 性别 身份 在文本框中显示的内容 男 学生 我是男学生 男 教师 我是男教师 女 学生 我是女学生 女 教师 我是女教师 最后把修改后的文件以原来的文件名存盘。 注意:考生不得修改窗体文件中已经存在的程序和Text1的属性,在结束程序运行之前,必须进行能够产生上表中一个结果的操作。必须用窗体右上角的关闭按钮结束程序,否则无成绩。 * 请考生编写程序 *If op1 and op3 then Text1.Text=”我是男学生”If op1 and op4 then Text1.Text=”我是男教师”If op2 and op3 then Text1.Text=”我是女学生”If op2 and op4 then Text1.Text=”我是女教师”*第01套 综合应用题以下数列:1,1,2,3,5,8,13,21,的规律是从第3个数开始,每个数都是其前面两个数之和。 在考生文件夹下有一个工程文件sjt5.vbp。窗体中已经给出了所有控件,如图所示。请编写适当的事件过程完成如下功能:选中一个单选按钮后,单击"计算"按钮,则计算出上述数列的第n项的值,并在文本框中显示,n是选中的单选按钮后面的数值。(提示:因计算结果较大,应使用长整型变量。) 注意:不能修改已经给出的程序和已有的控件的属性;在结束程序运行之前,必须选中一个单选按钮,并单击"计算"按钮获得一个结果;必须使用窗体右上角的关闭按钮结束程序,否则无成绩。最后把修改后的文件按原文件名存盘。Private Sub Command1_Click() * 请考生编写程序 *Dim a(35) As LongIf op1(0) then n=30If op1(1) then n=33If op1(2) then n=35 a(1) = 1 a(2) = 1 For i = 3 To n a(i) = a(i - 1) + a(i - 2) Next Text1.Text = a(n)End Sub*第02套 简单应用题(1)在考生文件夹下有一个工程文件sjt3.vbp,窗体中有两个图片框,名称分别为P1、P2,其中的图片内容分别是一架航天飞机和一朵云彩,一个命令按钮,名称为C1,标题为"发射",还有一个计时器,名称为Timer1。并给出了两个事件过程,但并不完整,要求:设置Timer1的属性,使其在初始状态下不计时;设置Timer1的属性,使其每隔0.1秒调用Timer事件过程一次。去掉程序中的注释符,把程序中的?改为正确的内容,使得在运行时单击"发射"按钮,则航天飞机每隔0.1秒向上移动一次,当到达P2的下方时停止移动,如图所示。注意:不能修改程序中的其他部分。最后把修改后的文件按原文件名存盘。Private Sub C1_Click()'Timer1.Enabled = ? * True *End SubPrivate Sub Timer1_Timer()Static a%a = a =+1'If P1.Top > P2.Top P2.? Then * Height *P1.Move P1.Left, P1.Top - 5 - a, P1.Width, P1.HeightElse'Timer1.Enabled = ? * False *End IfEnd Sub(2)在考生文件夹下有一个工程文件sjt4.vbp,运行情况如图所示。程序的功能是计算下列表达式的值: 其中的N和x的值通过键盘分别输入到文本框Text1、Text2中。之后如果单击标题为"计算"、名称为Command1的命令按钮,则计算表达式的值z,并将计算结果显示在名称为Label1的标签中。 在给出的窗体文件中已经添加了全部控件和程序,但程序不完整。要求去掉程序中的注释符,把程序中的?改为正确的内容。 注意:考生不得修改窗体文件中已经存在的程序。程序中不得使用运算符,而应使用函数xn进行幂运算。程序至少运行一次,按照下图输入数据,使x=10,N=5,单击"计算"按钮,计算z的值,并将结果显示在标签Label1中,否则没有成绩。最后,程序按原文件名存盘。Private Function xn(a As Single, m As Integer)Dim i As Integertmp = 1For i = 1 To m'tmp = ? * tmp*a *Next'xn = ? * tmp *End FunctionPrivate Sub Command1_Click()Dim n As IntegerDim i As IntegerDim t As SingleDim s, x As Singlen = Val(Text1.Text)x = Val(Text2.Text)z = 0For i = 2 To nt = x + i'z = z +? * xn(t,i) *Next'Label1.Caption = ? * z *Call SaveResultEnd SubPrivate Sub SaveResult()Open App.Path & "out4.dat" For Output As #1Print #1, Label1.CaptionClose #1End Sub*第02套 综合应用题在考生文件夹中有一个工程文件sjt5.vbp。该程序的功能是从in5.txt文件中读入40个数据,统计这些数据中素数的个数,并找出所有素数中最小的素数(判断素数的函数已给出)。最后将查找和统计的结果分别显示在标签Label4和Label3中(窗体外观如图所示)。程序不完整,请在指定的位置把程序补充完整。 注意:不得修改原有程序和控件的属性。在结束程序运行之前,必须至少正确运行一次程序,将统计的结果显示在标签中,否则无成绩。最后把修改后的文件按原文件名存盘。 Private arr(100) As IntegerPublic Function prime(x As Integer)k = Int(Sqr(x) + 5)For i = 2 To kIf x Mod i = 0 Thenprime = FalseExit FunctionEnd IfNextprime = TrueEnd FunctionPrivate Sub Command1_Click()Open App.Path & "in5.txt" For Input As #1For i = 1 To 40Input #1, arr(i)NextClose #1End SubPrivate Sub Command2_Click() * 请考生编写程序 * Dim a As Integer Dim b As Integer a = 0 b = arr(1) For i = 1 To 40 If prime(arr(i) Then a = a + 1 Label3.Caption = a Next For i = 1 To 40 If prime(arr(i) And arr(i) <= b Then b = arr(i) Label4.Caption = b Next'* 考生编写程序结束 *Open App.Path & "out5.txt" For Output As #1Print #1, Label3.Caption, Label4.CaptionClose #1End Sub*第03套 简单应用题(1)在考生文件夹下有一个工程文件sjt3.vbp,其功能是: 单击"读数据"按钮,则将考生文件夹下in3.dat文件中的100个0到999之间的整数读入到数组a中; 单击"计算"按钮,则找出这100个整数中的所有水仙花数,并将它们的最大值与最小值分别显示在文本框Text1、Text2中。(注:当一个数的值等于该数中的各位数字的立方和时,此数被称为水仙花数。如:所以153就是一个水仙花数) 在窗体文件中已经给出了全部控件(如图所示)和"读数据"命令按钮的事件过程以及判断一个数是否为水仙花数的通用过程。要求编写"计算"命令按钮的事件过程。 注意:考生不得修改窗体文件中已经存在的控件和程序,在结束程序运行前,必须进行"计算",并且必须通过单击窗体右上角的"关闭"按钮结束程序,否则无成绩。最后,程序按原文件名存盘。Dim a(100) As IntegerPrivate Sub Command1_Click()Dim k As IntegerOpen App.Path & "in3.dat" For Input As #1For k = 1 To 100Input #1, a(k)Next kClose #1End SubPrivate Sub Command2_Click() '* 需考生编写的程序 * Dim i As Integer Dim max As Integer, min As Integer max = -1 min = 1000 For i = 1 To 100 If isnarc(a(i) Then If max <= a(i) Then max = a(i) If min >= a(i) Then min = a(i) End If Next i Text1 = max Text2 = minEnd Sub'以下Function 过程用于判断某数是否为水仙花数Function isnarc(p As Integer)x = Fix(p / 100)y = Fix(p - x * 100) / 10)z = p - x * 100 - y * 10If p = x 3 + y 3 + z 3 Thenisnarc = TrueElseisnarc = FalseEnd IfEnd FunctionPrivate Sub Form Unload(Cancel As Integer)Open App.Path & "out3.dat" For Output As #1Print #1, Val(Text1.Text)Print #1, Val(Text2.Text)Close #1End Sub(2)在考生文件夹下有一个工程文件sjt4.vbp。请在窗体上添加一个组合框,名称为cb1,并输入三个列表项:"3"、"7"、"11"(列表项的顺序不限,但必须是这3个数字);添加一个名为Text1的文本框;再添加一个标题为"计算"、名称为C1的命令按钮。如图所示。请编写适当的事件过程,使得在程序运行时,在组合框中选定一个数字后,单击"计算"按钮,则计算5000以内能够被该数整除的所有数之和,并放入Text1中。最后,按原文件名存盘。提示:由于计算结果较大,应使用长整型变量。 注意:考生不得修改窗体文件中已经存在的程序,在结束程序运行之前,必须至少进行一次计算。并且必须用窗体右上角的关闭按钮结束程序,否则无成绩。Private Sub C1_Click()'* 需考生编写的程序 * Dim sum As Long Dim n As Integer Dim i As Integer n = Val(Cb1.Text) For i = n To 5000 If i Mod n = 0 Then sum = sum + i End If Next i Text1.Text = sumEnd Sub*第03套 综合应用题在考生文件夹下有一个工程文件sjt5.vbp,其名称为Form1的窗体上已有三个文本框Text1、Text2、Text3,以及部分程序代码。请完成以下工作: 在属性窗口中修改Text3的适当属性,使其在运行时不显示,作为模拟的剪贴板使用。窗体如图所示; 建立下拉式菜单,如下表所示:标题 名称 编辑 Edit 剪切 Cut 复制 Copy 粘贴 Paste 窗体文件中给出了所有事件过程,但不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。以便实现如下功能:当光标所在的文件框中无内容时,"剪切"、"复制"不可用,否则可以把该文本框中的内容剪切或复制到Text3中;若Text3中无内容,则"粘贴"不能用,否则可以把Text3中的内容粘贴在光标所在的文本框中的内容之后。 注意:不能修改程序中的其他部分。各菜单项的标题名称必须正确。最后将修改后的文件按原文件名存盘。 Dim which As IntegerPrivate Sub copy_Click()If which = 1 ThenText3.Text = Text1.TextElseIf which = 2 ThenText3.Text = Text2.TextEnd IfEnd SubPrivate Sub cut_Click()If which = 1 ThenText3.Text = Text1.TextText1.Text = ""ElseIf which = 2 ThenText3.Text = Text2.TextText2.Text = ""End IfEnd SubPrivate Sub edit_Click()'If which = ? Then * 1 *If Text1.Text = "" Thencut.Enabled = FalseCopy.Enabled = FalseElsecut.Enabled = TrueCopy.Enabled = TrueEnd If'ElseIf which = ? Then * 2 *If Text2.Text ="" Thencut.Enabled = FalseCopy.Enabled = FalseElsecut.Enabled = TrueCopy.Enabled = TrueEnd IfEnd IfIf Text3.Text = "" ThenPaste.Enabled = FalseElsePaste.Enabled = TrueEnd IfEnd SubPrivate Sub paste_Click()If which = 1 Then' Text1.Text = ? * Text1.Text+Text3.Text *ElseIf which = 2 Then' Text2.Text = ? * Text2.Text+Text3.Text *End IfEnd SubPrivate Sub Text1_GotFocus() '本过程的作用是:当焦点在Text1中时,which = 1which = 1End SubPrivate Sub Text2_GotFocus() '本过程的作用是:当焦点在Text2中时,which = 2which = 2End Sub*第04套 简单应用题(1)在名称为Form1的窗体上添加一个名称为Label1、标题为"添加项目:"的标签;添加一个名称为Text1的文本框,初始内容为空;添加一个名称为Combo1的下拉式组合框,并通过属性窗口输入若干项目(不少于3个,内容任意);再添加两个命令按钮,名称分别为Command1、Command2,其标题分别为"添加"、"统计"。在程序运行时,向Text1中输入字符,单击"添加"按钮后,则将Text1中的内容作为一个列表项被添加到组合框的列表中;单击"统计"按钮,则在窗体空白处显示组合框中列表项的个数,如图所示。请编写两个命令按钮的Click事件过程。 注意:程序中不得使用变量,也不能使用循环结构。存盘时必须存放在考生文件夹下,工程文件名保存为sjt3.vbp,窗体文件名保存为sjt3.frm。 '* 需考生编写的程序 *Private Sub Command1_Click() Combo1.AddItem Text1End SubPrivate Sub Command2_Click() Print Combo1.ListCountEnd Sub(2)在考生文件夹下有一个工程文件sjt4.vbp,其窗体如图所示。该程序用来对在上面的文本框中输入的英文字母串(称为"明文")加密,加密结果(称为"密文")显示在下面的文本框中。加密的方法为:选中一个单选按钮,单击"加密"按钮后,根据选中的单选按钮后面的数字n,将"明文"中的每个字母改为它后面的第n个字母("z"后面的字母认为是"a","Z"后面的字母认为是"A" ),如图所示。窗体中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。 注意:不得修改程序中的其他部分和控件的属性。最后将修改后的文件按原文件名存盘。Private Sub Command1_Click()Dim n As Integer, k As Integer, m As IntegerDim c As String, a As StringFor k = 0 To 2If Op1(k)Value Then'n = Val(Op1(k). ? ) * Caption *End IfNext km = Len(Text1.Text)a = ""'For k = 1 To ? * m *'c = Mid$(Text1.Text, ? , 1) * k *c = String(1, Asc(c) + n)If c > "z" Or c > "Z" And c < "a" Then c = String(1, Asc(c) - 26)End If'? = a + c * a *Next kText2.Text = aEnd Sub*第04套 综合应用题在考生文件夹下有一个工程文件sjt5.vbp,窗体上有两个文本框,名称分别为Text1、Text2,都可以多行显示。还有三个命令按钮,名称分别为C1、C2、C3,标题分别为"取数"、"排序"、"存盘"。"取数"按钮的功能是将考生文件夹下的in5.dat文件中的50个整数读到数组中,并在Text1中显示出来;"排序"按钮的功能是对这50个数按升序排序,并显示在Text2中;"存盘"按钮的功能是把排好序的50个数存到考生目录下的out5.dat文件中。如图所示。在窗体中已经给出了全部控件和部分程序代码,要求阅读程序并去掉程序中的注释符,把程序中的?改为正确的内容,并编写"排序"按钮的Click事件过程,使其实现上述功能,但不能修改程序中的其他部分,也不能修改控件的属性。最后将修改后的文件按原文件名存盘。 Dim a(50) As IntegerPrivate Sub C1_Click()Dim k As Integer, ch As StringOpen "in5.dat" For Input As #1ch = ""For k = 1 To 50'Input #1, ? * a(k) *ch = ch + Str(a(k) + " "Next kClose #1'Text1.Text = ? * ch *End SubPrivate Sub C2_Click()' * 需考生编写的程序 *Dim t As Integer Dim i As Integer Dim j As Integer Dim ch As String ch = "" For i = 50 To 2 Step -1 For j = 1 To 49 If a(j) > a(j + 1) Then t = a(j + 1) a(j + 1) = a(j) a(j) = t End If Next j Next i For j = 1 To 50 ch = ch + Str(a(j) + "" Next j Text2.Text = chEnd SubPrivate Sub C3_Click()Open "out5.dat" For Output As #1Print #1, Text2.TextClose #1End Sub*第05套 简单应用题(1)在考生文件夹下有一个工程文件sjt3.vbp(相应的窗体文件名为sjt3.frm),在窗体上添加一个名称为List1的列表框和一个名称为Text1的文本框,如图1所示。编写窗体的MouseDown事件过程。程序运行后,如果用鼠标左键单击窗体,则从键盘上输入要添加到列表框中的项目(内容任意,不少于三个);如果用鼠标右键单击窗体,则从键盘上输入要删除的项目,将其从列表框中删除。程序的运行情况如图2所示。这个程序不完整,请把它补充完整,并能正确运行。 要求:去掉程序中的注释符,把程序中的?改为适当的内容,使其正确运行,但不能修改程序中的其他部分。最后将修改后的文件按原文件名存盘。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 1 ThenText1.Text = InputBox("请输入要添加的项目")'List1.AddItem ? * Text1.Text *End IfIf Button = 2 ThenText1.Text = InputBox("请输入要删除的项目")'For i = 0 To ? * List1.ListCount-1 *'If List1.List(i) = ? Then * Text1.Text *'List1.RemoveItem ? * i * End IfNext iEnd IfEnd Sub(2)在考生文件夹下有一个工程文件sjt4.vbp(相应的窗体文件名为sjt4.frm),其功能是通过调用过程FindMin求数组的最小值。程序运行后,在四个文本框中各输入一个整数,然后单击命令按钮,即可求出数组的最小值,并在窗体上显示出来(如图所示)。要求:去掉程序中的注释符,把程序中的?改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分。最后把修改后的文件按原文件名存盘。Option Base 1Private Function FindMin(a() As Integer)Dim Start As IntegerDim Finish As Integer, i As Integer'Start = ?(a) * LBound *'Finish = ?(a) * UBound *''Min = ?(Start) * a * For i = Start To Finish 'If a(i) ? Min Then Min = ? * < * * a(i) * Next i FindMin = MinEnd FunctionPrivate Sub Command1_Click()Dim arr1Dim arr2(4) As Integerarr1 = Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text), Val(Text4.Text)For i = 1 To 4arr2(i) = CInt(arr1(i)Next i'M = FindMin(?) * arr2 *Print "最小值是: "; MEnd Sub*第05套 综合应用题在窗体上建立三个菜单(名称分别为Read、Calc和Save,标题分别为"读入数据"、"计算并输出"和"存盘"),然后再添加一个文本框,名称为Text1,MultiLine属性设置为True,scrollBars属性设置为2(如图所示)。程序运行后,如果执行"读入数据"命令,则读入考生文件夹下datain1.txt文件中的100个整数,放入一个数组中,数组的下界为1;如果单击"计算并输出"按钮,则把该数组中下标为偶数的元素在文本框中显示出来,求出它们的和,并把所求得的和在窗体上显示出来;如果单击"存盘"按钮,则把所求得的和存入考生文件夹下的dataout.txt文件中。 在考生文件夹下有一个工程文件sjt5.vbp,窗体文件中的ReadData过程可以把datain1.txt文件中的100个整数读入Arr数组中;而WriteData过程可以把指定的整数值写到考生文件夹下指定的文件中(整数值通过计算求得,文件名为dataout.txt)。注意:考生不得修改窗体文件中已经存在的程序。存盘时,工程文件名仍保存为sjt5.vbp,窗体文件名仍保存为sjt5.frm。' * 需考生编写的程序 *Dim sum As IntegerPrivate Sub Calc_Click() Text1.Text = "" For i = 2 To 100 Step 2 Text1.Text = Text1.Text & Arr(i) & Space(5) sum = sum + Arr(i) Next i Print sumEnd SubPrivate Sub Read_Click() ReadDataEnd SubPrivate Sub Save_Click() WriteData "dataout.txt", sumEnd Sub*第06套 简单应用题(1)在考生文件夹下有一个工程文件sjt3.vbp,相应的窗体文件为sjt3.frm。其功能是产生30个01000的随机整数,放入一个数组中,然后输出其中的最小值。程序运行后,单击命令按钮(名称为Command1,标题为“输出最小值”),即可求出其最小值,并在窗体上显示出来(如图所示)。这个程序不完整,请把它补充完整,并能正确运行。要求: 去掉程序中的注释符,把程序中的?改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分。最后把修改后的文件按原文件名存盘。Option Base 1Private Sub Command1_Click( ) Dim arrN(30) as Integer Dim Min as Integer Randomize For i=1 to 30 arrN(i)=Int(Rnd * ?) * 1000 * Next i ?=arrN(1) * Min * For i=2 to 30 If ? Then * Min>arrN(i) * Min=arrN(i) End if Next i Print MinEnd Sub(2)在考生文件夹下有一个工程文件sjt4.vbp,相应的窗体文件为sjt4.frm,在窗体上有一个命令按钮和一个文本框。程序运行后,单击命令按钮,即可计算出01000范围内不能被7整除的整数的个数,并在文本框中显示出来。在窗体的代码窗口中,已给出了部分程序,其中计算不能被7整除的整数的个数的操作在通用过程Fun中实现,请编写该过程的代码。要求:请勿改动程序中的任何内容,只在Function Fun( )和End Function之间填入你编写的若干语句。最后把修改后的文件按原文件名存盘。Sub SaveData( ) Open App.Path & “” & “outtxt.txt” For Output As #1 Print #1, Text1.Text Close #1End sub* Function Fun( ) 请考生编写的程序 * Dim s As Integer, i As Integer For i = 0 To 1000 If i Mod 7 <> 0 Then s = s + 1 End If Next i Fun = s*End Function*Private Sub Command1_click( ) D=Fun( ) Text1.Te