试题

试题 试卷

logo

题型:单选题 题类:模拟题 难易度:困难

浙江省2019年信息技术选考模拟试卷五

【加试题】以下程序段对数组a 中的8个数据a(1)到a(8)进行加工。

i = 1 : k = 0

Do While i<= 3

For j = 8 To i + 1 Step -1

If a(j) >= a(j - 1) Then

t = a(j): a(j) = a(j-1): a(j-1) = t

k = k + 1 

End If

Next j

i = i + 1

Loop

若数组a中的数据依次为“24,29,31,24,12,10,12,25”,则加工结束后,变量k的值为(  )

A、9 B、11 C、13 D、15
举一反三
【加试题】某校举行班班有歌声比赛,参赛班级的成绩按照班级序号保存在“bbygs.accdb”数据库文件中,为了快速计算每个班级最终的分,设计了一个VB程序,该程序能够将8个评委的打分按照从高到低的顺序排序,然后去掉一个最高分和一个最低分,最后计算平均值作为参赛班级的成绩。程序界面如图:单击“提取”按钮Command1,在列表框list1中显示班级序号和该班级8个评委的打分成绩,单击“排序”按钮Command2后,在列表框list2中按降序排序。单击计算得分按钮Command3,在文本框text1中显示最终成绩。按此要求编写程序如下:

Dim class(1 To 30) As Integer '存放班级序号的数组定义为class

Dim score(1 To 8) As single '存放班级各评委打分的数组定义为score

Private Sub Formload()      '提取某班级的评委打分

   Dim conn As New ADODB.Connection

Dim rs As New ADODB.Recordset

   conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\bbygs.accdb "

   conn.Open

   Set rs.ActiveConnection = conn

   rs.Open "SELECT * FROM score " 

   n = 0

Do While Not rs.EOF   '到最后一条记录后退出循环

   n = n + 1

   class (n) = rs.Fields("班级序号").Value

   score (n) = rs.Fields("评委打分").Value

   rs.MoveFirst      '①指针移动到下一条记录

Loop

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing

for i=1 to n

    List1.AddItem str(score(i))

Next i

End sub

Private Sub Command1Click()  

Dim i as integer

Dim j as integer

Dim t as single

For i = 1 to 8

  For j=1 to i

    If   ②  then  

t=score(j) 

score(j)=score(j+1)

score(j+1)=t

End if

  Next j

Next i

For i=1 to 8

   List2.AddItem str(score(i))

Next i

End sub

Private Sub Command2Click()   '计算班级平均得分

Dim i As Integer

Dim sum As single

For i=2 to 7

   sum=sum+score(i)

Next i

Text1.text=  ③ 

End sub

“中国好声音”节目组要小杰用VB编写一个程序:现场将有900个观众,要在900个观众中产生10个中奖号码的程序,每位观众用三位数字进行编号,要求产生的10个号码不能重复,并且升序排列输出。

①检查产生号码是否重复:把产生的中奖号码放在数组a中,新产生的号码与已经产生的号码进行一一对比,如果找到相等的数,则重新产生新号码。

②找到新产生号码存放的数组下标:从下标为1的数组元素开始,新号码(第i个号码)分别与他们进行一一比较,找到第一个比新号码大的数,该数所在的下标就是新号码应存放的下标。如果在已经产生的数中没有找到比新号码大的数,则新号码应存放在下标为i的数组元素中。下表以产生第5个号码为例,如果产生的号码是130,第一个比他大的数是a(2),下标为2的数组元素应存放新号码;如果产生的号码是300,则新号码应存放在下标为5的数组元素中。

数组元素

a(1)

a(2)

a(3)

a(4)

数组元素的值

110

168

215

267

③移动数组元素到新的位置:如果在已经产生的号码中找到比新号码大的数,从上一个产生的号码开始,到新号码应存放的数组元素,依次把他们向后面移动。以②中产生130为例,从a(4)开始,让a(5)的值等于a(4),a(4)的值等于a(3),依次类推,直到新号码应存放的数组元素a(2)为止。

④将新产生的号码放在相应的数组元素中。

程序运行的界面如下图所示,实现上述功能的VB程序代码如下:

Dim a(10) As Single

Private Sub Command1_Click()

Dim i As Integer, j As Integer

Dim temp As Single, k As Integer   'temp产生随机数,k随机数存放数组元素的下标

Randomize

a(1) = Int(Rnd() * 900 + 100)

For i = 2 To 10

  temp = Int(Rnd() * 900 + 100)

  If seach(temp, i - 1) = True Then

    i = i - 1

  Else

k = i

    For j = 1 To i - 1

        If  temp < a(i)  Then k = j: Exit For   ‘①

    Next j

    For j = i - 1 To k Step -1

      a(j + 1) = a(j)

    Next j

         ②    

  End If

Next i

List1.Clear

For i = 1 To 10

  List1.AddItem Str(a(i))

Next i

End Sub

‘函数实现在数组a中,从下标为1的数组元素到下标为t数组元素,查找有无s的数值

Function seach(s  As Single, t As Integer) As Boolean

Dim i As Integer

seach = False

For i = 1 To t

  If     ③    Then seach = True: Exit For

Next i

End Function

返回首页

试题篮