试题

试题 试卷

logo

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

浙江省嘉兴市、丽水市2017-2018学年选考信息技术教学测试试卷(3月)

【加试题】随机产生一个存有两位整数组a,先排序,然后进行数据重组,使被排序的数据呈现中间小,并逐次向两边增大。小李编写了该VB程序,运行程序时,在列表框List1中显示排序前数据,单击“重组”按钮Command2,在列表框List2中显示“重组”后的数据,程序运行界面如图所示。

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

Dim a(0 To 20)As Integer,d(0 To 20)As Integer

Dim n As Integer

Private Sub Command1_Click()

‘产生n个[10,99]之间的随机整数,存储在a(0 To n-1)中,同时显示在List1中,代码略

End Sub  

Private Sub Command2_Click()

    Dim i As Integer  

    n=Val(Text1.Text)   

    For i=0 To n-2    

      For j=i+1 To n-1  

        If     Then            ‘(1)

          temp=a(i):a(i)=a(j):a(j)=temp

        End If

     Next j

Next i 

If n Mod 2<>0 Then  d(n\2)=a(n-1)  ‘个数为奇数,最小值放中间位置

    For i=0 To n\2—1

    d(i)=a(i*2)

=a(2*i+1)               ‘(2)

Next i

  ‘在列表框List2中输出数组d,代码略

  End Sub

(1)、处加框代码应改为

(2)、处加框代码应改为

举一反三
【加试题】某公司需要设计一个生日查询系统:输入某个日期,就能查出在这天生日的所有员工姓名,并统计出生人人数,以便于公司提前为员工准备生日礼物。员工信息存储在数据库文件“员工信息.mdb”的数据表“members”中,数据表“members”的结构如下:

VB应用程序界面如上图所示,在文本框text1中输入查询的日期(以月日形式,如0623),单击“查询”按钮,在列表框中显示所有这个日子出生的员工姓名(按姓名排序),并在Label3处显示员工数量,如果人数为0,则在列表框中显示“本天没有员工生日”。

解决此问题的VB程序如下,阅读程序并完成后面的问题。

‘定义存放员工姓名的数组na

Private Sub CmsqClick()

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

  Dim t1 As String

  ‘连接数据库获取数据

  Dim cn As new connection

  Dim rs As new recordest

  Dim str1 As String , str2 As String

     str1 =”driver=Microsoft access driver(*.mdb)”;dbq=”&app.path”&”员工信息.mdb”

     cn.open str1

     str2 = “select * form members where 生日 =’“ + text1.text + ”’”

     rs.open str2 , cn.adOpenDynamic ,adLockOptimistic

     n = 0

     Do While Not Rs.EOF

       n = n + 1

       na(i) = rs.Fields(“姓名”).value

       rs.MoveNext

     Loop 

     rs.close

     cn.close

‘按姓名排序

If n = 0 Then

  List1.AddItem “本天没有员工生日”

Else

  For i = 1 to n-1

    For j = 1 to n+1 Step -1

      If na(j) < na(j-1) Then

        t1 = na(j) :     ①      : na(j-1) = t1

      End If

    Next j

   Next i

   For i = 1 to n

     List1.AddItem     ②   

   Next i

   Label3.Caption = “这天共” + Str(n) + “位员工生日”

  End If

End Sub

摘苹果游戏。游戏中的苹果树结了n个苹果,每个苹果有一个地面高度和摘它所需要的力气,要摘到苹果,必须具备高度和力气两个条件,每摘一个苹果都要用掉一定的力气。小林的可用力气是个有限值s,小林手伸直后能摘的最大高度为b,她可以借助的梯子的高度为a。游戏中苹果的高度和所需力气分别存储在数组 h和数组c中。程序运行界面如图所示。运行程序后,输入梯子高度a、手伸直高度b、可用力气s的值, 单击“计算”按钮(Command1),在文本框Text4中输出小林最多能摘得的苹果数ans。

相应程序如下,在划线处填入适当的语句和代码,把程序补充完整。

Dim c(1 To 100) As Integer, h(1 To 100) As Integer, d(1 To 100) As Integer

Dim n As Integer

Private Sub Form_Load()

     ‘从数据库中读取n个苹果的摘取所需力气和高度存放在数组c和h中,并显示在List1中,代码略

End Sub

Private Sub Command1_Click()

Dim a As Integer, b As Integer, s As Integer, i As Integer, j As Integer, m As Integer

a = Val(Text1.Text)     ‘梯子高度

b = Val(Text2.Text)     ‘手伸直高度

s = Val(Text3.Text)     ‘可用力气

m = 0

For i = 1 To n     ‘将所有能够摘得的苹果所需力气存储到数组d中

  If{#blank#}1{#/blank#}Then

m = m + 1

d(m) = c(i)

  End If

Next

For i = 1 To m - 1

  k = i

  For j = i + 1 To m

If{#blank#}2{#/blank#}Then k = j

  Next

  If k <> i Then

t = d(k): d(k) = d(i): d(i) = t

  End If

Next

ans = 0     ‘用剩余的力气去摘最多的苹果

For i = 1 To m

  If s >= d(i) Then

{#blank#}3{#/blank#}

ans = ans + 1

  End If

Next

Text4.Text = Str(ans)
End Sub

【加试题】字符串排序。编写VB程序,实现如下功能:程序运行时,单击命令按钮Command1 产生100个随机字符串(每个字符串长度不超过10),并显示在列表框List1中,单击命令按钮Command2对产生的100个随机字符串按权值进行降序排序,将排序结果显示在列表框List2中。每个字符串的权值定义为该字符串中ASCII码值最大的字母的ASCII码值,例如字符串“Hello”中ASCII码值最大的字母是“o”(ASCII码值为111),则字符串“Hello”的权值为111。程序运行效果如图所示。实现上述功能的VB代码如下,但加框处代码有错,请改正。

Dim a(1 To 100) As String '依次存放100 个随机字符串

Dim b(1 To 100) As Integer '依次存放每个字符串的权值

Private Sub Command1_Click() '产生100 个随机字符串

Dim i As Integer, k As Integer, t As Integer, x As Integer

Randomize

For i = 1 To 100

k = Int(Rnd * 10 + 1) : t = 0  'k 表示第i 个字符串的长度

Do While t < k '通过循环依次产生第i 个字符串a(i)的k 个字符

If Int(Rnd * 2 + 1) = 1 Then '产生一个小写字母的ASCII 码值

x = Asc("a") + Int(Rnd * 26)

Else

x = Asc("A") + Int(Rnd * 26) '产生一个大写字母的ASCII 码值

End If

                '①

If b(i) < x Then b(i) = x

t = t + 1

Loop

List1.AddItem a(i)

Next i

End Sub

Private Sub Command2_Click() '对100 个字符串按字符串权值降序排序

Dim i As Integer, j As Integer, y As Integer

Dim s As String

For i = 1 To 99

k = i

For j = i + 1 To 100

    '②

Next j

If k <> i Then

s = a(k): a(k) = a(i): a(i) = s

y = b(k): b(k) = b(i): b(i) = y

End If

Next i

For i = 1 To 100

List2.AddItem a(i)

Next i

End Sub

①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#} 

返回首页

试题篮