试题

试题 试卷

logo

题型:填空题 题类:常考题 难易度:困难

算法与程序设计

有一组正整数,要求对其中的数据进行排列,排列后奇数在前,偶数在后。其中最后一个数据排到奇数与偶数交接处;自前到后的第一个偶数排到最后一个位置,空出的位置排列自后向前的第一个奇数,依此类推。排序示例如下。

排序前

71

85

64

55

42

62

33

17

34

30

排序后

71

85

17

55

33

30

62

42

34

64

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

Const n=10

Dim a(1 To n) As Integer

Private Sub Command1_Click()

Dim i As Integer,j As Integer

Dim temp As Integer,flag As Boolean

'读取一组正整数,存储在数组a中,代码略

i=1:j=n

temp=a(j):flag=True

Do While i<j

If flag Then

If a(i) Mod 2=0 Then

   a(j)=a(i)

   j=j-1

   flag=Not flag

Else

    '

End If

Else

If a(j) Mod 2=1 Then

   a(i)=a(j)

   flag=Not flag

Else

   j=j-1

End If

End If

Loop

 '

'依次输出排序后的数据,代码略。

End Sub

举一反三
【加试题】小李要给全班学生拍合照,要求所有学生站成一排,中间高,两端低,小李采用如下排队方法:按身高信息从高到低排序,让身高第一位的同学单独站出来,身高第二位同学站在他的左手边,身高第三位同学站在他的右手边,再依次向两端安排其他人。每个学生的学号与身高信息已存人数据库中。小李编写了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

返回首页

试题篮