试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省名校信息技术仿真训练卷(四)

【加试题】某校根据考生名单次序安排试场座位,试场座位分布为“S”形。例  如试场安排为5组6排,则第一试场内考生座位分布如图1所示,超过该试场人数的考生,将按相同规则顺延至下一考场,且每场第一组座位都从上至下排列。座位安排算法如下:

⑴根据每试场安排的人数,判断输入的试场号是否在试场总数范围内,若是则转到⑵,否则重输试场号;

⑵根据考生次序和试场人数,计算每一考生所在试场号存入数组sc;

⑶计算考生在本试场中的次序,再根据试场安排的排数,计算考生座位所在的组数和排数,分别存人数组z和数组P。座位分布为“S”形,奇数组和偶数组座位排列顺序不同。

根据以上算法编写VB程序,在文本框Text1中输入组数,在文本框Text2中输入排数,在文本框Text3中输入试场号,单击“查询”按钮Command1,在List1中显示该试场座位表(名字前的数字是考生在名单中的次序),运行界面如图2所示。

(1)、试场安排为7组5排,“S”形分布方式如上,则名单中第50个考生将被排在        (填写格式如:第X试场第X组第X排)。

(2)、请在画线处填入合适的代码。

Dim xm(1 To 1 000)As String

Dim n As Integer

Private Sub Form_Load()

‘本过程从数据库中读取考生姓名存储在xm数组,考生人数存储在n变量中,代码略

End Sub

Function qxs(a As Single)As Integer

    qxs=Abs(Int(a*(-1))

End Function

Private Sub Command1_Click()

Dim X As Integer,i As Integer,k As Integer,num As Integer

Dim sc(1 To 1 000)As Integer         ‘存储考生所在试场号

Dim z(1 To 1 000)As Integer        ‘存储考生座位所在的组数

Dim p(1 To 1 000)As Integer         ‘存储考生座位所在的排数

sc_z=Val(Text1.Text)               ‘存储试场安排的组数

sc_p=Val(Text2.Text)                ‘存储试场安排的排数

‘list1中输入“讲台”字样,代码略

num= sc_z*sc_p

x=Val(Text3.Text)

If x>0 And    ①    Then

    For i=1To n

       sc(i)=qxs(i/num)

        k=i Mod num

        z(i)=qxs(k/sc_p)

        If k<>0 Then

            If z(i)Mod 2=1 Then

              p(i)=k-(z(i)-1)* sc_P

            Else

              p(i)=    ②    -(k-(z(i)-1)* sc_p)

            End If

        Else

            z(i)= sc_z

             If z(i)Mod 2=0 Then p(i)=1 Else    ③   

    End If

Next i

‘本过程实现在List1中显示x试场座位表,代码略

Else

    MsgBox(“输入的试场号,已超出试场总数,请重输”)

    Text1.Text="  "

    Exit Sub

End If

End Sub

 ② ③ 

举一反三
小丽在假期看到小朋友们在玩一个游戏,8个小朋友围成一圈,从某个小朋友开始报数,报到指定数时,该小朋友出圈,接着从出圈的位置开始再接着报。她希望通过VB程序模拟这个过程,思路如下:

1)用一个一维数组来模拟,编号1~N保存在数据a(1)~a(n)中,来代表N个小朋友。

2)K代表报数的起始位置,从数组的a(k)开始遍列,报到m出圈,将当前位置的元素删除,后面的元素依次往前移位。总数减1。

3)当报数报到数组元素的最后一个时,返回数组开头接着报数。

4)当总数只剩下一个数时,直接输出。

界面如下:

Private Sub Command1_Click(   )

Dim i As Integer

Dim n As Integer

Dim m As Integer, k As Integer

Dim A(1 To 50) As Integer   '存放编号的数组

n = Val(Text1.Text)                       '编号个数

k = Val(Text2.Text)                '报数起始位

m = Val(Text3.Text)                   '报到出圈数

If n > 0 And k > 0 And m > 0    ①   n <= 50 Then

    For i = 1 To n              '初始化编号a(1)=1,a(2)=2,……

         A(i) = i

    Next i

    Label1.Caption =     ②          '调用出圈函数,得到返回的出圈顺序

Else

    MsgBox "编号、起始位、报到出圈数都必须大于0!编号不能超过50!"

End If

End Sub

Private Function chuquan(b() As Integer, n As Integer, m As Integer, k As Integer) As String

Dim i As Integer, j As Integer

Dim s As String                  '出圈顺序存放

i = k - 1

s = "出圈顺序为:"

Do While n > 1

       i = i + 1

       m = m - 1

       If     ③  Then

         s = s + Str(b(i)) + ","

         For j = i To n - 1

            b(j) = b(j + 1)

         Next j

         b(j) = 0

         n = n - 1

         i = i - 1

         m = 4

      End If

      If i = n  Then  i = 0

Loop

chuquan =        ④    

End Function

① {#blank#}1{#/blank#}

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

③ {#blank#}3{#/blank#}

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

返回首页

试题篮