题目

某影厅共12排,每排10座。座位编号以排号+座号来命名,如第10排3座,编号命名为103。该影厅的最佳观影区为方框内的座位,即第5排3座~第10排8座的矩形位置。0表示该座位可选,非0表示已售(1表示系统推荐,2表示手工选择) 座位推荐算法: 1)只推荐最佳观影区的座位,从前往后,优先选择最中间的位置,若找到最中间位置,则推荐,否则继续寻找下一排,以此类推; 2)购票数为1时,推荐单个靠中间的位置,大于1时,只推荐连续的座位; 3)若在最佳观影区内未找到可以推荐的座位时,系统将提示手工选择。编写VB程序,模拟电影院选座。在文本框Text1中输入购票数,单击“选座”按钮Command1,在标签Labe12中显示机选座位。程序运行界面如图所示。 (1) 该影厅空座情况不变如上图所示,若购票数由2改为1,则推荐的座位编号为。 (2) 实现上述功能的VB程序如下,请在划线处填写合适的代码。 ConstC=10:ConstR=12    '每排10座,共12排 Dim zw(1 To C * R) As Integer, kzw(1 To C * R) As Integer      '座位,空座位 Private Sub Form_ Load ()     '读取影厅座位数据存入数组zw,并将座位信息显示在列表框list1中,代码略 End Sub Private Sub Command1_Click ()     Dim i As Integer, j As Integer, k As Integer     Dim x As Integer, min As Integer, start As Integer     Dim m As Integer, n As Integer, ans As String     m = Val (Text1.Text)          '购票数,确保数值在座位数以内     n=0            '空座位的个数     For i=5 To 10         '统计最佳观影区中的空座位编号         For j=3 To 8             If zw((i-1)*C+j)= 0 Then                 n=n+1                 kzw(n) =             End If         Next j     Next i     min = C: start=0: k=1     Do While k+m-1<= n         If kzw(k) + m-1= kzw(k +m- 1) Then             x=Abs(C\2-(kzw(k)+kzw(k+m-1))\2 Mod C)             If x < min Then                 min=x                 start = k     '记录满足座位条件的起始空位号                 If min=0 Then Exit Do    'Exit Do表示退出循环             End If         End If             Loop     ans =””     If start = 0 Then         ans = "未能推荐座位,请手工选座"     Else         For i = kzw(start) To         'CStr函数把表达式转换为字符串,不产生前置空格        ans = ans + "第"+ CStr(i \C+ 1) +"排"+ CStr(i ModC) +"座"       Next i     End If     Label2.Caption = ans End Sub 答案: 【1】75 【1】(i - 1) * C + j【2】k = k + 1【3】kzw(start) + m – 1 或 kzw(start + m - 1)
信息技术 试题推荐
最近更新