1、全国计算机等级考试二级 VISUAL+BASIC 真题 2007 年 4 月及答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列叙述中正确的是_。(分数:2.00)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是刑应的D.算法的时间复杂度与空间复杂度定相关2.在结构化程序设计中,模块划分的原则是_。(分数:2.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦台度3.下列叙述
2、中正确的是_。(分数:2.00)A.软件测试的主要目的是发现程序中的错误B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证明软件没有错误4.下面选项中不属于面向对象程序设计特征的是_。(分数:2.00)A.继承性B.多态性C.类比性D.封装性5.下列对队列的叙述正确的是_。(分数:2.00)A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据6.对下列二叉捌进行前序遍历的结果为_。 (分数:2.00)A.DYBEAFCZXB.YDEBFZXCAC.ABDYEC
3、FXZD.ABCDEFXYZ7.某二叉树中有 n 个度为 2 的结点,则该二叉树中的叶子结点数为_。(分数:2.00)A.n+1B.n-1C.2nD.n/28.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是_。(分数:2.00)A.并B.交C.投影D.笛卡尔乘积9.在 E-R 图中,用来表示实体之间联系的图形是_。(分数:2.00)A.矩形B.椭圆形C.菱形D.平行四边形10.下列叙述中错误的是_。(分数:2.00)A.在数据库系统中,数据的物理结构必须与逻辑结构致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系
4、统需要操作系统的支持11.下面可以正确定义两个整型变量和个字符串变量的语句是_。(分数:2.00)A.Dim n,m As Integer,s As StringB.Dim a%,b$,c As StringC.Dim a As Integer,b,c As StringD.Dim x%,y As Integer,z As String12.下列表达式中不能判断 x 是否为偶数的是_。(分数:2.00)A.x/2=Int(x/2)B.x Mod 2=0C.Fix(x/2)=x/2D.x/2=013.设在名称为 Myform 的窗体上只有个名称为 C1 的命令按钮,下面叙述中正确的是_。(分数:
5、2.00)A.窗体的 Click 事件过程的过程名是 Myform ClickB.命令按钮的 Click 事件过程的过程名是 C1 CrickC.命令按钮的 Click 事件过程的过程名是 Commandl ClickD.上面 3 种过程名称都是错误的14.设窗体上有一个滚动条,要求单击滚动条右端的(图片)按钮一次,滚动块移动一定的刻度值,决定此刻度值的属性是_。(分数:2.00)A.MaxB.MinC.SmallChangeD.LargeChange15.个二维数组可以存放个矩阵。在程序开始有语句 Option Base0,则下面定义的数组中正好可以存放个 43 矩阵(即只有 12 个元素)
6、的是_。(分数:2.00)A.Dim a(-2 To 0,2)As IntegerB.Dima(3,2)As IntegerC.Dim a(4,3)As IntegerD.Dim a(-1 To -4,-1 To -3)As Integer16.若设置了文本框的属性 PasswordChar=“$”,则运行程序时向文本框中输入 8 个任意字符后,文本框中显示的是_。(分数:2.00)A.8 个“$”B.1 个“$”C.8 个“*”D.无任何内容17.设在窗体上有个名称为 Combol 的组合框,含有 5 个项目,要删除最后一项,正确的语句是 _。(分数:2.00)A.Combo1.Remove
7、Item Combo1.TextB.Combo1.Removeltem4C.Combo1.RemoveItem Combo1.ListCountD.Combo1.RemoveItem518.工程中有两个窗体,名称分别为 Form1、Form2,Fonn1 为启动窗体,该窗体上有命令按钮 Command1。要求程序运行后单击该命令按钮时显示 Form2,则按钮 Click 事件过程应该是 _。(分数:2.00)A.Private Sub Command1_click() Foma2.Show End SubB.Private Sub Command1_Click() Form2.Visible
8、End SubC.Private Sub Command1_Click() Load Form2 End SubD.Private Sub Command1_click() ForLoad EndSub19.若在某窗体模块中有如下事件过程: Privam Sub Command1_Click(Index As Integer) End Sub 则以下叙述中正确的是_。(分数:2.00)A.此事件过程与不带参数的事件过程没有区别B.有个名称为 Command1 的窗体,单击此窗体则执行此事件过程C.有一个名称为 Command1 的控件数组,数组中有多个不同类型控件D.有今名称为 Command
9、1 的控件数组,数组中有多个相同类型控件20.下面循环语句中在任何情况下都至少执行一次循环体的是_。(分数:2.00)A.Do While 条件 循环体 LoopB.While 条件 循环体 WendC.Do 循环体 Loop Until 条件D.Do Until 条件 循环体 Loop21.在窗体上有今名为 Cd1 的通用对话框,为了在运行程序时打开保存文件对话框,则在程序中应使用的语句是_。(分数:2.00)A.Cd1.Action=2B.Cd1.Acfion=1C.Cd1.ShowSave=TrueD.Cd1.ShowSave=022.下面关于菜单的叙述中错误的是_。(分数:2.00)A
10、.各级菜单中的所有菜单项的名称必须唯一B.同一子菜单中的菜单项的名称必须惟一,但不同子菜单中的菜单项名称可以相同C.弹出式菜单用 PopupMenu 方式弹出D.弹出式菜单也用菜单编辑器编辑23.已知有下面过程: Private Sub proc1(a As Integer,b As String,Optional x As Boolean) End Sub 正确调用此过程的语句是_。(分数:2.00)A.Call procl(5)B.Call procl 5,“abc“,FalseC.procl(12,“abc“,TruD.procl 5,“abc“24.在窗体上有个名称为 Text1 的文
11、本框和一个名称为 Command1 的命令按钮,要求在程序执行时,每单击命令按钮次,文本框向右移动定的距离。下面能够正确实现上述功能的程序是 _。(分数:2.00)A.Private Sub Command1_Click() Text1.Left=100 End SubB.Private Sub Command1_Click() Text1.Left=Text1.Left-100 End SubC.Private Sub Command1_Click() Text1.Move Text1.Left+100 End SubD.Private Sub Command1_Click() Text1.
12、Move Text1.Left End Sub25.某人创建了个工程,其中的窗体名称为 Form1;之后又添加了个名为 Form2 的窗体,并希望程序执行时先显示 Form2 窗体,那么,他需要做的工作是_。(分数:2.00)A.在工程属性对话框中把“启动对象”设置为 Form2B.在 Form1 的 Load 事件过程中加入语句 Load Form2C.在 Form2 的 Load 事件过程中加入语句 Form2.ShowD.把 Fonn2 的 TabIndex 属性设置为 1,把 Form1 的 TabIndex 属性设置为 226.窗体上有一个名称为 Text1 的文本框和个名称为 Co
13、mmand1 的命令按钮。要求程序运行时,单击命令按钮,就可把文本框中的内容写到文件 out.txt 中,每次写入的内容附加到原有内容之后。下面能够正确实现上述功能的程序是_。(分数:2.00)A.Private Sub Command1_Click() Open “outxt“ For Input As#1 Print #1,Text1.Text Close #1 End SubB.Private Sub Command1_Click() Open “outxt“ For Output AS #1 Print #1,Text1.Text Close #1 End SubC.Private S
14、ub Command1_Click() Open “outxt“ For Append As #1 Print #1,Text1.Text Close #1 End SubD.Private Sub Command1_Click() Open “outxt“ For Random As #1 Print #1,Text1.Text Close #1 End Sub27.为了计算 1+3+5+99 的值,某人编程如下: k=1 s=0 While k=99 k=k+2:s=s+k Wend Print s 在调试时发现运行结果有错误,需要修改。下列错误原因和修改方案中正确的是_。(分数:2.00
15、)A.WhilWend 循环语句错误,应修改为 For k=-1 T0 99Next kB.循环条件错误,应改为 While k99C.循环前的赋值语句 K=1 错误,应改为 k=0D.循环中两条赋值语句的 j 顷序错误,应改为 s=s+k:k=k+228.下面程序在调试时出现了死循环 Private Sub Command1_Click() n=InputBox(“请输入个整数“) Do Ifn Mod 2=0 Then n=n+1 Else n=n+2 End If Loop Until n=1000 End Sub 下面关于死循环的叙述中正确的是_。(分数:2.00)A.只有输入的 n
16、是偶数时才会出现死循环,否则不会B.只有输入的 n 是奇数时才会出现死循环,否则不会C.只有输入的 n 是大于 1000 的整数时才会出现死循环,否则不会D.输入任伺整数都会出现死循环29.在窗体上有个名为 CommonDialog1 的通用对话框和一个名称为 Command1 的命令按钮,以及其他些控件。要求在程序运行时,单击 Command1 按钮,则显示打开文件对话框,并在选择或输入了个文件名后,就可以打开该文件。以下是 Command1_Click 事件过程的两种算法 算法 1: Private Sub Command1_Click() CommonDialog1.ShowOpen O
17、pen CommonDialog1.FileName For Input As #1 End Sub 算法 2: Private Sub Command1_Click() CommonDialog1.ShowOpen IfCommonDialog1.FileName“Then CommonDialog1.FileName For Input As #1 End If End Sub 下面关于这两种算法的叙述中正确的是_。(分数:2.00)A.显示打开文件对话框后若未选择或输入任何文件名,则算法 2 会出错,算法 1 不会B.显示打开文件对话框后若未选择或输入任何文件名,则算法 1 会出错,算法
18、 2 不会C.两种算法的执行结果完全样D.算法 1 允许输入的文件名中含有空格,而算法 2 不允许30.窗体上有一个名为 List1 的列表框,其中已经输入了若干个项目(如图所示);还有两个文本框,名称分别为 Text1、Text2,一个名称为 Command1 的命令按钮,并有以下程序: Private Sub Command1_Click() Dim str As String,s As String,k As Integer s=Text1 str=“ For k=List1.ListCount-1 To 0 Step-1 IfInStr(List1.List(k),s)0 Then s
19、tr=strU 【7】 /UEnd Sub(分数:2.00)填空项 1:_42.下面程序的功能是把文件 file1.txt 中重复的字符去掉后(即若有多个字符相同,则只保留 1 个)写入文件 file2.txt。请填空。 Private Sub Commana1_Click() Dim inchar As String,temp As String,outchar As String outchar=“ Open “file1.txt“ For Input As #1 Open “file2.txt“ For Oulput AsU 【8】 /U n=LOF(U 【9】 /U) inchar=I
20、nput$(n,1) For k=1 To n temp=Mid(inchar,k,1) IfInStr(outchar,temp)=U 【10】 /U Then outchar=outchar U 【7】 /UEnd Sub(分数:2.00)填空项 1:_ (正确答案:6 0)解析:7 n-1评析 Do WhileLoop 是先判断条件表达式的值是否为 True,如果为 True,则执行循环体,如果为False,则执行 Loop 后面的语句。由循环体可知该题的第 1 空应该填 0。当循环条件不满足时跳出循环,此时的 n 是满足不等式 1+22+32+42+n2=m 的最小的 n,所以该题的第
21、 2 空应该填 n-1。42.下面程序的功能是把文件 file1.txt 中重复的字符去掉后(即若有多个字符相同,则只保留 1 个)写入文件 file2.txt。请填空。 Private Sub Commana1_Click() Dim inchar As String,temp As String,outchar As String outchar=“ Open “file1.txt“ For Input As #1 Open “file2.txt“ For Oulput AsU 【8】 /U n=LOF(U 【9】 /U) inchar=Input$(n,1) For k=1 To n t
22、emp=Mid(inchar,k,1) IfInStr(outchar,temp)=U 【10】 /U Then outchar=outchar & temp End If Next k Ptint #2,U 【11】 /U Close #2 Close #1 End Sub(分数:2.00)填空项 1:_ (正确答案:8 #2)解析:9 1 10 0 11 outchar 评析 Open 语句的基本语法是 Open “文件名“(可包含路径)For 模式 As 文件号 Len=记录长度。模式为以下形式之一: Output:打开一个文件,将对该文件进行写操作。Input:打开一个文件,将对该文件
23、进行读操作。 Append:打开一个文件,将在该文件末尾追加记录。 如果未指定方式,则以 Random 访问方式打开文件。 文件号是一个介于 1511 之间的整数。当打开一个文件并为它指定一个文件号后,该文件号就代表该文件,直到文件被关闭后,此文件才可以再被其他文件使用。由“Print #2,U 【11】 /U”可知,该题的第 1 空应该填#2。 LOF 函数是用来返回已打开文件的长度。将#1 文件的长度作为循环变量,所以该题的第 2 空应该填 1。 Input$(读取的字符数,#文件号):该函数可以读取指定数目的字符。Mid(s,index,length)用来从字符串 s 中的第 index
24、 字符开始连续取出 length 个字符。InStr(首字符位置字符串 1,字符串 2,n)用来在“字符串 1”中查找“字符串 2”,如果找到,则返回“字符串 2”的第一个字符在“字符串 1”中的位置。“&”:字符串连接运算符,将两个字符串按顺序连接起来。For 循环的作用是将#1 文件中出现过的字符不重复地连接起来(即若同一字符出现多次,则只保留一个)赋给 outchar 变量,所以该题的第 3 空应该填 0。 将数据写入磁盘文件所用的命令是 Write #或 Print #命令,形式为 Print #文件号,输出列表。由程序可知是将字符串变量 outchar 中的内容写到#2 文件中,所以
25、该题的第 4 空应该填 outchar。43.在窗体上先画一个名为 Text1 的文本框和个名为 Label1 的标签,再画个名为 Op1 的有 4 个单选按钮的单选按钮选项组,其 Index 属性按季度顺序为 03(见图 1)。在文件 sales.txt 中按月份顺序存有某企业某年 12 个月的销售额。要求在程序执行时,鼠标单击个单选按钮,则 Text1 中显示相应季度的销售总额,并把相应的文字显示在标签上。图 2 是单击“第三季度”单选按钮所产生的结果。请填空。 (分数:2.00)填空项 1:_ (正确答案:12 Op1_Click)解析:13 3 14 Caption 评析 本题是要求鼠
26、标单击哪个单选按钮,则 Text1 中显示相应季度的销售总额,所以该题的第 1 空应该填 Op1 Click。一年有十二个月,分四个季度,每 3 个月是 1 个季度,所以该题的第 2 空应该填 3。Caption 属性表示控件中显示的内容,所以该题的第 3 空应该填 Caption。44.某人编写如下函数来判断 a 是否为素数,若是,则函数返回 True;否则返回 False Function prime(a As Integer) As Boolean Dim k As Integer,ispfime As Boolean If a2 Then isprime=False Else ispr
27、ime=Tme k=2 Do While ka/2 And isprime If a Mod k=0 Then isprime=False Else k=k+1 End If Loop End If End Function 在测试时发现有一个非素数也被判断为素数,这个错判的数是U 【15】 /U。(分数:2.00)填空项 1:_ (正确答案:4)解析:评析 所谓素数就是指只能被 1 和其本身整除,不能被其他任何数整除的数。本题函数中是先将a 与 2 比较,小于 2 的返回 False,大于 2 的返回 True。再用 Do WhileLoop 循环判断大于 4 的数是否为素数,所以非素数 4 就被错判为素数了。如果将程序修改正确,那么循环的条件需要修改为 k=a/2 And isprime。