问答题
注意:下面出现的“考生文件夹”均为c:/wexam/25160001。
在考生文件夹下有工程文件sjt5.vbp及窗体文件sjt5.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即'号),但不能修改其他部分乙存盘时不得改变文件名和文件夹,相应的dat文件也保存到考生文件夹下,否则没有成绩。
本题描述如下:
在名称为Form1的窗体上有五个Labe1控件和两个命令按钮,数据文件prog8a.dat存放一些字符。按“开始”按钮后,能从考生文件夹下的prog8a.dat中读出数据并分别统计出其中数字、大写字母、小写字母和其他类型字符的个数,将结果写入考生文件夹下的prog8b.dat文件中(以标准格式在一行中输出);执行完毕,“开始”按钮变成“完成”,且无效(变灰)。程序运行界面如图15-6所示。
【正确答案】[解析] 在程序运行时控件是否可用由其Enable属性决定,当其值为True时可用,当为False不可用(灰色)。对文件进行操作必须先打开文件,同时通知操作系统对文件进行读操作还是写操作,打开文件的命令是Open,其常用形式为:
Open“文件名”For模式As[#]文件号[Len=记录长度]
模式有Output(打开文件,对其进行写操作)、Input(打开文件,对其进行读操作)、Append(打开文件,在文件末尾追加记录)。
统计大小写字符和数字只需根据字符的ASCII码判断,大写字母的ASCII值是65~90,小写字母的ASCII值是97~122,数字的为48~57。解题步骤:
第一步:编写程序代码。
程序提供的代码:
Private Sub COMEXIT_Click()
End
End Sub
Private Sub COMSTART_Click()
Dim Ch As String, Number As Integer, Cp As Integer, Lp As Integer, Others As Integer
myfile1=App.Path & "/" & "prog8a.txt"
myfile2=App.Path & "/" & "prog8b.txt"
'Open myfile1 For ? As #1
'Open myfile2 For ? As #2
While Not EOF(1)
'Input ?, Ch$
If Asc(Ch$)>=48 And Asc(Ch$)<=57 Then
Number=Number+1
ElseIf Asc(Ch$)>=65 And Asc(Ch$)<=90 Then
Cp=Cp+1
ElseIf Asc(Ch$)>=97 And Asc(Ch$)<=122 Then
Lp=Lp+1
Else
'Others=?
End If
Wend
'Print ?, Number, Cp, Lp, Others
Close
'COMSTART.Caption=?
'COMSTART.Enabled=?
End Sub
参考代码:
Private Sub COMEXIT_Click()
End
End Sub
Private Sub COMSTART_Click()
Dim Ch As String, Number As Integer, Cp As Integer, Lp As Integer, Others As Integer
myfile1=App.Path & "/" & "prog8a.txt"
myfile2=App.Path & "/" & "prog8b.txt"
Open myfile1 For Input As #1
Open myfile2 For Output As #2
While Not EOF(1)
Input #1, Ch$
If Asc(Ch$)>=48 And Asc(Ch$)<=57 Then
Number=Number+1
ElseIf Asc(Ch$)>=65 And Asc(Ch$)<=90 Then
Cp=Cp+1
ElseIf Asc(Ch$)>=97 And Asc(Ch$)<=122 Then
Lp=Lp+1
Else
Others=Others+1
End If
Wend
Print #2, Number, Cp, Lp, Others
Close
COMSTART.Caption="完成"
COMSTART.Enabled=False
End Sub
第二步:调试并运行程序。
第三步:按题目要求存盘。
【答案解析】