试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:普通

浙江省衢州市2021届高三上学期信息技术12月教学质量检测信息技术试卷

小吴研究插入排序算法,若对无序数列5,2,9,5,3,利用传统的简单插入排序进行升序排序,其方法如下:

首先将5取出,得到序列5;

第二步将2取出,插入序列得到2,5;

第三步将9取出,插入后得到2,5,9;

第四步将5取出,插入后得到2,5,5,9;

第五步将3取出,插入后得到2,3,5,5,9,排序完成。

小吴对这种插入排序进行了一些改进,将无序数列存入a数组中,将排序后的数据存入b数组中,同时保证b数组不存在重复的数字。对于重复出现的数字,用cnt数组记录重复个数。例如无序数列8、6、7、4、4、9、1、9、9、8,a(1)~a(10)存储原数据,b(1)~b(6)存储排序后的不重复数据,cnt(1)~cnt(6)存储每个数字重复的个数,如图a所示。

数组/下标

1

2

3

4

5

6

b

1

4

6

7

8

9

cnt

1

2

1

1

2

3

图a

程序运行后,自动随机生成原数组并显示在列表框List1中,点击按钮“开始”后,生成升序排序数组并显示在列表框List2中,程序运行界面如图b所示。

图b

请回答下列问题。

(1)、若要在窗体载入后让窗体标题显示“排序改进算法”,则下列操作可行的是        (单选,填字母。)
A、直接将窗体属性栏中的“Text”属性值修改为“排序改进算法” B、在程序的Form_Load()事件中写上代码 Form1.Caption =“排序改进算法” C、在程序的Command1_Click()事件中写上代码Form1.Caption =“排序改进算法”
(2)、请完成程序中的填空。

Const n = 10

Dim a(0 To 100) As Integer, b(0 To 100) As Integer, cnt(1 To 100) As Integer

Dim Ln As Integer, pos As Integer  'Ln表示b数组的长度

Function search(key As Integer)

    Dim i As Integer

    For i = 1 To Ln

        If b(i) >= key Then Exit For

    Next i

    search = i

End Function

Private Sub Command1_Click()

Dim i As Integer, j As Integer

    Ln = 0

    For i = 1 To n

        pos =

        If b(pos) <> a(i) Then

            Ln = Ln + 1

            j = Ln

            Do While j > pos

                b(j) = b(j - 1)

               

                j = j - 1

            Loop

            b(j) = a(i)

            cnt(pos) = 1

        Else

            

        End If

    Next i

    For i = 1 To Ln

        For j = 1 To cnt(i)

            List2.AddItem Str(b(i))

        Next j

    Next i

End Sub

Private Sub Form_Load()

    For i = 1 To n

        a(i) = Rnd() * 10 + 1

        List1.AddItem Str(a(i))

    Next i

End Sub

(3)、程序中加框处存在错误,请改正。
举一反三
活动课上,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

返回首页

试题篮