1. 某玩具厂的生产流水线上有道工序,需要使用机械臂对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) 程序中加框处代码有错,请改正。
【考点】
类、对象、属性、方法、事件和事件处理的概念及应用; 排序算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 普通
能力提升
真题演练
换一批
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个成员共同参加了一项活动,每个人获得一个积分值和一个权值,并且用这个积分值和权值的积作为该成员的最终得分。数组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) 程序中加框处代码有错,请改正。
综合题 普通
3. 使用如图a所示的九宫格键盘输入单词,每个单词对应一个按键组合,如“tree对应的按键组合为“8733”;而按键组合“8733”对应的单词有“tree”、“used”等。抽取n个英文单词(可重复),使用九宫格键盘输入,统计最频繁使用的按键组合。

编写VB程序,实现上述功能。运行程序,在列表框List1中显示n个英文单词(单词仅由小写字母组成且字母个数至少为1),单击“统计”按钮Command1,在列表框List2升序显示全部单词的按键组合,在文本框Text1中显示最频繁使用的按键组合,若有多个,则全部输出。程序运行界面如图b所示。

(1) 下列类中生成的对象具有Text属性的是 (单选,填字母: A . Label / B . TextBox/ C . CommandButton )。
(2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

'n为常量,代码略

Dim a(1 To n) As String       '数组a存储所有单词

Dim b(1To2*n) As String       '数组b存储转换后的按键组合

Private Sub Form_ Load()

    '读取所有单词存入数组a,并显示在列表框List1中

    '初始化数组b各元素为空字符串,代码略

End Sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, k As Integer, p As Integer, max As Integer

    Dim m As Integer, key As String, t As String, s1 As String, s2 As String

    key= 222334455566677889999      'key 表示a-z各个字母所对应的键盘数字

    max=0

    '以下代码实现将数组a中的每个单词转化成按键组合,并依次存入数组b中

    For i= 1 To n

        t= ""

        For j= 1 To Len(a(i))

            m = Asc(Mid(a(i), j, 1))- Asc("a")

            t=

        Next j

        b(i)= t

    Next i

    '以下代码实现对数组元素b( 1)~b(n)升序排序

   

    Do While i>=1

        For j= 1 To i

            If b(j+ 1)< b(j) Then

                t=b(j+ 1): b(j+ 1)= b(j): b(j)=t

            End If

        Next j

        i=i- 1

    Loop

    '将排序后数组元素b(1)~b(n)显示在列表框List2中,代码略

    s1= b(1)

    p=n+ 1

    i= 1:j= 2

    Do While j<= n      '从数组元素b(n+1)开始存储最高频次的按键组合

        s2 = b(j)

        If s1 < s2 Then

            If  Then

               max=j-i

               p=n+ 1

               b(p)=s1

            Else If max=j- i Then

                p=p+ 1

                b(p)= sl

            End If

            s1= s2

           

        End If

        j=j+ 1

    Loop

    t=""

    If max<j- i Then

        t= s1

    Else

        For k=n+ 1 To p

            t=t+ b(k)+" "

        Next k

        If max=j- I Then t=t+" "+s1

    End If

    Text1.Text= "最频繁按键组合为: " &t

End Sub

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