【说明】
已知窗体上有两个名为cmdGene和cmdSort的命令按钮。单击cmdCene按钮时,随机产生10个[1,100]范围内的整数并将它们放在数组intA中;单击cmdSort按钮时,用选择法排序这10个数并输出。
【程序代码】
Dim intA(1 To 10)As integer
Private Sub cmdGene_Click( )
Dim intl As Integer
Randomize
For intl = 1 To 10
intA(intl) = (1)
Next intl
End Sub
Private Sub cmdSort_Click( )
Dim intl, intJ,intMin, intTemp As Integer
For intl = 1 To 9
intMin = intA(intl)
For intJ= (2) To 10
If intA(intJ) < intMin Then
Temp = intA(intJ)
intA(intJ)= (3)
intMin = intTemp
End If
Next intJ
(4)
(5)
For intl = 1 To 10
Print Str(intA(intl))+" ";
Next intl
Next lntl
Print
End Sub
参考答案:(1)1+int(rnd*100) (2)intI+1 (3)intMin
(4)intA(intI)=intMin (5)Next intI
解析: 根据题意,第一个空应该是产生10个[1,100]范围内的随机整数,因此填“1+int(rnd*100)”。
选择排序思想是:第i趟排序开始时,当前有序区和无序区分别为 R[1..i-1]和R[i..n](1≤i≤n-1),该趟排序则是从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n)分别变为新的有序区和新的无序区。因为每趟排序均使有序区中增加了一个记录,且有序区中的记录关键字均不大于无序区中记录的关键字,即第i趟排序之后R[1..i].keys≤R[i +1..n].keys,所以进行n-1趟排序之后有R[1..n-1].keys≤R[n]. key。也就是说,经过n-1趟排序之后,整个文件R[1..n]递增有序。因此(2)空填“intI+1”;If intA(intJ)<intMin Then后的3条语句是实现数intA(intJ)与intMin的交换,因此(3)空填“intMin”;(4)空是实现最小数与无序区的第1个数交换,因此填“intA(intI)=intMin”;(5)空是循环结束语句,填“Next intI”。