试题

试题 试卷

logo

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

浙江省金华市江南中学2019-2020学年高二下学期信息技术3月月考试卷

【加试题】对n个元素进行排序,用冒泡进行排序时,需比较的次数共为(  )
A、n*(n-1) B、n*(n+1) C、n*(n-1)/2 D、n*(n+1)/2
举一反三
编写VB程序,实现如下功能: 单击“排序数组a”按钮Command1时,对已有数组a的数据进行升序排列,并显示在文本框Label1中;单击“显示数组b”按钮Command2时,将升序数组b的数据显示在文本框Label2中;再单击“合并a和b”按钮Command3时,对数组a和数组b升序合并到字符串中,将合并后的数据在文本框Label3中显示。(运行效果如图所示)。实现上述功能的VB代码如下, 请在划线处填入合适代码。

Dim a(1 To 6) As Integer  

Dim b(1 To 6) As Integer

Private Sub Command1_Click()     '对数组a中的数据进行排序

Dim i As Integer, j As Integer ,k as integer

a(1) = 53 :a(2) = 18:a(3) = 62:a(4) = 22:a(5) = 6:a(6) = 25

s = ""

For i = 1 To 5

    k = i

    For j = i + 1 To 6

        If a(k) > a(j) Then {#blank#}1{#/blank#}

    Next j

    If i <> k Then

        t = a(k): a(k) = a(i): a(i) = t

    End If

Next i

For i = 1 To 6

    s = s + Str(a(i))

Next i

Label1.Caption = s

End Sub

Private Sub Command2_Click() 

b(1) = 3: b(2) = 8: b(3) = 15: b(4) = 27: b(5) = 38: b(6) = 49

'此处部分代码省略

End Sub

Private Sub Command3_Click()  

'将数组a和b中的数据逐个比较后添加到新的字符串s中,并将s在label3中显示

i = 1: j = 1: s = ""

Do While i <= 6 {#blank#}2{#/blank#}j <= 6           '如果两数组都还有数据未合并

    If  {#blank#}3{#/blank#}Then

        s = s + Str(a(i)) : i = i + 1

    Else

        s = s + Str(b(j)) : j = j + 1

    End If

Loop

Do While i <= 6                            '只有数组a还有数据未合并

    s = s + Str(a(i)) : i = i + 1

Loop

Do While j <= 6                            '只有数组b还有数据未合并

    s = s + Str(b(j)) : j = j + 1

Loop

Label3.Caption = s

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

编写一个VB程序,实现程序功能如下:随机产生10个1~20之间的整数存放在数组a,在列表框List1中显示,单击“排序”按钮Command1后,在列表框List2中显示升序排序后的结果。具体算法描述如下:引入数组index,index(i)存储i位置应放置的数组元素的下标。排序完毕,a(index(i))成为升序序列,即a(index(1))≤a(index(2))≤a(index(3))≤……≤a(index(i))。在数组a的所有元素中找出最小元素,将其所在位罝存放在数组元素index(1)中,然后在余下的元素中找出最小元素,将其所在位置存放在数组元素index(2)中,以此类推,直到完成所有元素排序。如n=5时,数组a排序后各变量值如下表所示。

i

1

2

3

4

5

a(i)

17

19

9

13

6

index(i)

5

3

4

1

2

a(index(i))

6

9

13

17

19

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

Const n = 10

Const maxn = 20

Dim a(1 To n) As Integer, index(1 To n) As Integer, flag(1 To n) As Boolean

Private Sub Form_Load()

Dim i As Integer

Randomize

For i = 1 To n

 flag(i) = False

 a(i) = Int(Rnd() * maxn) + 1

 List1.AddItem Str(a(i))

Next i

End Sub

Private Sub Command1_Click()

Dim i As Integer, j As Integer

Dim k As Integer

For i = 1 To n

 For j = 1 To n

  If flag(j) = False Then k = j: Exit For

 Next j

 For m = k + 1 To n

  If Then k = m     ‘⑴

 Next m

 index(i) = k

 flag(k) = True

Next i

For i = 1 To n

 List2.AddItem      ‘⑵

Next i

End sub

⑴{#blank#}1{#/blank#} ⑵{#blank#}2{#/blank#} 

某次考试的流程为先笔试再面试,笔试成绩达到面试资格线的可以入围参加面试。入围面试的资格线根据计划录取人数的200%划定,即如果考试最终录取x人,则第2*x名选手的笔试分数为面试资格分数线(该分若有同分者可一同参加面试)。现在编写VB程序功能如下:自动读取数据库中考生考号和笔试成绩,依次存储在数组kh(i)、cj (i)中,并显示在Listl列表框中。

用户从Text1中输入计划人数,单击“入围划线”按钮Command1,面试分数线显示在文本框Text2 中,入围面试最终人数显示在 Text3中,进入面试考生的考号和笔试成绩显示在List2列表框中,如果成绩相同,则按考号从小到大的顺序显示。程序界面如图所示。

Dim kh(1 To 500) As String, cj(1 To 500) As Integer

Dim n As Integer ′参加考试总人数

Private Sub Form_Load()

Dim conn As New ADODB.Conncction

Dim rs As New ADODB.Recordset

conn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;datasource=”+App.Path + ”\BSCJ.accdb”

conn.Open

Set rs.ActiveConnection = conn

rs.Open “select * FROM scoreinfo”

′本过程其他代码略

End Sub

Private Sub Commandl_click()

Dim m As Integer, i As Integer, j As Integer

Dim t1 As Integer, t2 As String, flag As Boolean

For i = 1 To n - 1

  For j = 1 To

    If cj(i) < cj(j) Then

      t1 = cj(i): cj(i) = cj(j): cj(j) = t1

      t2 = kh(i): kh(i) = kh(j): kh(j) = t2

    EleIf      ①      Then

      t2 = kh(i): kh(i) = kh(j): kh(j) = t2

    End If

  Next j

Next i

m =     ②     

If m <= n Then

  i = m

  flag = Flase

  Do While i < n And Not flag
    If cj(i) = cj(i + 1) Then

      i = i + 1

 Else

             ③     

 End If
  Loop

  Text2.Text = Str(cj(m))

  Text3.Text = Str(i)

  For j = 1 To i

    List2.Addltem kh(j) + “ ” + Str(cj(j))

  Next j

Else

  Text2.Text = “面试人数超过了总人数”

End If

End Sub

返回首页

试题篮