题目

某志愿服务APP用于整理浙江省内各城市志愿者服务工作情况,每个志愿者的数据用一个长度为8的字符串表示,例如“6 YFH 5 ”,6表示城市序号,YFH为志愿者姓名字母编写,5为参加志愿者服务次数。整理要求:先按城市序号从小到大排列;然后,同一城市的志愿者按参加志愿服务的次数降序排列。按上述要求,编写VB程序,功能如下:在列表List1中显示整理前的数据,单击“整理”按钮Command1,整理结果显示在列表框List2中,程序运行界面如图所示。 (1) 在VB表达式Command1_Click()中,Command1、Click、Command1_Click()依次表示(单选,填字母:A .方法名、属性名、事件名/B .对象名、事件名、事件处理过程名/C .函数名、对象名、方法名) (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。 Const nc=10    '城市数 Const n=200000'志愿者总人数 Dim a(1 To n) As String'存储志愿者数据 Private Sub Form_Load()     '本过程读取志愿者数据,存入数组a并显示在列表框List1中,代码略 End Sub Private Sub Command1_Click() Dim city(1 To n) As Integer,pname(1 To n) As String,cs(1 To n) As Integer     Dim t As Integer,t1 As String     Dim b(1 To nc) As Integer           '存储每个城市的报名人数     Dim index(1 To n) As Integer          '定义索引数组     For i = 1 To n city(i) = Val(Mid(a(i), 1, 1))         pname(i) =         cs(i) = Val(Mid(a(i), 7))     Next i     i = 1                '按城市序号升序排序     Do While i < n         k = i: i = n         For j = n To k + 1 Step -1 If city(j) < city(j -1) Then t = city(j): city(j) = city(j -1): city(j -1) = t                 t1= pname(j): pname(j) = pname(j -1): pname(j -1) = t1                 t = cs(j): cs(j) = cs(j -1): cs(j -1) = t                              End If         Next j     Loop     For i = 1 To n                 index(i) = i     Next i     pos = 1       '相同城市志愿者按服务次数降序排序     For i = 1 To nc         For j = pos To pos + b(i) -2             k = j             For p = j + 1 To                 If cs(index(p)) > cs(index(k)) Then k = p             Next p             t = index(j): index(j) = index(k): index(k) = t         Next j         pos = pos + b(i)     Next i     '最终结果显示在列表框List2中,代码略 End Sub (3) 程序中加框处代码有错,请改正。 答案: 【1】B 【1】Mid(a(i), 3, 3)【2】i=j【3】pos+b(i)-1 b(city(i)) = b(city(i)) + 1
信息技术 试题推荐
最近更新