试题

试题 试卷

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中显示的结果为
举一反三
由n行数字组成的数字三角形如图所示。设计一个算法,对于由n行数字组成的数字三角形(数字范围[1,50],计算从三角形的顶至底的路径经过的数字和的最大值,每一步可以从当前点走到左下方的点也可以走到右下方的点。

寻求路径最大值的算法设计如下:

按三角形的行划分,若有n行,则有n-1个步骤

①从底层开始,本身数即为最大值

②倒数第二层的计算取决于底层的数据:

12+6=18,13+14=27,24+15=39,24+8=32;

③倒数第三层的计算取决于底二层的数据:

27+12=39,39+7=46,39+26=65;

④倒数第四层的计算取决于底三层的数据:

46+11=57,65+8=73;

④最后的路径:13—8—26—15—24其和为86。

根据上述算法描述,设计程序界面如下图所示,点击“生成金字塔”按钮,在列表框中生成数字金字塔,点击“寻求路径最大值”按钮,在文本框text1中输出最大值。

依据上述描述设计如下VB程序:

Const n = 5

Dim sx As String

Dim i, j, k, a(1 To 100) As Integer Private Sub Command1_Click() List1.Clear

For i = 1 To n For j = 1 To i

    ①  

sx = sx + Str(a((i - 1) * n + j)) Next j

For k = n To i Step -1 sx = " " + sx

Next k List1.AddItem sx sx = ""

Next i End Sub

Private Sub Command2_Click() For i = n To 1 Step -1

For j = 2 To i

If    ②   Then

a((i - 2) * n + j - 1) = a((i - 1) * n + j - 1) + a((i - 2) * n + j - 1)

Else

a((i - 2) * n + j - 1) = a((i - 1) * n + j) + a((i - 2) * n + j - 1)

End If Next j

Next i

    ③  

End Sub

请回答下列问题:

返回首页

试题篮