1. 根据某场馆一天中每位参观者的进馆和出馆时间,可统计该场馆当天人流量的分布情况。每个人进、出馆的时间用一个长度为11的字符串表示,例如“08:05-08:45”表示进馆时间为8点5分,出馆时间为8点45分。现要求统计当天馆内人数超过指定人数的总时长。

根据上述要求编写VB程序,功能如下:读取n个人进,出馆的时间,显示在列表框List1中。程序运行时,在文本框Text1中输入指定人数,单击“统计”按钮Command1,在标签Label1中显示馆内人数超过指定人数的总时长。程序运行界面如图所示.

(1) 在VB表达式Val(Text1.Text)中,Val、Text1、Text依次表示(单选,填字母:A .方法名、属性名、事件名/B .函数名、对象名、方法名/C .函数名、对象名、属性名)。
(2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

Const n = 800

Dim d(1 To n)As String,a(1 To 2 * n)As String

Private Sub Form_Load( )

    ‘读取n个人进、出馆的时间,存入数组d并显示在列表框List1中,代码略

End Sub

Private Sub Command 1_ Click( )

    Dim i As Integer,j As Integer,k As Integer,sp As Integer

    Dim t As Integer,cnt As Integer,mts As Integer,sum As Integer

    Dim s As String

     ‘提取每个人的进、出馆时间,分别加上IN、OUT标记后存入数组a

    For i = 1 To n

        a(i)=Mid(d(i),1,5)+“IN”

         = Mid(d(i),7,5)+“OUT”

    Next i

    For i = 1 To 2 * n-1    ‘对数组元素a(1)到a(2*n)从小到大排序

       

        For j = i To 2 * n-1

            If a(j) < a(k) Then k = j

        Next j

        s = a(i):a(i) = a(k):a(k)=s

    Next i

    sp =Val(Text1.Text)

    t=-1:cnt=0:sum=0

    For i = 1 To 2 * n

        mts=Val(Mid(a(i),1,2))*60+Val(Mid(a(i),4,2))

        If Mid(a(i),6,2)=“IN” Then cnt = cnt + 1 Else

        If cnt > sp Then

            If t = -1 Then t = mts

        ElseIf t > -1 Then

           

            t=-1

        End If

    Next i

    Label1.Caption = “超过指定人数的总时长:”+Sir(sum)+“分钟”

End Sub

(3) 程序中加框处代码有错,请改正。
【考点】
类、对象、属性、方法、事件和事件处理的概念及应用; 排序算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
换一批
1. 小李要编写一个文艺汇演节目的计分系统。有m位评委给n个节目打分,采用100分制,0分表示放弃评分。计分方式为:不计0分,求去掉一个最高分和一个最低分后的平均分,最后从高到低输出成绩。编写VB程序,实现上述功能。运行程序时,在列表框List1中显示n个节目的m个分数,单击“计算”按钮Command1,在列表框List2中显示n个节目的最终得分。程序界面如图所示。

(1) 分析语句Private Sub Command1_Click(),其中Command1、Click、Command1.Click依次表示为(单选,填字母: A .对象名、属性名、过程名/ B .对象名、方法名、过程名/ C .对象名、事件名、过程名)。
(2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

'n和m是常量,分别表示节目数和评委数,代码略

Dim df(1 To m * n) As Integer

Private Sub Form Load()

'从数据库中读取n个节目的m个评委的评分、依次存入数组df中,并显示在List1中,代码略。

End Sub

Private Sub Command1_ Click ()

    Dim i As Integer, j As Integer, cnt As Integer

    Dim sum As Integer, max As Integer, min As Integer

    Dim index(1 To n) As Integer, score(1 To n) As Single

    For i=1 To n

        x=(i-1)*m+1

        y=i*m

        sum=0:cnt=0

        For j=x To y

           If df(j)=0 Then cnt=cnt+1

           sum =

        Next j

        max = df(x): min = df(x)     '统计每个节目的最高分与最低分

        For j=x+1 To y

           If df(j) > max Then max = df(j)

           If df(j)<>0And()Then min=df(j)

        Next j

        If cnt<m-2 Then score(i)=

        index(i) = i

    Next i

    For i=1 To n

        For j=nToi+1Step -1

            If  Then

                t = index(j): index(j) = index(j- 1): index(j- 1) = t

            End If

        Next j

    Next i

    For i=1 To n

        List2.AddItem"节目" & index(i) & "得分:" & Int (score (index(i))*100)/100

    Next i

End Sub

(3) 程序中加框处代码有错,请改正。
综合题 困难
2. 某玩具厂的生产流水线上有道工序,需要使用机械臂对n根长方体木块材料进行自动化排序。排序步骤为:从左起第一个木块开始向右寻找长度最短的,如果木块长度相同,则选择其中厚度较小的记录其位置R1 (不考虑长度及厚度均相同的情况),然后对区间[1,R1]内的木块进行整体翻转。再从第二个木块向右继续寻找,并记录其位置R2,然后对区间[2,R2]的木块进行整体翻转……机械臂循环操作,直至排序完成。排序过程如图a所示,其中⑦的厚度小于⑤的厚度。

根据.上述要求设计VB程序,功能如下:在窗体加载时,读取木块长度和厚度数据,并显示在列表框List1中,单击“排序”按钮实现木块排序,结果显示在列表框List2中,程序运行界面如图b所示。

(1) 代码Private Sub Com1_ Click ()中的Com1_Click()属于            (单选,填字母)。 A. 对象名 B. 事件名 C. 类别名 D. 事件处理过程名
(2) 实现上述功能的VB代码如下,请在划线处填写合适的代码。

Const n = 10

Dim cd(1 To n) As Single, hd(1 To n) As Single

Private Sub Form_ Load()

    '通过数据库读取n根木块的长度数据存储到cd数组,厚度数据存储到hd数组,并将数据显示在列表框List1中,代码略

End Sub

Private Sub Com1_Click()

    Dim L As Integer, R As Integer

    Dim min As Integer

    Dim i As Integer, j As Integer

    Dim t1 As Single, t2 As Single

    For i=1 To n-1

        min=i

        For j=i+1 To n

            If  Then min= j

        Next j

        R=min

        

        '实现区间内木块的整体翻转

        Do While L<R

            t1 = cd(L): cd(L) = cd(R): cd(R) = t1

            t2 = hd(L): hd(L) = hd(R): hd(R) = t2

            L=L+1

            

        Loop

    Next i

    List2. AddItem"长度(cm)"+""+"厚度(cm)"

    For i =1 To n

        List2. AddItem Str(cd(i)) +"" + Str(hd(i))

Next i

End Sub

(3) 程序中加框处代码有错,请改正。
综合题 普通
3. 有n个成员共同参加了一项活动,每个人获得一个积分值和一个权值,并且用这个积分值和权值的积作为该成员的最终得分。数组a中存储了这n个成员的积分和权值,其中奇数位置存储积分,偶数位置存储权值,数组存储结构如图a所示:

图a

小明同学使用VB编写了一个最终得分处理程序,对上述n个成员按最终得分进行降序排序,并计算出最终得分的中位数(中位数:把所有观察值排序后,正中间的一个即为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数)。程序运行界面如图b所示:

图b

(1) 语句 List1.Clear中的“Clear”是(单选,填字母:A .对象名 / B .属性名 / C .方法名)。
(2) 实现上述功能的 VB 程序如下,请在划线处填入合适的代码。

Const n = 11

Dim a(1 To 2 * n) As Single

Private Sub Form_Load()

'读取初始数据,存储在数组a,并显示在列表框 List1 中。代码略

End Sub

Private Sub Cmd_sort_Click()

Dim i As Integer, j As Integer, shift As Integer Dim t As Single, zws As Single

i = 2

Do While

shift = n

For j =

If a(2 * j) * a(2 * j - 1) > a(2 * j - 2) * a(2 * j - 3) Then

t = a(2 * j): a(2 * j) = a(2 * j - 2): a(2 * j - 2) = t

t = a(2 * j - 1): a(2 * j -1) = a(2 * j - 3): a(2 * j - 3) = t

End If

Next j

i = shift

Loop

If n Mod 2 = 1 Then  zws = a(n) * a(n + 1)

Else

zws = () / 2

End If

'在列表框 List1 中输出处理后数据的排序结果,代码略Label1.Caption = "最终得分的中位数是:" + Str(zws)

End Sub

(3) 程序中加框处代码有错,请改正。
综合题 普通