试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省杭州地区重点中学2018-2019学年高二下学期信息技术期中考试试卷

罗列对分查找中可能查到的中点。对分查找是我们常用的查找方式。在对分查找过程中,计算中点是非常重要的步骤。以下程序实现了“罗列对分查找中可能查到的中点”的功能。算法如下:用户在文本框Text1中输入模拟对分查找数据的个数n,单击“产生随机数并升序排列”按钮,在List1中显示n个不重复且已经升序排列的数(范围[1,100]),单击“可能查到的中点”,在list2中分行显示各个可能查到的中点

(1)、实现上述功能的VB程序如下,请在划线处填入合适代码。

Private Sub Command1_Click()

Dim i As Integer

Randomize

For i = 1 To 100

  f(i) = False

Next i

n = Val(Text1.Text)

For i = 1 To n

  t = Int(Rnd * 100 + 1)

  Do While f(t) = True

  Loop

  f(t) = True

Next i

j = 0

For i = 1 To 100

  If  Then

    j = j + 1

a(j) = i

List1.AddItem Str(i)

  End If

Next i

End Sub

Private Sub Command2_Click()

Dim b(1 To 100) As Integer, k As Integer, c As Integer, max As Integer

Dim s As String

Dim j As Integer

n = Val(Text1.Text)

max = 0

For k = 1 To n

 i = 1: j = n: c = 0

 Do While i <= j

  m = (i + j) \ 2: c = c + 1

  If c > max Then max = c

  If m = k Then b(m) = c: Exit Do

  If m < k Then i = m + 1 Else j = m - 1

 Loop

Next k

For i = 1 To max

 s = ""

 For j = 1 To n

  If  Then

   s = s + Str(a(j))

  Else

   s = s + ""

  End If

 Next j

List2.AddItem s

Next i

End Sub

(2)、当数据是11,22,33,44,55,66,77,88,99时,第3行第3个数为
举一反三
小明利用所学的信息技术知识帮助语文老师设计一个语文学考等级查询系统,要求如下:输入某个等级,就能查出该等级的所有学生学号和姓名,并统计出该等级学生的人数,以便语文老师方便了解学生的学考情况。语文学考成绩分A、B、C、D、E五个等级,学生信息存储在数据库文件“stugrade.accdb”的数据表“Chinese”中,数据表“Chinese”的结构如图1所示。

VB程序运行界面如图2所示,在文本框Text1中输入查询的等级,单击“查询”按钮Command1,在列表框List1中显示所有该等级的学生学号和姓名,并按照学号从小到大排序,并在标签Label2处显示学生的人数,如果人数为0,则在列表框中显示“没有该等级的学生”。按此要求编写程序如下,在下划线处填上合适的代码。

Private Sub Command1_Click()

Dim stuna(1 To 100) As String '存放学生姓名的数组定义为stuna

Dim stunum(1 To 100) As String '存放学生学号的数组定义为stunum

Dim i As Integer, j As Integer, n As Integer

Dim t As String

Dim cn As New ADODB.Connection       '连接数据库

Dim rs As New ADODB.Recordset

Dim strSQL As String

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

cn.Open

strSQL = "select * from      ①       where 语文等级='" + Text1.Text + "'"

Set rs.ActiveConnection = cn

rs.Open strSQL

n = 0

Do While Not rs.EOF

          ②    

   stuna(n) = rs.Fields("姓名").Value

   stunum(n) = rs.Fields("学号").Value

   rs.MoveNext       

Loop

rs.Close

cn.Close

Set rs = Nothing

Set cn = Nothing

List1.Clear '清除列表框

If n = 0 Then

   List1.AddItem "没有该等级的学生"

Else

   For i = 1 To n - 1       '按姓名排序

      For j = n To    ③    Step -1

         If        ④          Then      

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

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

         End If

     Next j

   Next i

   For i = 1 To n

      List1.AddItem stunum(i) + "  " + stuna(i)

   Next i

   Label2.Caption = "该等级的学生共有" + Str(n) + "名"

End If

End Sub

其中①处填入          ;②处填入           ;③处填入           ;④处填入           

下列VB程序实现数字字母混合序列分离后分别排序,最后又合并输出。具体算法如下:在文本框Text1输入若干组混合序列,每组序列中仅包含一组字母和一个多位数字,序列之间用逗号隔开,以逗号结束。单击“排序”按钮command1,把每组序列中的字母和数字分开,并分别排序,最后在列表框list1输出。排序规则如下:所有数字按从小到大升序排序,字母序列按长度升序排序,若长度相同,直接按字母序列大小升序排序(按字母的ASCII码排序,“A”<“Z”<“a”<“z”)。实现算法的部分程序界面如图所示,VB程序代码如下,回答下列问题:

Private Sub Command1_Click()

Dim a(1 To 6) As Integer, b(1 To 6) As String, i as integer, j as integer

Dim c As String, k As Integer, tmp1 As Integer, tmp2 As String

s=text1.text

i = 1: k = 1: tmp1 = 0: tmp2 = ""

Do While i <= Len(s)

      c = Mid(s, i, 1)

      If c = "," Then

         a(k) = tmp1: b(k) = tmp2

         tmp1 = 0: tmp2 = ""

              ①    

      Else

        If  Then 

           tmp2 = tmp2 + c

        Else

         tmp1=tmp1*10+val(c)

        End If

      End If

      i = i + 1

    Loop

    For i = 1 To 5

      For j = 1 To 6 - i

        If a(j) > a(j + 1) Then tmp1 = a(j): a(j) = a(j + 1): a(j + 1) = tmp1

    If Len(b(j)) > Len(b(j + 1)) Or      ②       Then

          tmp2 = b(j): b(j) = b(j + 1): b(j + 1) = tmp2

        End If

      Next j

    Next i

    For i = 1 To 6

      List1.AddItem Str(a(i)) + b(i)

    Next i

    End Sub

返回首页

试题篮