问答题
注意:下面出现的“考生文件夹”均为C:/wexam/25160002。
在考生文件夹下有一个工程文件sjt5.vbp,窗体上二有两个文本框,名称分别为Text1和Text2,都可以多行显示。还有3个命令按钮,名称分别为C1、C2和C3,标题分别为“取数”、“排序”和“存盘”。“取数”按钮的功能是把考生文件夹下的in5.dat文件中的50个整数读到数组中,并在Text1中显示出来;“排序”按钮的功能是对这50个数按升序排序,并显示在Text2中;“存盘”按钮的功能是把排好序的50个数存到考生文件夹下的out5.dat文件中。程序运行界面如图23-5所示。
在窗体中已经给出了全部控件和部分程序,要求阅读程序并去掉程序中的注释符,把程序中的?改为正确的内容,并编写“排序”按钮的Click事件过程,使其实现上述功能,但不能修改程序中的其他部分,也不能修改控件的属性。最后把修改后的文件按原文件名存盘。
【正确答案】
【答案解析】[解析] 首先理清程序提供代码的思路,然后修改程序并编写代码。
从程序提供的代码中可以看出,整型数组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, ?
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
Input #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
第三步:调试并运行程序。
第四步:按题目要求存盘。