1. 有n个小组(编号1至n),每个小组有m个成员,每个成员都有一个大于等于0的得分。现要求按下列规则计算每个小组的成绩,并找出成绩最高的小组。

小组成绩的计算规则是:若小组成员中得分最高的前k人得分都不低于k,且其他成员得分都不超过k,则该小组成绩为k。例如,第1小组共有8个成员,得分依次为“5,2,7,11,8,6,5,1”,由此可知最高的前5人得分为“11,8,7,6,5”,其他3人得分为“5,2,1”,因此该小组成绩为5。

按上述要求,编写VB程序,功能如下:在列表框List1中显示各小组每个成员的得分,单击“计算”按钮Command1,在列表框List2中显示成绩最高的小组编号及成绩(如果有多个小组并列最高,则全部显示)。

(1) 若第2小组各成员得分依次为“0,4,12,1,5,9,3,9”,则该小组的成绩是
(2) 请在划线处填入合适的代码。

Const n = 6

Const m = 8

Dim a(n * m)As Integer

Dim c(m)As Integer,ans(n)As Integer

Private Sub Form_Load( )

    ‘读取n个小组每个成员的得分,按组别从小到大依次存入数组a,并显示在List1中

     ‘n(1)到a(m)存储第1小组m个成员的得分

     ‘a(m+1)到a(2*m)存储第2小组m个成员的得分

     ‘以此类推,代码略

End Sub

Private Sub Cummand1_Click( )

    Dim i As Integer,p As Integer,g As Integer,maxg As Integer

    maxg = -1

    For i = 1 To n

        g = GroupScore(i)

        If g > maxg Then

            maxg = g: p=1

           

        ElseIf g = maxg Then

            p=p+1

            ans(p)=i

        End If

    Next i

    For i = 1 To p

        List2. AddItcm“第”+Str(ans(i))+“组,成绩:”+Str(maxg)

    Next i

End Sulb

‘函数返回第w小组的成绩

Function GroupScone(w As Integer)As Integer

    Dim i As Integer,k As Inteser

    For i = 0 To m

        c(i)=0

    Next i

    For i=(w-1)*m+1 To w *m

        k=a(i)

        If k > m Then

        c(k)=c(k)+1

    Next i

    k=m

    Do White c(k)< k And k>0

        k=k-1

       

    Loop

    GroupScore=k

End Function

【考点】
过程与自定义函数;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
真题演练
换一批
1. IPv6是英文“Internet Protocol Version6”(互联网协议第6版)的缩写。IPv6的地址长度为128位,采用十六进制表示。为了便于人工阅读和输入,IPv6 地址可划分成8个块,每块4位,块与块之间用“:” 隔开,如: ABCD:F010000:000:ABCD:EF01 :000:6789。同时,对于多个地址块为0的情况时,可以使用“: :”号,进行化简。化简原则如~ F:

①全0块“0000”,可以化简为“0”

②连续多个全0块,可以化简为“: :”

③一个IPv6地址中只能出现一个“: :”,出现多个全0块时,“: :” 要化简最长的一段,没有最长的就将最左侧的一段化简为“: :”

④“: :”可以出现在地址开头或结尾

如:数据“FBCD:EF01:6789”在化简前为“FBCD:EF01:0000:0000:0000:0000:0000:6789”。

小李根据上述化简算法设计了一个IP化简地址还原的VB程序,功能如下:在文本框Text1中输入已经化简的IP地址,单击“还原”按钮Command1,在文本框Text2中输出其化简前的IP地址。运行界面如图所示。

(1) 运行程序,若在文本框Text1中输入“12::” (引号内数据),还原后,数组元素ip(1)的值为
(2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

Function ipv6(s As String) As String

    Dim i As Integer

    For i= Len(s) + 1 To4

        s= "0"+s

    Next i

   

End Function

Private Sub Command1_Click( )

    Dim ip(1 To 8) As String

    Dim st As String

    Dim f As Integer, k As Integer

    Dim s As String, n As Integer

    f= 0

    s = Text1.Text

    n= Len(s)

    For i= 1 To n

        c1 = Mid(s, i, 1)

        If c1 <> "." Then

            ip(k)= ip(k) +c1

        End If

        If c1= ":" Or i= n Then

            

            If c2 =":" Then

                f= k

            Else

                ip(k) = ipv6(ip(k))

                k=k+ 1

            End If

        End If

    Next i

    k=k- 1

    x=8-k

    For i=k To f+ 1 Step-1

        

    Next i

    For i=f+ 1 To f+x

        ip(i) = "0000"

    Next i

    Text2.Text= ip(1)

    For i=2 To 8

        Text2.Text = Text2.Text + ":" + ip(i)

    Next i

End Sub

综合题 困难