问答题 在考生文件夹下有一个工程文件sjt5.vbp,其功能是:
①单击“读数据”按钮,则将考生文件夹下in5.dat文件中的100个正整数读入到数组a中,同时在Text1文本框中显示。
②单击“分组”按钮,则将数组a中所有3的倍数的元素存入数组b中,并对数组b中的元素按升序排序后显示在文本框Text2中。
在给出的窗体文件中已经有了全部控件(如图所示),但程序不完整。
要求:编写适当的程序部分使其实现上述功能。
注意:考生不得修改窗体文件中已经存在的控件和程序,在结果程序运行之前,必须先执行“分组”操作,然后再用窗体右上角的关闭按钮结束程序,否则将没有成绩。最后,程序按原文件名进行存盘。
【正确答案】[解题思路] 单击“读数据”按钮,运用文件操作把考生文件夹下in5.dat文件中的100个正整数读入数组a中,同时显示在Text1文本框中;并运用Space函数使数值之间空一个格,在Command2 Click事件过程中,判断Len(Text1. Text)是否为0,如果为0,弹出MsgBox对话框“请先执行‘读数据’功能!”,然后进行分组排序处理,首先通过循环判断数组a中所有3的倍数的元素,并把该元素存入数组b中,运用冒泡排序对数组b中的元素从小到大排序后显示在文本框Text2中。
[操作步骤]
步骤1:打开本题工程文件。
步骤2:分析并编写程序代码。
程序提供代码
Option Base 1
Dim a(100) As Integer, num As Integer
Private Sub Command1_Click( )
Dim k As Integer
Open App. Path & " /in5.dat" For Input As # 1
Fork=1 To 100
Input # 1, a(k)
Text1 = Text1 + Str( a(k) ) + Space(1)
Next k
Close # 1
End Sub
Private Sub Command2_Click( )
Dim b(100) As Integer
num = 0
If Len ( Text1. Text) = 0 Then
MsgBox "请先执行‘读数据’功能!"
Else
'考生编写(功能:生成b数组,且按从小到大顺序排序)
'注意:请务必将数组b的元素个数存入变量num中
'以下程序段将已排序的b数组显示在Text2中
For i=1 To num
Text2. Text = Text2. Text +Str( b (i)) + Space (2)
Next i
End If
End Sub
Private Sub Form_Unload( Cancel As Integer)
Open App. Path & "/out5.dat" For Output As # 1
Print # 1, Text2. Text
Close # 1
End Sub
程序结束
参考答案
n=0
For k=1 To 100
If a(k) Mod3 = 0 Then
num = num + 1
b(num) = a(k)
End If
Next k
For i=1 To num
f = True
For j=1 To num - 1
If b(j) > b(j+1) Then
t =b(j)
b(j) =b(j+1)
b(j +1) =t
f = False
End If
Next j
If f Then
Exit For
End If
Next i
步骤3:调试并运行程序,关闭程序后按题目要求存盘。
答案考生文件夹
【答案解析】