试题

试题 试卷

logo

题型:单选题 题类: 难易度:普通

浙江省七彩阳光联盟2023-2024学年高三上学期第一次联考信息技术试题

有如下程序段:

s = input()

head = 0; tail = 0; ans = 0; tmp = '' q = ['']*100

flag = True

for i in range(len(s)):

    if s[i] == ',':

        while head!=tail:

            tmp += q[head]

            head += 1

            if flag and head < tail:

                head += 1

            flag = not flag

        ans += int(tmp)

        tmp = ''; flag = True

    elif '0'<=s[i]<='9':

        q[tail] = s[i]

        tail += 1

 若输入 s 为“1-500,2023900-,”,执行该程序段,变量 ans 的值为 (   )

A、100 B、22300 C、22351 D、22400
举一反三
活动课上,n个学生要两两组队进行拔河比赛,要求每个小组总体重不超过120kg,小林想知道最多可以组成多少个队伍,并希望得到可行的组队方案。于是设计了如下界面的程序,在文本框Text1中输入n 个学生的体重(数字之间用逗号隔开),单击“队伍”按钮Command1后在标签Label1上显示最多可组队数量,同时在列表框List1输出方案。

实现上述功能程序如下,在横线处填入合适的代码。

Dim n As Integer

Dim a(1 To 50) As Integer

Sub makedata(s As String)     ‘该过程实现将输入的体重分别存入数组a中

Dim in As Long, x As Long, c As String, i As Integer

m=Len (s) : n=0

For i=1 To m

 c=Mid(s, i, 1)

 If c >=“0” And c <=“9” Then

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

  x=x+Asc(c)-Asc(“0”)

 Else

  If x > 0 Then n=n+1: a(n)=x

  x=0

 End If

Next i

n=n+1: a(n)=x

End Sub

Private Sub Command1_Click()

Dim s As String, i As Integer, j As Integer, t As Integer

Dim cnt As Integer, st As Integer, ed As Integer

s=Text1.Text Call makedata(s)      ‘调用过程

For i=1 To n-1     ‘实现降序排序

For j=n To i+1 Step-1

If{#blank#}2{#/blank#}Then

a(j)=a(j)+a(j-1) : a(j-1)=a(j)-a(j-1) :{#blank#}3{#/blank#}

  End If

 Next j

Next i

‘下列程序段实现计算最多可组队伍

cnt=0: st=1: ed=n

Do While st < ed

 If a(st)+a(ecl) <=120 Then

  List1. AddItem Str(a(st))+“和”+Str(a(ed))+“组队”

  cnt=cnt+1

  st=st+1

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

 Else

  st=st+1

 End If

Loop

Label2. Caption=“最多可以组”+Str (cnt)+“组队伍”

End Sub

二叉树是每个结点最多有两个子树的树结构,如值为9的结点有两个子树6和8,值为6的结点有两个子树5和3。若设二叉树的深度为h,则除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。现要构造大根堆,堆是一棵顺序存储的完全二叉树,大根堆又是一种特殊的堆,它的特征是每个双亲结点的值都不小于其孩子结点的值。如下图所示,值为9的结点是6和8的双亲结点,而6和8分别是9的左孩子和右孩子;同理,6是5和3的双亲结点,而5和3分别是6的左孩子和右孩子……

假如我们用数组表示上述大根堆:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

9

6

8

5

3

4

7

2

1

现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。

数组存储为:

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

6

8

5

3

4

7

2

1

8

具体操作方法如下:

第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;

数组存储为:

第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;

数组存储为:

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

a(7)

a(8)

a(9)

a(10)

9

8

8

5

6

4

7

2

1

3

第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。

返回首页

试题篮