试题

试题 试卷

logo

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

浙江省诸暨市牌头中学2018届高三上学期信息技术期中考试试题

【加试题】某排序算法思想如下:若有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

 ② 

举一反三
编写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

某次考试的流程为先笔试再面试,笔试成绩达到面试资格线的可以入围参加面试。入围面试的资格线根据计划录取人数的200%划定,即如果考试最终录取x人,则第2*x名选手的笔试分数为面试资格的分数线(该分若有同分者可一同参与面试)。现在编写VB程序功能如下:自动读取数据库中考生考号和笔试成绩,依次存储在数组kh(i)、cj(i)中,并显示在List1列表框中。单击“入围划线”按钮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.connection:Dim rs As New ADODB.Recordset

conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=”

+App.Path+”\BSCJ.accdb”

conn.Open

set rs.activeconnection=conn

rs.Open“select*FROM scoreinfo”

‘本过程其他代码略 End Sub

Private Sub Command1_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 =      ①         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 Elseif cj(i) = cj(j) And kh(i) > kh(j) 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 = False

Do While        ③        If cj(i) = cj(i+1) Then

i = i+1 Else

flag = True End If

Loop

Text2.text = Str(cj(m)) Text3.text = Str(i)

For j = 1 To i

List2.AddItem kh(j) + “ ” + Str(cj(i)) Next j

Else

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

End Sub

返回首页

试题篮