1. 大家期盼的校运会要来了,同学们踊跃报名,共有20人报了100米,30人报了200米。小明编写了一个VB程序,用于查询同时报名参加100米和200米比赛的学生,并统计学生数。具体功能如下:程序运行时,在列表框List1中显示报100米的学生学号和姓名,在列表框List2中显示报200米的学生学号和姓名,单击“排序”按钮Command1后,将List2中数据按“姓名”升序排序,并将排序后的数据重新显示在列表框List2中;单击“查询并统计”按钮Command2后,在列表框List3中显示同时报名参加100米和200米比赛的学生信息,并在该列表框的最后显示同时报名这两项比赛的学生数。程序运行界面如下图所示:

为实现上述功能的程序如下,请在划线处填入合适的语句或代码。

Dim xm1(1 To 20) As String, xh1(1 To 20) As String′数组xm1、xh1分别存储选报课程1的学生的姓名和学号

Dim xm2(1 To 30) As String, xh2(1 To 30) As String′数组xm2、xh2分别存储选报课程2的学生的姓名和学号

Const n = 20, m = 30

Private Sub Form_Load()

    '获取选报数据,并显示在列表框List1和List2中

    '代码略

End Sub

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, tt As String

    List2.Clear

    For i = 1 To m - 1

        For j =Step -1

            If xm2(j) < xm2(j - 1) Then

                tt = xm2(j): xm2(j) = xm2(j - 1): xm2(j - 1) = tt

                tt = xh2(j): xh2(j) = xh2(j - 1): xh2(j - 1) = tt

            End If

        Next j

    Next i

    For i = 1 To m

        List2.AddItem xh2(i) + “  ” + xm2(i)

    Next i

End Sub

Private Sub Command2_Click()

    Dim i As Integer, j As Integer, w As Integer, tt As String, k As Integer

    For i = 1 To n

        p = 1

        

        Do While p <= q

            w = (p + q) \ 2

            If xm1(i) = xm2(w) Then

                List3.AddItem xh1(i) + “ ” + xm1(i)

                k = k + 1

            End If

            If Then

                q = w - 1

            Else

                p = w + 1

            End If

        Loop

    Next i

    List3.AddItem “共有” + Str(k) + “ 位同学”

End Sub

【考点】
查找算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
变式训练
拓展培优
真题演练
换一批
2. 对分查找算法可用于求解方程的近似值。现要求方程x3-4x2+x+5=0的一个近似值,可设f(x)= x3-4x2+x+5,若有区间[a,b],使f(a)与f(b)异号,则该区间内必存在该方程的一个解。小明为此编写了VB程序,功能如下:程序运行时,在文本框Text1、Text2中输入区间值a、b,要求a<b,单击“计算”按钮Command1,若该区间有解,则计算出该区间内的一个近似值(精确到0.00001),否则提示“请重新输入区间”,计算后的相关结果显示在列表框List1中。程序运行效果如下图所示。

实现上述功能的VB程序如下,请在划线处填入合适的语句。

Function f(x As Double) As Double

    Dim y As Double

    

    f = y

End Function

Private Sub Command1_Click()

    Dim a As Double, b As Double, m As Double, x As Double

    a = Val(Text1.Text)

    b = Val(Text2.Text)

    If f(a) * f(b) < 0 And a < b Then

        Do While a <= b

            

            If Abs(f(m)) < 0.00001 Then Exit Do

            If  Then

                b = m

            Else

                a = m

            End If

        Loop

        x = Format(m, “0.00000”) ′Format函数用于定义输出的小数位数

        List1.AddItem “[” & Text1.Text & “,” & Text2.Text & “]” & “解为:” & x

    Else

        List1.AddItem “[“ & a & ”,“ & b & ”]” & “请重新输入区间”

    End If

End Sub

综合题 普通