1、二级 VISUAL+BASIC 机试 51 及答案解析(总分:100.00,做题时间:90 分钟)一、B1 基本操作题/B(总题数:1,分数:30.00)1.注意:下面出现的“考生文件夹”均为 C:/wexam/25160002。 请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。 (1) 在名称为 Form1 的窗体上画一个名称为 Command1 的命令按钮,标题为“打开文件”,再画一个名称为 CD1 的通用对话框。程序运行后,如果单击命令按钮,则弹出打开文件对话框。请按下列要求设置属性并编写代码: 设置适当属性,使对话框的标题为“打开文件”;设置适当属性,
2、使对话框的“文件类型”下拉式组合框中有二行:“文本文件”、“所有文件”,如图 23-1 所示,默认的类型是“所有文件”;编写代码,使得单击按钮可以弹出打开文件对话框。要求:程序中不得使用变量,事件过程中只能写一条语句。 注意:存盘时必须存放在考生文件夹下,工程文件名为sjt1.vbp,窗体文件名为 sjt1.frm。 (2) 在名称为 Form1 的窗体上画一个命令按钮,名称为 Command1,标题为“移动本按钮”,如图 23-2 所示。要求编写适当的事件过程,使得程序运行时,每单击按钮一次,按钮向左移动 100。要求:程序中不得使用变量,事件过程中只能写一条语句。 注意:存盘时必须存放在考
3、生文件夹下,工程文件名为 sjt2.vbp,窗体文件名为 sjt2.frm。 (分数:30.00)_二、B2 简单应用题/B(总题数:1,分数:40.00)2.注意:下面出现的“考生文件夹”均为 C:/wexam/25160002。 (1) 在名称为 Form1 的窗体上画一个名称为 Label1,标题为“添加项目:”的标签;画一个名称为 Text1 的文本框,没有初始内容;画一个名称为 Combo1 的下拉式组合框,并通过属性窗口输入若干项目 (不少于 3 个,内容任意);再画两个命令按钮,名称分别为 Command1 和 Command2,标题分别为“添加”和“统计”。在运行时,向 Tex
4、t1 中输入字符,单击“添加”按钮后,则 Text1 中的内容作为一个列表项被添加到组合框的列表中;单击“统计”按钮,则在窗体上显示组合框中列表项的个数,如图 23-3 所示。请编写两个命令按钮的 Click 事件过程。 注意:程序中不得使用变量,也不能使用循环。存盘时必须存放在考生文件夹下,工程文件名为sjt3.vbp,窗体文件名为 sjt3.frm。 (2) 在考生文件夹下有一个工程文件 sjt4.vbp,其窗体如图 23-4所示。该程序用来对在上面文本框中输入的英文字母串(称为“明文”)加密,加密结果(称为“密文”)显示在下面的文本框中。加密的方法是:选中一个单选按钮,单击“加密”按钮后
5、,根据选中的单选按钮后面的数字 n,把明文中的每个字母改为它后面的第 n 个字母(“z”后面的字母认为是“a”,“Z”后面的字母认为是“A”),如图所示。窗体中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。 注意:不能修改程序中的其他部分和控件的属性。最后把修改后的文件按原文件名存盘。 (分数:40.00)_三、B3 综合应用题/B(总题数:1,分数:30.00)3.注意:下面出现的“考生文件夹”均为 C:/wexam/25160002。 在考生文件夹下有一个工程文件sjt5.vbp,窗体上二有两个文本框,名称分别为 Text1 和 Text2,都可
6、以多行显示。还有 3 个命令按钮,名称分别为 C1、C2 和 C3,标题分别为“取数”、“排序”和“存盘”。“取数”按钮的功能是把考生文件夹下的 in5.dat 文件中的 50 个整数读到数组中,并在 Text1 中显示出来;“排序”按钮的功能是对这50 个数按升序排序,并显示在 Text2 中;“存盘”按钮的功能是把排好序的 50 个数存到考生文件夹下的out5.dat 文件中。程序运行界面如图 23-5 所示。 在窗体中已经给出了全部控件和部分程序,要求阅读程序并去掉程序中的注释符,把程序中的?改为正确的内容,并编写“排序”按钮的 Click 事件过程,使其实现上述功能,但不能修改程序中的
7、其他部分,也不能修改控件的属性。最后把修改后的文件按原文件名存盘。 (分数:30.00)_二级 VISUAL+BASIC 机试 51 答案解析(总分:100.00,做题时间:90 分钟)一、B1 基本操作题/B(总题数:1,分数:30.00)1.注意:下面出现的“考生文件夹”均为 C:/wexam/25160002。 请根据以下各小题的要求设计 Visual Basic 应用程序(包括界面和代码)。 (1) 在名称为 Form1 的窗体上画一个名称为 Command1 的命令按钮,标题为“打开文件”,再画一个名称为 CD1 的通用对话框。程序运行后,如果单击命令按钮,则弹出打开文件对话框。请按
8、下列要求设置属性并编写代码: 设置适当属性,使对话框的标题为“打开文件”;设置适当属性,使对话框的“文件类型”下拉式组合框中有二行:“文本文件”、“所有文件”,如图 23-1 所示,默认的类型是“所有文件”;编写代码,使得单击按钮可以弹出打开文件对话框。要求:程序中不得使用变量,事件过程中只能写一条语句。 注意:存盘时必须存放在考生文件夹下,工程文件名为sjt1.vbp,窗体文件名为 sjt1.frm。 (2) 在名称为 Form1 的窗体上画一个命令按钮,名称为 Command1,标题为“移动本按钮”,如图 23-2 所示。要求编写适当的事件过程,使得程序运行时,每单击按钮一次,按钮向左移动
9、 100。要求:程序中不得使用变量,事件过程中只能写一条语句。 注意:存盘时必须存放在考生文件夹下,工程文件名为 sjt2.vbp,窗体文件名为 sjt2.frm。 (分数:30.00)_正确答案:()解析:解析 在窗体上建立好控件后,先设置控件属性,再编写事件过程。在 Visual Basic 中,命令按钮的名称由 Caption 属性设置。通用对话框的属性可以在属性窗口中直接设置。将 CommonDialog 的 Name 属性设置为 CD1,文件类型在 CommonDialog 的 Filter 属性中设置,其格式为:文件说明|文件类型本题应在 Filter 属性中设置为:文本文件|*.
10、txt|所有文件|*.*。解题步骤:第一步:建立界面并设置控件属性。程序中用到的控件及属性设置见表 23-1。表 23-1 控 件 属 性 设 置 值按钮 Caption 打开文件通用对话框(名称)DialogTitleFilter CD1打开文件文本文件|*.txt|所有文件|*.*|第二步:编写程序代码。参考代码:Option ExplicitPrivate Sub Command1_Click()CD1.ShowOpenEnd Sub第三步:调试并运行程序。第四步:按题目要求存盘。(2) 解析 在窗体上建立好控件后,先设置控件属性,再编写事件过程。在 Visual Basic 中,按钮的
11、标题由 Caption 属性设置。要使命令按钮向左移动,须用到按钮的 Left属性,使其值再每单击一次按钮时减去 100。解题步骤:第一步:建立界面并设置控件属性。程序中用到的控件及属性设置见表 23-2。表 23-2 控 件 属 性 设 置 值按钮 (名称) Caption Command1 移动本按钮第二步:编写程序代码。参考代码:Option ExplicitPrivate Sub Command1_Click()Command1.Left=Command1.Left-100End Sub第三步:调试并运行程序。第四步:按题目要求存盘。二、B2 简单应用题/B(总题数:1,分数:40.0
12、0)2.注意:下面出现的“考生文件夹”均为 C:/wexam/25160002。 (1) 在名称为 Form1 的窗体上画一个名称为 Label1,标题为“添加项目:”的标签;画一个名称为 Text1 的文本框,没有初始内容;画一个名称为 Combo1 的下拉式组合框,并通过属性窗口输入若干项目 (不少于 3 个,内容任意);再画两个命令按钮,名称分别为 Command1 和 Command2,标题分别为“添加”和“统计”。在运行时,向 Text1 中输入字符,单击“添加”按钮后,则 Text1 中的内容作为一个列表项被添加到组合框的列表中;单击“统计”按钮,则在窗体上显示组合框中列表项的个数
13、,如图 23-3 所示。请编写两个命令按钮的 Click 事件过程。 注意:程序中不得使用变量,也不能使用循环。存盘时必须存放在考生文件夹下,工程文件名为sjt3.vbp,窗体文件名为 sjt3.frm。 (2) 在考生文件夹下有一个工程文件 sjt4.vbp,其窗体如图 23-4所示。该程序用来对在上面文本框中输入的英文字母串(称为“明文”)加密,加密结果(称为“密文”)显示在下面的文本框中。加密的方法是:选中一个单选按钮,单击“加密”按钮后,根据选中的单选按钮后面的数字 n,把明文中的每个字母改为它后面的第 n 个字母(“z”后面的字母认为是“a”,“Z”后面的字母认为是“A”),如图所示
14、。窗体中已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把程序中的?改为正确的内容。 注意:不能修改程序中的其他部分和控件的属性。最后把修改后的文件按原文件名存盘。 (分数:40.00)_正确答案:()解析:解析 在窗体上建立好控件后,先设置控件属性,再编写事件过程。命令按钮和标签的标题在属性窗口的 Caption 属性设置。要使 Text1 的文本框没有初始内容,就在属性窗口中的 Text 属性设为空。要在下拉式组合框中输入内容,通过下拉式组合框在属性窗口的 List 属性设置。AddItem 方法用来项组合框中添加一个表项,其给是为:组合框.Additem 列表项索引List
15、Count 属性返回组合框中列表项的综合。解题步骤:第一步:建立界面并设置控件属性。程序中用到的控件及属性设置见表 23-3。表 23-3 控 件 属 性 设 置 值标签 Caption 添加项目:文本框 Text下拉式组合框 List中国美国英国按钮 Caption 添加按钮 Caption 统计第二步:编写程序代码。参考代码:Option ExplicitPrivate Sub Command1_Click()Combo1.Addltem Text1End SubPrivate Sub Command2_Click()Me.Print Combo1.ListCountEnd Sub第三步:
16、调试并运行程序。第四步:按题目要求存盘。(2) 解析 首先要确定移动的位数,移动的位数是通过单选框来选择的,移动的值是由单选框的Caption 属性确定的,然后要确定循环的次数,循环的次数是由输入字母的个数确定的。对字符串,需要对字符进行逐个处理。使用 Mid 函数取出字符串中的字符,利用 Ase 函数返回字符的代码,利用 String函数将字符代码转换成字符。Mid 函数的格式为:Mid(字符串,p,n)Mid 函数从第 p 个字符开始,向后截取 n 个字符,p 和 n 都是算术表达式。Mid 函数的第三个变量可以省略,这样将第 p 个字符开始先后截取到字符串的结尾。解题步骤:第一步:分析题
17、目提供的代码。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 Thenn=Val (Op1 (k) . ? )End IfNext km=Len(Text1.Text)a=“For k=1 To ?c=Mid$(Text1.Text, ?, 1)c=String(1, Asc(c) + n)If c“z“ Or c“Z“ And c“a“ Thenc=String(1, ?)End If
18、a=a+cNext kText2.Text=aEnd Sub第二步:修改程序代码。参考代码: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 Thenn=Val(Op1(k) .Caption)End IfNext km=Len(Text1.Text)a=“For k=1 To mc=Mid$(Text1.Text, k, 1)c=String(1, Asc(c) + n)If c“z“
19、Or c“Z“ And c“a“ Thenc=String(i, Asc(c)-26)End Ifa=a+cNext kText2.Text=aEnd Sub第三步:调试并运行程序。第四步:按题目要求存盘。三、B3 综合应用题/B(总题数:1,分数:30.00)3.注意:下面出现的“考生文件夹”均为 C:/wexam/25160002。 在考生文件夹下有一个工程文件sjt5.vbp,窗体上二有两个文本框,名称分别为 Text1 和 Text2,都可以多行显示。还有 3 个命令按钮,名称分别为 C1、C2 和 C3,标题分别为“取数”、“排序”和“存盘”。“取数”按钮的功能是把考生文件夹下的 i
20、n5.dat 文件中的 50 个整数读到数组中,并在 Text1 中显示出来;“排序”按钮的功能是对这50 个数按升序排序,并显示在 Text2 中;“存盘”按钮的功能是把排好序的 50 个数存到考生文件夹下的out5.dat 文件中。程序运行界面如图 23-5 所示。 在窗体中已经给出了全部控件和部分程序,要求阅读程序并去掉程序中的注释符,把程序中的?改为正确的内容,并编写“排序”按钮的 Click 事件过程,使其实现上述功能,但不能修改程序中的其他部分,也不能修改控件的属性。最后把修改后的文件按原文件名存盘。 (分数:30.00)_正确答案:()解析:解析 首先理清程序提供代码的思路,然后
21、修改程序并编写代码。 从程序提供的代码中可以看出,整型数组 a 的使用范围是本窗体中的所有事件过程,用来存放从文件中读取的数据。在排序中,使用双重循环,外循环每踞环一次,确定内循环循环的次数,内循环就是把本次循环中最大的数,放在数组的最后面,这样就可以实现对这 50 个数的升序排序。解题步骤: 第一步:分析题目提供的代码。 Dim a(50) As Integer Private Sub C1_Click() Dim k As Integer,ch As String Open “in5.dat“ For Input AS #1 ch=“ “ For k=1 To 50 Input #1, ?
22、 ch=ch+Str(a(k) ) +“ “ Next k Close #1 Text1.Text= ? End Sub Private Sub C3_Click() Open “out5.dat“ For Output As #1 Print #1, Text2.Text Close #1 End Sub 第二步:编写程序代码。 参考代码: Dim a(50) As Integer Private Sub C1_Click() Dim k As Integer, ch As String Open “in5.dat“ For Input As #1 ch=“ For k=1 To 50 In
23、put #1, a(k) ch=ch+Str(a(k) ) +“ “ Next k Close #1 Text1.Text=ch End Sub Private Sub C2_Click() Dim t As Integer, i As Integer, 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=ch End Sub Private Sub C3_Click() Open “out5.dat“ For Output As #1 Print #1, Text2.Text Close #1 End Sub 第三步:调试并运行程序。 第四步:按题目要求存盘。