阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面的程序演示了根据随机产生的奖牌数,生成金银奖牌榜的过程。程序使用的排序法是简单排序法。以金牌得数为例,其思想是选择最大的元素,将它交换到最前面;然后对

admin2009-02-15  40

问题 阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
[说明]
   下面的程序演示了根据随机产生的奖牌数,生成金银奖牌榜的过程。程序使用的排序法是简单排序法。以金牌得数为例,其思想是选择最大的元素,将它交换到最前面;然后对剩下的部分采用同样的方法,直到全部排序完成。
          
   程序界面中,左右两个文本框分别用于存放随机产生的奖牌数以及生成的奖牌榜,名为Text1和Text2,上下两个按钮分别名为Command1和Command2。代码中使用的量主要有:一维数组 cntries,用于存储10个国家的名称,二维数组medals,其元素medals(i,0)和medals(i,1)分别用于存放第i个(i从0开始)国家的金、银牌数目。
[Visual Basic代码]
Dim cntries(10) As String, medals(10,2) As Integer
’随机产生奖牌数
Sub newMedals()
    ……           ’为数组cntries和medals赋值
End Sub
’输出奖牌榜
Sub printOut(txt As  (1)  )
   Dim strResuh As String, i As Integer
   strResult=“国家”& Chr(9) &“金牌数”& Chr(9) &“银牌数”& vbCrLf
   For i=0 To 9
   strResult = strResult & cntries(i) & Chr(9) & medals(i,0) & Chr(9) & medals(i,1) & vbCrLf
   Next
   txt.Text = strResult
End Sub
’交换两变量的值
Sub exchange(  (2)  a As Variant,    (2)  b As Variant)
    Dim temp As Variant
    temp = a:   a = b:   b = temp
End Sub
’随机产生并输出奖牌数
Private Sub Command1_Click()
   newMedals
   printOut Text1
End Sub
’生成并输出奖牌榜
Private Sub Command2_Click()
    Dim i,j, k As Integer, temp As String
    For i = 0 To 9              ’按金牌数排序
         j = i                  ’找到自第i个位置起全部数据中金牌得数最多者,记其下标为j
         For k = i + 1 To 9
              If  (3)   Then j=k
         Next
         If i < > j Then        ’若i,j不等,则交换对应位置的国家名、金银牌数目
              exchange cntnes(i), entries(j)
              exchange medals(i, 0), medals(j, 0)
              exchange medals(i, 1), medals(j, 1)
         End If
    Next
    For i = 0 To 9       ’按银牌数进行二次排序
         j = i
         For k = i + 1 To 9
              If medals(k,0) <> medals(j, 0) Then  (4)  
              If  (5)   Then j = k
         Next
         If i < > j Then
              exchange cntries(i), cntries(j)
              exchange medals(i, 1), medals(j, 1)
         End If
    Next
    printOut Text2
End Sub

选项

答案(1) TextBox (2) ByRef (3) medals(k,0) > medals(j,0) (4) Exit For (5) medals(k,1)>medals(j,1)

解析 (1)由printOut过程中“txt.Text”及按钮单击事件中调用语句“printOut Text1”可知,txt是一个文本框控件(TextBox)类型的参数;
(2)过程exchange的作用是交换两个参数的值,因此参数调用方式应为传址调用;
(3)此处,仅当第k个国家金牌数大于第j个国家金牌数,即medals(k,0)>medals(j,0)时,才需要更新j的值;
(4)由于金牌数已按降序排列,medals(k,0)<>medals(j,0)表明第k个位置及以后各国家的金牌数都小于第j个国家金牌数。而对银牌二次排序时,只需要考虑金牌数相同的情形,因此此处应即刻退出For循环;(5)参考(3),此处是比较银牌数,仅当第k个国家银牌数人于第j个国家银牌数,即medals(k,1)>medals (j,1)时,才需要更新j的值。
转载请注明原文地址:https://kaotiyun.com/show/hojZ777K
0

最新回复(0)