试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省“七彩阳光”2020届新高考研究联盟高三信息技术12月适应性考试试卷

已知数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。小王设计了一个模拟碰撞的小球的程序,其功能为:在文本框Text1、Text2和Text3中分别输入线段长度L、小球数量n以及运动时间t,在文本框Text4中输入n个小球的初始坐标位置,单击“求解”按钮Command1,计算t秒之后,各个小球的位置,并在标签框Label5上显示结果。

(1)、实现上述功能的VB 程序如下,请在划线处填入合适代码。

Private Sub Command1_Click()

    Dim n As Integer, L As Integer, t As Integer

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

    Dim s As String, result As String

    Dim a(1 To 50) As Integer, dir(1 To 50) As Integer

    L = Val(Text1.Text): n = Val(Text2.Text): t = Val(Text3.Text) s = Text4.Text

    s = s + ".": tmp = 0: k=0

    For i = 1 To Len(s)

        ch = Mid(s, i, 1)

        If ch >= "0" And ch <= "9" Then

            tmp = tmp * 10 + Val(ch)

        Else

            k = k + 1

            a(k) = tmp: dir(k) = 1

            tmp = 0

        End If

    Next i

    For i = 1 To t

       For j = 1 To n

            IfThen dir(j) = -dir(j)

            Else

                For c = 1 To n

                    IfThen dir(c) = (-1) * dir(c)

                    dir(j) = (-1) * dir(j)

                End If

            Next c

        End If

       

    Next j

    Next i

    For i = 1 To n

        result = result + Str(a(i))

    Next i

    Label5.Caption = Str(t) + "秒后小球的位置为:" + result

End Sub

(2)、若文本框Text3中输入的内容为“4”,单击“求解”按钮后,在标签框Label5中显示的结果为
举一反三
从产品库里面的product数据表中读出产品信息(ID,类别,产品名,图片路径,格式5个字段)。已知product表中已经按ID排序,读出后的数据直接连接成字符串在List1中显示,现在希望能不改变原有列表顺序的情况下,在list2中显示按产品名排序的结果。一般的方法是按产品名建立索引(不存在重复的产品名)。基本思路如下:

⑴用一个数组product()来存放产品名。

⑵用另一个数组a()来存放产品名数据的下标(已经按产品名排序的)。

按产品名排序的方法是:取第一个产品名product(0),与后面所有的产品名比较一遍,如果有比第一个产品名大的,M+1,M用来计该产品名的位次。一轮结束后在a(M)元素记下第一个产品名的下标0。然后再取product(1)与其它所有产品名比较一遍,其余同第一个产品名。依次完成每一个产品名位次的计算并记录在a()数组中。

⑶最后按a()数组指定的位置取出list1中的项添加到list2中。

程序代码如下,请补充完整下面的空缺。

Dim products(100) As String  '存放产品名的数组

Dim num As Integer          '从数据库中读出的记录数

Private Sub Command1_Click()

Dim a(100) As Integer           '存放按产品名索引的产品数组下标

Dim i As Integer, j As Integer, m As Integer    'm比当前产品名大的产品名个数

For i = 0 To 100

    a(i) = 0

Next i

For i = 0 To num

   m = 0

   For j = {#blank#}1{#/blank#} 

     If i <> j And products(i) > products(j) Then m = m + 1

   Next j

   {#blank#}2{#/blank#} 

Next i

For i = 1 To num

 List2.AddItem  {#blank#}3{#/blank#}     '按a数组的索引从list1中取出项添加到list2

Next i

End Sub

Private Sub Form_Load()

Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

Dim s As String, i As Integer

conn.ConnectionString = "provider=microsoft.ace.oledB.12.0;data source=" & App.Path & "\产品库.accdb "

conn.Open

Set rs.ActiveConnection = conn

rs.Open "select * from product"

num = 0

Do While Not rs.EOF And num <= 100

    s = ""

    For i = 1 To 5

     products(num) = rs.Fields(2)           '读出当前记录的产品名保存到products数组

     s = s & rs.Fields(i - 1) & " ,"        '将一条记录的各字段内容连接成字符串

    Next i

    List1.AddItem s

    {#blank#}4{#/blank#}

    num = num + 1

 Loop

 num = num - 1

 rs.Close

 conn.Close

 Set rs = Nothing

 Set conn = Nothing

End Sub

返回首页

试题篮