当前位置: 高中信息技术 / 综合题
  • 1. (2020高三上·湖州月考) 现有n*n大小的网格(n≤10),每个格子从左到右、从上到下编号依次编号为1、2、3„„n*n,当n为3时,网格如图a所示。网格中每个格子都有一面沿对角线方向放置的挡板,且朝向随机。现将一个小球从左上角1号格子自上而下射入网格,则小球将在网格中不断反弹(不考虑实际的能量损失与重力影响等因素),最终从某个格子离开网格,根据挡板的朝向与小球的运动方向,将有几种不同的反弹情况。如图b所示,小球进入网格后,先后经过1、2、5、6、3号格子,之后离开网格。

    编写VB程序,功能如下:在文本框Text1中输入n的值,单击“生成”按钮Command1,

    生成网格和随机的挡板,并输出。然后单击“开始”按钮Command2,在文本框Text2中显示小球进入网格后的运动路径。程序中利用数组a存储网格的状态,其中“/”与“\”两种字符表示两种朝向的挡板。程序运行界面如图c所示。


    图 c

    请回答下列问题:

    1. (1) 要使程序运行时,窗体标题显示“网格弹球”,可在Form_Load 事件过程中添加语句(单选,填字母:A . Form1 = "网格弹球" / B . Forml.Text="网格弹球"/ C . Form1.Caption="网格弹球")。
    2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

      Dim n As Integer

      Dim a(0 To 100) As String

      Private Sub Command1_Click()      '生成网格和挡板

      n = Val(Text1.Text)

      '生成 n*n 的网格和随机的挡板,并通过图形控件输出,代码略

      End Sub

      Private Sub Command2_Click()

      Dim ans As String, pre As String

      Dim cur As Integer

      cur = 1:  : ans = ""

      Do While cur >= 1 And cur <= n * n

       ans = ans + Str(cur) + "→"

      If pre = "左" And a(cur) = "\" Or pre = "右" And a(cur) = "/" Then

       cur = cur + n: pre = "上"

       ElseIf  Then

       cur = cur - n: pre = "下"

      ElseIf pre = "上" And a(cur) = "\" Or pre = "下" And a(cur) = "/" Then

       If cur Mod n = 0 Then

       Exit Do

       Else

       cur = cur + 1: pre = "左"

       End If

      ElseIf pre = "上" And a(cur) = "/" Or pre = "下" And a(cur) = "\" Then

       If   Then

       Exit Do

       Else

       cur = cur - 1: pre = "右"

       End If

       End If

      Loop

      Text2.Text = ans + "离开"

      End Sub

    3. (3) 程序中加框处代码有错,请改正。

微信扫码预览、分享更方便