1. 甲乙双方进行一场球类比赛,一局计分的规则是:赢1球得1分,用“1”表示;输1球失1分,用“0”表示。当任一方得分大于等于6分,且领先对方2分及以上,领先方赢一局。如甲选手一局比赛数据为“101110101”,表示甲选手得6分失3分,局比分

小王用一个字符串记录了甲选手多局比赛数据,其中有一处错误,位于连续多个“0”的最后一个。为了找出错误,小王的处理方法如图a所示,对示例中疑似错误位置6和20分别修改数据,并统计每局比分。他编写了VB程序,功能如下:在窗体Form l的文本框Text l中输入记录数据,单击“分析”按钮Command 1,在列表框List 1中输出修改位置以及修改后每局的比分。程序运行界面如图b所示。

图a

图b

(1) 下列对象中有Text属性的是(单选,填字母:A .Command 1/B .Form 1/C .Text 1)。
(2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

Private Sub Command 1_Click( )

    Dim sp As String, s As String s       ‘s存储甲选手多局比赛的记录数据, 长度小于50

    Dim a(1 To 50)As Integer, e(1 To 20)As Integer

    Dim i As Integer, j As Integer, k As Integer, n As Integer, m As Integer

    Dim f1 As Integer, f2 As Integer

    s=Text 1.Text

    n=Len(s)

    For i=2 To n

        a(i)=Val(

    Next i

    m=0 : i=1

    Do While i<=n

        k=i

        Do While a(i)=0 And i<=n       找出疑似错误位置

            i=i+1

        Loop

        If  Then

            m=m+1:e(m)=i-1

        End If

        i=i+1

    Loop

    For i=1 To m       ‘对每个疑似错误位置分别修改数据,并统计每局比分

         f1=0 : f2=0

         k=e(1)

         a(k)=1

         sp="" & k &""

         For j=1 To n

             If a(j)=1 Then f1=f1+1 Else f2=f2+1

             If  Then

                 sp=sp & "/" & f1 &":" & f2

                 f1=0 : f2=0

             End If

         Next j

         If f1+f2>0 Then sp=sp & "" & f1 & ":"& f2

         List 1.AddItem sp

        

    Next i

End Sub

(3) 程序中加框处代码有错,请改正。
【考点】
类、对象、属性、方法、事件和事件处理的概念及应用; 分支结构语句及程序实现; 循环结构语句及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
真题演练
换一批
1. 小华开发了一个自动改卷系统,但是由于科目不同,没有固定的题号模板,于是小华又编写了python程序,能根据试卷答案自动输出题号。如图1为答案模板文件,小华在模板文件中录入答案后保存为"卷3.txt",如图2所示,每一行是一题或者一题中的一小题的答案,题号之间没有跳跃。例如:图2中【1】和【5】之间有4行,A、B、C、D为第1到4题的答案。程序运行结果如图3所示。

图 1

图 2

图 3

(1) 实现上述功能的 Python 程序如下,若删除图2最后一行(【7】所在的行),对程序运行结果  影响(填:有/没有)。
(2) 请在划线处填入合适的代码。

f=open("卷 3.txt",encoding="utf-8")

line=f.readline().strip() c=0      #strip()用于删除字符串尾部的"\n"换行符

preId=0

QuestionInfo=[ ]

while line:

    if line[0] == "【":

        curId =

        if curId - preId > 1:

            for i in range(preId, curId):

                QuestionInfo.append(str(i))

        elif c>0:

            for i in range(1, c + 1):

                QuestionInfo.append(str(preId) + "(" + str(i) + ")")

        c = 0

           

    else:

       

    line=f.readline().strip()         #strip()用于删除字符串尾部的"\n"换行符

f.close()

print("卷 3 题号划分为: ")

for Id in QuestionInfo:

    print(Id)

综合题 困难
2. 有m个人结伴旅行(m≤9,每个人用整数1~m编号)。期间既有全员参与的集体活动,也有自主参与的小团队活动。每项活动的消费由参与人平均分摊,其中一人先行垫付并记录。记录内容包括该项活动的人均消费金额(整数,单位:元)、参与人。每项活动的参与人用字符串表示,垫付人排在第1位。如“25134”表示2、5、1、3、4号参与该项活动,其中2号是垫付人。旅行结束后依据所有活动的消费记录进行结算:

1)计算每个人的应还款(应还款=应分摊的总金额-先行垫付的总金额);

2)根据所有人的应还款数据计算转账明细(应还款为正的人转给应还款为负的人)。

根据上述要求编写VB程序,功能如下:运行程序,读取消费记录数据并在列表框List 1中显示。单击“结算”按钮Command 1,在列表框List 2中显示每个人的应还款,在列表框List 3中显示转账明细。程序运行界面如图所示。

(1) 结合程序与界面可知,AddItem是List 2的(单选,填字母:A .方法名/B .事件名/C .属性名)。
(2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

Const n=9, m=15

Dim x(1 To n)As Integer       ‘x(i)存储第i项消费记录的人均消费金额

Dim a(1 To n)As String        ‘a(i)存储第i项消费记录的参与人

Private Sub Form_Load( )

    ‘读取所有消费记录,存入数组x和a中,并显示在列表框List 1中

     ‘代码略

End Sub

Private Sub Command1_Click( )

    Dim i As Integer, j As Integer, k As Integer, p As Integer

    Dim c As Integer, w As Integer, v As Integer

    Dim b(1 To m)As Integer        ‘保存应还款数据

    For i= 1 To m

        b(i)=0

    Next i

    For i=1 To n      ‘根据消费记录计算应还款

        k=Len(a(i))

        p=Val(Mid(a(i), 1, 1))

        b(p)=b(p)-(k–1)*x(i)

        For j=2 To k

            p=Val(Mid(a(i), j, 1))

            

        Next j

    Next i

    c=0

    For i=1 To m

        List 2. AddItem Str(i)+“号”+Str(b(i))

        If b(i)>0 Then c=c+1

    Next i

    i=1 : j=1               ‘根据应还款数据计算转账明细

    Do While  

        Do While b(i)<=0

            i=i+1

        Loop

    Do While b(j)>=0

        j=j+1

    Loop:

        

        If w>0 Then  Else v =b(i)

        b(i)=b(i)-v:b(j)=b(j)+v

        List 3. AddItem Str(i)+“号->”+Str(j)+“号   ”+Str(v)

        If w<=0 Then c=c–1

    Loop

End Sub

(3) 程序中加框处代码有错,请改正。
综合题 困难
3. 假期学校联合社区开展志愿者活动,共组织A、B、C三项活动。活动报名采用线上限时报名,三项活动共45个名额,报名系统根据报名时间取前45名学生并按照先后生成45个报名序号。由于活动场地和组织人员等因素限制,每项活动都有限定人数,因此可能会出现活动人数超额的情况。根据先报先得的原则,在每项活动报名满员后的时间段内报名的学生需要调剂重报,系统会自动推送需重报名的学生报名序号。

编写VB程序,实现上述功能。运行程序,在列表框List1中显示45位报名学生的报名序号和所选活动名称。单击“统计”按钮Command1,在列表框List2中显示需要调剂重报活动的学生报名序号。程序运行界面如图所示。

(1) 语句″List1.Additem xm(i)″中的″Additem″是(单选,填字母:A .对象名B .方法名C .属性值) 。
(2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

Const n=45

Dim a(1 To n) As String, xh(1 To n) As String

Dim c(1 To 3) As Integer

Private Sub Form_Load()

    '在数据库中读取前45位学生的报名序号和所选活动项目名称,分别存入数组xh和数组a,在List1中显示。读取三项活动的限报人数,存入数组c,代码略

End Sub

Private Sub Command1_Click()

    Dim b(1 To 3) As Integer, i As Integer, j As Integer, k As Integer

    Dim t1 As String, t2 As String

    For i=1 To n-1

        For j=n To i+1 Step-1

            If Then 

                If a(j)=″A″ Then

                    b(1)=j-1

                Else

                    b(2)=

                End If

                t1=a(j): a(j)=a(j-1): a(j-1)=t1

                t2=xh(j): xh(j)=xh(j-1): xh(j-1)=t2

            End If

        Next j

    Next i

    b(3)=n

    i=1: k=1

    Do While i <=n

        If c(k)=0 And i <=b(k) Then

            Do While i <=b(k)

                a(i)=″″

                i=i+1

            Loop

            k=k+1

        ElseIf    Then

            k=k+1

        Else

            

            i=i+1

        End If

    Loop

    For i=1 To n

        If a(i)=″″ Then List2.AddItem xh(i)

    Next i

End Sub

(3) 程序中加框处代码有错,请改正。
综合题 困难