试题

试题 试卷

logo

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

浙江省稽阳联谊学校2021届高三下学期信息技术4月联考试卷

有60个人要组建一个聚会,每人的喜好是一个数值,为提升聚会效果,会务组要把参会人员进行分组,分组原则是:

1)每组不超过8人

2)组内新增人员的喜好值必须与现有组内人员的平均喜好值相差在5以内

3)若新增人员无法加入现有小组,则被分入新组建小组

小V同学根据上述算法设计编写了VB程序,界面如图所示,单击“分组”按钮后,在列表框list1输出分组结果,每组一行,回答下列问题:

Dim a(1 To 60) As Integer      ‘各人的喜好值

Private Sub Command1_Click()

    Dim i As Integer, j As Integer, c As Integer,s as String

    Dim b(1 To 480) As Integer      ‘分组后喜好值

    Dim ave(1 To 60) As Integer, num(1 To 60) As Integer

    For i = 1 To 60    ‘预设60个分组

        num(i) = 1

        ave(i) = 0

    Next i

    c = 1: ave(1) = a(1): b(1) = a(1)

    For i = 2 To 60

        For j = 1 To c

            If Abs(a(i) - ave(j)) <= 5 And num(j) < 8 Then

                ave(j) =    ①  

                num(j) = num(j) + 1

                b(j * 8 - 8 + num(j)) = a(i)

                Exit For

            End If

        Next j

        If    ②   Then

            b(c * 8 + 1) = a(i)

            ave(j) = a(i)

            c = c + 1

        End If

    Next i

    s = ""

    For i = 1 To c

        For j = 1 To    ③  

            s = s + Str(b((i - 1) * 8 + j))

        Next j

        List1.AddItem s

        s = ""

    Next i

End Sub

Private Sub Form_Load()

‘生成60个原始数据,存入数组a,数组b各元素初始化为0,代码略

End Sub

(1)、如图所示,当前数据已被分组,若再新增一个数“64”,会被分在第组。
(2)、在程序划线处填入合适代码,使程序完整。

 ② ③ 

举一反三
给定区间[a1,a2]和[b1,b2],若a2≥b1,则认为这两个区间是有重叠的,可进行合并。如区间[1,3]和[2,6]可合并为[1,6];区间[1,6],[2,5]可合并为[1,6];区间[1,4]和[4,5]可合并为[1,5]。

编写一个“合并重叠区间”的VB程序,功能如下:在文本框Text1中按各区间起始值升序依次输入各区间的起始值和终止值(数据都用逗号分隔并以逗号结尾),单击“确定”按钮后,在Text2中显示合并后的各个区间。例如,在文本框Text1中输入“1,2,3,5,4,6,9,12,10,11,”,表示区间[1,2],[3,5],[4,6],[9,12],[10,11],合并后的区间分别为[1,2],[3,6],[9,12]。程序运行界面如图所示,实现上述功能的VB代码如下:

Const n=100

Private Sub Cmd1_Click()

    Dim i As Integer, k As Integer, L As Integer, R As Integer

    Dim s As String, c As String, t As String, result As String

    Dim a(1 To n) As Integer

    s=   ①   : t=" ": k=0

    For i=1 To Len(s)

        c=Mid(s, i, 1)

        If c<>"," Then

                 ②      

        Else

            k=k+1

            a(k)=Val(t)

            t=""

        End If

    Next i

    L=a(1): R=a(2)

    i=3

    Do While i<=k

        If a(i)>R Then

            result = result+"("+Str(L)+","+Str(R)+"),"

            L=a(i): R=a(i+1)

       

            R=a(i+1)

        End If

            ③   

    Loop

    result=result+"("+Str(L)+","+Str(R)+"),"

    Text2. Text=result

End Sub

返回首页

试题篮