1、VB 机试-试卷 23 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)在名称为 Forml 的窗体上添加一个计时器控件,名称为 Timerl。请利用“属性”窗口设置适当属性,使得在运行时可以每隔 3 秒,调用 Timerl_Timer 过程一次。另外,请把窗体的标题设置为“计时器”。设计阶段的窗体界面如图 451 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为sjlvbp,窗体文件名为 sjlfrm。 (2)在名称为 Forml 的窗体上画一个文本框,名称为 Textl,无初始内容。请编
2、写 Textl 的 Change 事件过程,不能使用任何变量,使得运行时,在文本框中每输入一个字符,就在窗体上输出一行文本框中的完整内容。程序运行界面如图 452 所示。 (分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)在考生文件夹下有一个工程文件 sj3vbp,相应的窗体文件为 sj3frm。其功能是产生 30 个0800 的随机整数,放入一个数组中,然后输出这 30 个整数中小于 400 的所有整数的个数。程序运行后,单击名称为 Commandl 的命令按钮,其标题为“输出小于 400 的整数的个数”,即可求出这些整数的个数,
3、并在名称为 Textl 的文本框上显示出来,如图 344 所示。这个程序不完整,请把它补充完整,并能正确运行。 注意:去掉程序中的注释符“”,把程序中的“?”改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分。最后把修改后的文件按原文件名存盘。 (2)在考生文件夹下有一个工程文件sj4vbp,相应的窗体文件为 sj4frm,在窗体上有一个命令按钮和两个文本框。程序运行后,单击命令按钮,即可计算出 20200 范围内能被 5 整除的所有整数的和及个数,并分别在文本框中显示出来,如图 345 所示。在窗体的代码窗口中,已给出了部分程序,其中计算能被 5 整除的整数的和及个数的操作在通用过
4、程 Func 中实现,请编写该过程的代码。 (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在考生文件夹下有工程文件 sj5vbp 及窗体文件 sj5frm,该程序是不完整的。在名称为 Forml 的窗体上有 3 个 Label 控件和 2 个命令按钮,数据文件 sjindat,存放工人的编号、姓名和年龄。按“开始”按钮后,能从考生文件夹下的 sjindat 中读出数据并把年龄小于平均年龄的工人的所有数据写入考生文件夹下的 sjoutdat 文件中;执行完毕,“开始”按钮变成“完成”,且无效,如图 375 所示。(分数:2.00)_VB
5、 机试-试卷 23 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)在名称为 Forml 的窗体上添加一个计时器控件,名称为 Timerl。请利用“属性”窗口设置适当属性,使得在运行时可以每隔 3 秒,调用 Timerl_Timer 过程一次。另外,请把窗体的标题设置为“计时器”。设计阶段的窗体界面如图 451 所示。 注意:存盘时必须存放在考生文件夹下,工程文件名为sjlvbp,窗体文件名为 sjlfrm。 (2)在名称为 Forml 的窗体上画一个文本框,名称为 Textl,无初始内容。请编
6、写 Textl 的 Change 事件过程,不能使用任何变量,使得运行时,在文本框中每输入一个字符,就在窗体上输出一行文本框中的完整内容。程序运行界面如图 452 所示。 (分数:2.00)_正确答案:(正确答案:(1)计时器控件的 Interval 属性,表示两个计时器事件之间的时间间隔,其值以ms(0001s)为单位,题目要求每 3 秒产生一个计时器事件,那么 Interval 属性应该设置为 3 000。窗体的标题由窗体的 Caption 属性设置。 根据题意,新建“标准 EXE”工程,将一个计时控件添加到窗体中,然后将其 Interval 属性设置为 3000(单位是毫秒),单击 按钮
7、运行程序,并按要求保存。 (2)根据题意,新建“标准 EXE”工程,将一个文本框控件添加到窗体中,其名称为 Textl、Text 属性为空,双击Textl 进入代码编写窗口,当 Textl 变换时调用 Textl_Change 函数,代码如下: Private Sub Textl_Change() FormlPrint TextlText End Sub 单击 )解析:二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)在考生文件夹下有一个工程文件 sj3vbp,相应的窗体文件为 sj3frm。其功能是产生 30 个0800 的随机整数,放入一个数
8、组中,然后输出这 30 个整数中小于 400 的所有整数的个数。程序运行后,单击名称为 Commandl 的命令按钮,其标题为“输出小于 400 的整数的个数”,即可求出这些整数的个数,并在名称为 Textl 的文本框上显示出来,如图 344 所示。这个程序不完整,请把它补充完整,并能正确运行。 注意:去掉程序中的注释符“”,把程序中的“?”改为正确的内容,使其实现上述功能,但不能修改程序中的其他部分。最后把修改后的文件按原文件名存盘。 (2)在考生文件夹下有一个工程文件sj4vbp,相应的窗体文件为 sj4frm,在窗体上有一个命令按钮和两个文本框。程序运行后,单击命令按钮,即可计算出 20
9、200 范围内能被 5 整除的所有整数的和及个数,并分别在文本框中显示出来,如图 345 所示。在窗体的代码窗口中,已给出了部分程序,其中计算能被 5 整除的整数的和及个数的操作在通用过程 Func 中实现,请编写该过程的代码。 (分数:2.00)_正确答案:(正确答案:(1)本题要产生随机整数,需要使用 Rnd 函数。Rnd 函数返回小于 1,但大于或等于 0 的值,其格式为:Rnd(number)。其中 number 参数是可选的,是 Single 或任何有效的数值表达式。number 的值决定了 Rnd 函数生成随机数的方式。要生成某个范围内的随机整数,可使用公式:Int(upperbo
10、und-lowerbound+1)*Rnd+lowerbound),其中 upperbound 是随机数范围的上限,而lowerbound 则是随机数范围的下限。补充后的代码如下: Private Sub Commandl_Click() Dim a(30)As Integer声明一个数组 Dim num As Integer num=0 For i=1 To 30 a(i)= Rnd() *(800-0) 将 0800的随机数存人数组 If a(i)num +1 如果数小于 400,计数加 1 End If Next i TextlText=num将得到的总数放在 Textl 中显示 End
11、 Sub 单击 按钮运行程序,并按要求保存。 (2)要判断一个数能不能被 5 整除,使用求余运算符 Mod,如果余数不为 0,则表示该数不能被整除。程序提供的代码如下: Dim num As Integer Private Sub Commandl_Click() TextlText=Func 调用 Func 函数 Text2Text=num全局变量 End Sub 补充后的 Func 函数参考代码如下: Function Func()As Long返回 Long 型数值 Dim i As Integer Func=0 num=0 For i=20 To 200 If i Mod 5=0 Th
12、en num=hum+1 如果能被 5 整除,则计数加 l Func=Func+i算人总和中 End If Next i End Function 单击 )解析:三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.在考生文件夹下有工程文件 sj5vbp 及窗体文件 sj5frm,该程序是不完整的。在名称为 Forml 的窗体上有 3 个 Label 控件和 2 个命令按钮,数据文件 sjindat,存放工人的编号、姓名和年龄。按“开始”按钮后,能从考生文件夹下的 sjindat 中读出数据并把年龄小于平均年龄的工人的所有数据写入考生文件夹下的 sjout
13、dat 文件中;执行完毕,“开始”按钮变成“完成”,且无效,如图 375 所示。(分数:2.00)_正确答案:(正确答案: 本题主要考查定义结构体变量,其格式如下: Private type 结构体名 参数名as 参数类型 End type 程序中在同一个过程打开两个文件,因此要用两个文件号,一个用来读入(文件号#1),一个用来输出(文件号#2)。利用 EOF 来判断是否读取完,先对文件进行一次读取,计算出平均值,然后再根据条件进行边读取边写入的操作,补充后的具体代码如下: Private Type Person声明结构体 num As String*12 Nam As String*12 Y
14、ea As Long End Type Private Sub Commandl_Click() Dim per As Person Dim arg As Long Dim num As Integer arg=0算平均值 num=0 计数 Open“AppPath&sjindat“For Input As#1 While EOF(1)= False 当没有读取完则继续读取 Input#1,pernum Input#l,perNam Input#l,perYea arg=arg+perYea累加年龄 num=num+1累加计数 Wend Close#l arg=argnum Open“AppPathg&sjindat“For Input As#1 Open“AppPathg&sjoutdat“For Output As#2打开输出文件 While EOF(1)= False Input#1,pernum Input#1,perNam Input#1,perYea If perYea Enabled=False完成后Commandl 不可用 CommandlCaption=“完成“ Commandl 的标签改为完成 End Sub Private Sub Command2 Click() Unload Me关闭对话框 End Sub 单击*按钮运行程序,并按要求保存。)解析: