下面出现的“考生文件夹”均为c:\wexam\25160001。 在考生文件夹中有工程文件sjt5.vbp及其窗体文件sjt5.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即,号)但不能修改其他部分。存盘时不得改变

admin2009-02-25  18

问题 下面出现的“考生文件夹”均为c:\wexam\25160001。
   在考生文件夹中有工程文件sjt5.vbp及其窗体文件sjt5.frm,该程序是不完整的,请在有?号的地方填入正确内容,然后删除?及所有注释符(即,号)但不能修改其他部分。存盘时不得改变文件名和文件夹。
   本题描述如下:
   在名称为Form1的窗体上有一个文本框,名称为Text1,MultiLine属性为True,ScrollBars属性为2,两个命令按钮,名称分别为Cmd1和Cmd2,标题分别为“读入数据”和“排序显示保存”,如图5-6所示。程序运行后,如果单击“读入数据”按钮,则读入in.txt文件中的100个整数,放入一个数组中(数组下界为1):如果单击“排序显示保存”按钮,则对这100个整数按从大到小进行排序,把排序后的全部数据在文本框Text1中显示出来,然后存入考生文件夹的out.txt文件中。  (考生文件夹下的标准模块model.bas中的putdata过程可以把指定个数的数组元素存入out.txt文件。)
注意:文件必须存放在考生文件夹下,窗体文件名为sjt5.frm,工程文件名sjt5.vbp,排序结果存入out.txt文件中,否则没有成绩。

选项

答案在窗体上建立好控件后,先设置控件属性,再编写事件过程。 文本框显示的内容由Text属性设置:按钮的标题由Caption属性设置,单击命令按钮触发Click事件:在本题中涉及到文件的操作,读入顺序文件以顺序的方式打开,用Input#语句读取数据,另外需要注意的是对文件操作完后,一定要关闭文件。排序的方法有多种,如冒泡排序、选择排序等,本题用的是选择排序法。 选择法排序的思想是:每一次循环从数组的n-i+1(I=1,2,…,n-1)个元素中选择一个值最小的元素与你n-i+1个元素的前面那个元素交换位置,即与整个数组的第i个位置的元素交换位置。如此下去,直到i=n-1时,排序结束。解题步骤: 第一步:建立界面并设置控件的属性。程序中用到的控件及其属性见表5-5。 [*] 第二步:编写程序代码。 程序提供的代码。 model.bas代码: Sub putdata(a() As Integer,n As Integer) Dim sFile As String sFile ="\out.txt" Open App.Path & sFite For Output As #1 For i= 1 To n Print #1, a(i) ; Next Close #1 End Sub 窗体代码: Option Explicit Dim i(1 To 100) As Integer Private Sub Cmd1_ Click() Dim j As Integer Open App.Path&"\in.txt"For Input As #1 ’ For j = ? To 100 Input #1, i(j) Text1.Text = Text1.Text & i(j) & Space(5) Next Close #1 End Sub Private Sub Cmd2_Click() Dim j As Integer Dim k As Integer Dim temp As Integer Dim flag As Boolean For j = 1 To 100 ’flag = ? For k = 1 To 100 - j If i(k) > i(k + 1) Then temp = i (k) i(k) = i(k + 1) i(k + 1) = temp flag = True End If IQ If Not flag Then Exit For End If Next Text1.Text = "" For j = 1 To 100 Text1.Text = Text1.Text & i(j) & Space(5) Next putdata i, 100 End Sub 参考代码: Option Explicit Dim i(1 To 100) As Integer Private Sub Cmd1_Click() Dim j As Integer Open App. Path& "\in.txt" For Input As #1 For j = 1 To 100 Input #1, i(j) Text1.Text = Text1.Text & i(j) & Space(5) Next Close #1 End Sub Private Sub Cmd2_Click() Dim j As Integer Dim k As Integer Dim temp As Integer Dim flag As Boolean For j = 1 To 100 flag = False For k = 1 To 100 - j If i(k) < i(k + 1) Then temp = i (k) i(k) = i(k + 1) i(k + 1) = temp flag = True End If Next If Not flag Then Exit For End If Next Text1.Text = "" For j = 1 To 100 Text1.Text = Text1.Text & i(j) & Space(5) Next putdata i, 100 End Sub 第三步:调试并运行程序。 第四步:按题目要求存盘。

解析
转载请注明原文地址:https://kaotiyun.com/show/Jh1p777K
0

最新回复(0)