组卷网 > 高中信息技术综合库 > 算法软件操作 > VB程序的调试
题型:操作题 难度:0.4 引用次数:9 题号:10008277
某会所采用会员制度,对会员消费实行积分奖励,利用VB编写一个程序,实现的功能:在文本框Text1、Text2中输入一个积分的范围,在列表框List2中显示该范围内的会员编号和对应的积分。多个会员可能有相同的积分,先用对分查找法找到该范围内的最小积分编号的下标,再循环输出该范围的会员编号情况。程序运行界面如图所示。

                           

程序代码如下,为实现以上功能,请在划线处填写合适的代码:
Dim jf(800)As Integer,hyh(800)As String,n As Integer
Dim n As Integer '表示会员的总人数
Private Sub Form Load()

'从数据库中读取会员编号和积分,并按积分值从小到大排序,显示在列表框List1中

For i=l To n

List1. AddItem hyh(i)+"   "+Str(jf(i))

Next i

End Sub
Private Sub Command1_Click()

Dim i As Integer,j As Integer,m As Integer,k1 As Integer,k2 As Integer

k1=Val(Text1. Text):k2= Val(Text2. Text)

If k1> k2 Then t=k1:k1=k2:k2=t

If k1>jf(n)Or k2 jf(1)Then

List2. AddItem "没有找到该范围的数据!"

Text3. Text="0":Exit Sub

End If

i=l

j=n

Do While i<=j

m=Int((i+j)/2)

If jf(m)>k1 Then

j=m-1

Elself jf(m)<k1 Then

i=m+1

Else

If ______ Then

j=m-1

Else

p=m

Exit Do

End If

End IF

Loop

If i>j Then p=______

k=0

Do While ______ And p<=n

List2. AddItem hyh(p)+"   "+ Str(jf(p))

______

p=p+1

Loop

Text3. Text=Str(k)

End sub
【知识点】 VB程序的调试

相似题推荐

操作题 | 较难 (0.4)
【推荐1】小陈基于对分查找思想编写了一个三分查找VB程序,功能如下:在文本框Text1中显示n个升序排列的数。在文本框Text2中输入查找目标值key。单击“查找”按钮后,若能找到则输出key在数列中的下标位置;若找不到则输出key邻近数的下标位置。例如,当文本框Text2中输入“35”时,输出下标位置“4”;当文本框Text2中输入“33”时,输出下标位置“3,4”。程序运行界面如图所示。

实现上述功能的VB程序如下:

(1)程序窗体中“查找”按钮的对象名是_________

(2)加框处代码有误,请改正;

(3)请在划线处填入合适代码。

Const n = 10

Dim a(1 To n) As Integer

Private Sub Form_load()

’获取一组正整数,按升序排列后依次存入

’数组a并显示在文本框Text1中,代码略

End Sub

Private Sub Cmd1_Click()

         Dim i As Integer,j As Integer
         Dim mid1 As Integer, mid2 As Integer

    key = Val(Text2.Text)

i = 1 : j = n : flag = False

         Do While i <= j And Not flag
            mid1 = Int(i + (j - i)/ 3)
            ____________           
                 If key = a(mid1) Or key = a(mid2) Then
                       flag = True
                 ElseIf key < a(mid1) Then
                       ________       

ElseIf key > a(mid2) Then

                       ________       
                 Else
                       i = mid1 + 1
                       j = mid2 - 1

End If

Loop

If Then  ’改错________

       List1.AddItem Str(mid1)
            ElseIf flag Then
     List1.AddItem Str(mid2)   
            Else
                 List1.AddItem Str(j) + Str(i)

End If

    End Sub
2022-04-18更新 | 8次组卷
操作题 | 较难 (0.4)

【推荐2】气象学上将日平均气温连续 5 天等于或低于 10℃算作入冬。编写 VB 程序, 读取某月每日最高气温与最低气温数据(该月为 30 天,且本月气温最高不超过30℃,最低不低于0℃), 温度以“最高温度~最低温度”的格式显示在列表框 List1 中;单击“统计”按钮Command1判断该月是否已经入冬,并统计得到该月最低日均气温,结果在 Text1 中呈现。程序运行界面如图所示。

(1) 某月 1 号~10 号每日最高气温与最低气温数据如下表所示:
日期1 号2 号3 号4 号5 号6 号7 号8 号9 号10 号
最高气
温℃~
最低气
温℃

22~14

17~12

10~4

10~2

8~1

11~8

17~5

15~4

19~7

19~7
若程序运行后,数组元素f(7)的值为________
(2) 请在划线处填入合适的代码。
Dim a(1 To 30) As String
Private Sub Form_Load()
‘读取本月每日气温数据,存储于数组 a 中并在列表框 List1 中显示,过程略。
End Sub
Private Sub Command1_Click()
Dim temp(1 To 60) As Integer
Dim length As Integer, t As Integer, j As Integer
Dim ave As Single
Dim f(30) As Integer
Dim flag As Boolean
For i = 1 To 30

length = Len(a(i))

j = 1: t = 1

Do While j <= length

If Not (Mid(a(i), j, 1) <= "9" And Mid(a(i), j, 1) >= "0") Then

temp(2 * i - 1) = Val(Mid(a(i), t, j - t))

________

End If

j = j + 1

Loop

temp(2 * i) = Val(Mid(a(i), t, j - t))

Next i
f(0) = 0: low = 30: flag = False
For i = 1 To 30

ave = (temp(i * 2 - 1) + temp(i * 2)) / 2

If ave < low Then low = ave

If Not flag Then

If ave <= 10 Then

_________

Else

f(i) = 0

End If

If f(i) = 5 Then

Text1.Text = "本月已入冬"

flag = True

End If

End If

Next i
If ________ Then Text1.Text = "本月尚未入冬"
Text1.Text = Text1.Text + " " + "本月日均气温最低为: " + Str(low)
End Sub
2022-01-15更新 | 12次组卷
操作题 | 较难 (0.4)
【推荐3】对一段字符(仅包含大小写字母和数字)加密,加密规则为:①字母和数字都往后循环顺移3位:如“a”变为“d”,“y”变为“b”;“0”变为“3”,“7”变为“0”,②加密后字母在前,数字在后,③字母按逆序排列,数字按顺序排列,如输入明文“a1b7Z8x3”,密文为“aC3d4016”。

                                      

(1)根据程序代码分析,“加密”按钮的名称是___________
(2)根据加密规则明文“9G78fbY5”,则密文为__________
(3)请在划线处填入合适的代码:
Private Sub Com_jm_Click()
Dim x As String, ch As String, cl As String
Dim sl As String, s2 As String, s As String
Dim i As Integer, n As Integer, y As Integer
x=Text1.Text
n=Len(x)
For i=1 To n

ch=Vid(x, i, 1)

If ch>= "0" And ch<= "9" Then

____

s2=s2 & Str(y)

Elself ch>= "a" And ch<=" z" Then

y=(Asc(ch)-Asc("a")+3) Mod 26

____

s1=c1+s1

Else

y=(Asc(ch)-Asc("A")+3) Mod 26

c2=Chr(Asc("A")+y)

s1=c2+sl

End If

Next i
____
Text2.Text=s
End Sub
2020-04-10更新 | 22次组卷
共计 平均难度:一般