试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省普通高校招生信息技术选考模拟卷(一)

【加试题】字符串排序。编写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

 ② 

举一反三
摘苹果游戏。游戏中的苹果树结了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

返回首页

试题篮