试题

试题 试卷

logo

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

浙江省高中信息技术 排序算法及程序实现同步练习

有如下程序段,数组元素a(1)到a(5)的值依次为“33,24,4,16,77”,执行该程序段后,变量t的值为(  )

t=0

For i=1 To 4

flag=False

For j=5 To i+1 Step-1

If a(j)>a(i) Then flag=True

  t=t+1

  temp=a(j):a(j)=a(i):a(i)=temp

End If

Next j

If flag=False Then Exit For

Next i

A、2 B、3 C、4 D、5
举一反三
【加试题】某排序算法思想如下:若有11个桶,编号从0~10,随机产生多个整数,每产生一个整数时,就在以该整数位编号的桶中放一面小旗子,最后只要按顺序数每个桶中有几面小旗子,就能得到这几个整数的有序排列。例如2号桶中有1个小旗子,表示2出现了一次;3号桶中有1个小旗子,表示3出现了一次;5号桶中有2个小旗子,表示5出现了两次;8号桶中有1个小旗子,表示8出现了一次,按桶的编号顺序读出旗子数量,没有旗子的桶略过,得到有序整数为“2,3,5,5,8”。

为此,小李编写了一个VB程序,功能如下:运行程序,窗体加载时随机产生6个[0,9]的随机整数,并在列表框List1中依次显示排序前数据,单击“排序”按钮Command1,在列表框List2 中显示经过上述排序算法后的数据。运行结果如图所示。

实现上述功能的VB代码如下,但横线处代码有错,请改正。

Dim a(10) As Integer'数组a表示桶的编号,如a(0)表示第0号桶

Private Sub Command1_Click()

Dim i As Integer, j As Integer

For i = 0 To 10

For j = 1 To     i      错①处

List2.AddItem CStr(i)

Next j

Next i

End Sub

Private Sub Form_Load()

Dim i As Integer

Randomize

For i = 0 To 10'将数组初始化为0

a(i) = 0

Next i

For i = 1 To 6'产生6个[0,9]的随机数

t = Int(Rnd * 10)

a(t) =  t + 1  '第t桶中小旗子数量加1  错②处

List1.AddItem CStr(t)

Next i

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} 

【加试题】小李要给全班学生拍合照,要求所有学生站成一排,中间高,两端低,小李采用如下排队方法:按身高信息从高到低排序,让身高第一位的同学单独站出来,身高第二位同学站在他的左手边,身高第三位同学站在他的右手边,再依次向两端安排其他人。每个学生的学号与身高信息已存人数据库中。小李编写了VB程序,从数据库中读取学号和身高信息,在“原始信息”下方的列表框List1中显示,单击“排队”按钮Command1,在“排好的队形”下方的列表框List2中显示排好的队形,程序界面如图所示。

实现上述功能的VB程序如下,但加框处代码有错,请改正。

  Const maxn=100

  Dim id(1 To maxn)As Integer     ‘存储每个学生的学号

  Dim tall(1 To maxn)As Single     ‘存储每个学生的身高

  Dim n As Integer                ‘存储学生的个数

  Private Sub Form_Load()

  ‘从数据库得到学生的总人数n

    ‘从数据库读取学号信息,并存入id数组中

    ‘从数据库读取身高信息,并存入tall数组中

    ‘在列表框List1中显示学号与身高

  End Sub

  Private Sub Command1_Click()

  Dim a(1 To maxn)As Integer    ‘存储排好队形的学号

  Dim b(1 To maxn)As Single     ‘存储排好队形的身高

  Dim i As Integer,j As Integer

  Dim t1 As Integer,tr As Integer,mid As Integer

  Dim tmp1 As Single,tmp2 As Integer

  For i=1 To n-1

    For j=n To i+1 Step-1

      If  Then        ‘(1)

        tmp1=tall(j):tall(j)=tall(j-1):tall(j-1)=tmp1

        tmp2=id(j):id(j)=id(j-1):id(j-1)=tmp2

      End If

     Next j

    Next i

    If n Mod 2=0 Then     ‘根据总人数的奇偶性,确定队形的中间位置

       mid=n\2+1

    Else

       mid=(n+1)\2

    End If

    ‘身高第一位的同学,安排在队形的中间位置

    a(mid)=id(1)

    b(mid)=tall(1)

    t1=mid-1

    tr=mid+1

    For i=2 To n

      If  Then           ‘(2)

        a(tr)=id(i)

      b(tr)=tall(i)

      tr=tr+1

    Else

      a(t1)=id(i)

      b(t1)=tall(i)

      t1=t1-1

     End If

    Next i

    List2.AddItem“位置”+“学号 ”+“身高”

    For i=1 To n

      List2.Addltem Str(i)+”  ”+Str(a(i))+”  ”+Str(b(i))

    Next i

  End Sub

返回首页

试题篮