试题详情
操作题 适中0.65 引用1 组卷21
小明设计了一个算法,来实现10个11-99之间随机数字的升序排序,并去掉重复数字。程序设计思想如下:a(1)~a(10) 用于存放原数据,b(1)~b(num) 用于存放排序完成后的结果,对于每个待排数字a(i),先在b数组中查询是否存在,如不存在,则放入到b数组中。程序运行界面如下图所示。

VB代码实现如下:
Const n = 10
Dim a(1 To 100) As Integer
Dim b(1 To 100) As Integer
Private Sub Form_Load()

'随机生产10个11-99之间的数字,并依次存储在数组a中,代码略

End Sub
Private Sub Command1_Click()

Dim num As Integer, L As Integer, R As Integer, i As Integer

Dim m As Integer, f As Boolean

num = 1: b(1) = a(1)

For i = 2 To n

b(num + 1) = a(i) + 1

f = False

For j = 1 To num + 1

If a(i) < b(j) Then

Exit For

ElseIf a(i) = b(j) Then

End If

Next j

If Not f Then

For k =

b(k + 1) = b(k)

Next k

num = num + 1

End If

Next i       

'最终将数组b的排序结果输出到文本框中,代码略

End Sub
根据如上代码,请回答下列问题:
(1)若要清除文本框Text1中的内容,能实现该功能的语句是___________
(单选,填字母:A.Text1.clear / B.Text1.Text=“”/ C.Text1.Caption=“”)
(2)请在划线处填上合适的代码。
__________________
__________________
(3)程序中加框处代码有错,请改正。
改正:___________________
20-21高二下·浙江绍兴·期末
知识点:VB程序的调试 答案解析 【答案】很抱歉,登录后才可免费查看答案和解析!
类题推荐
某城市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:

在搭乘一次地铁后可以获得一张面额为本次地铁价格的优惠券,有效期为60分钟,在有效期内可以使用这张优惠券,免费搭乘一次票价不超过这张优惠券的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于60分钟。搭乘地铁获得的优惠券可以累积,即可以连续搭乘若干次地铁后再连续使用优惠券搭乘公交车,但每次搭乘公交车只能使用一张优惠券。搭乘公交车时,如没有合适的优惠券,则自己全额支付;如果有多张优惠券满足条件,则优先消耗获得最早的优惠券。

小叶同学根据优惠政策,编写了计算优惠后需要支付费用的程序,同时将乘车记录按时间先后顺序逐行显示。在Text1里输入乘车记录的数量n,Text2里输入n组数据,每组乘车记录有3个数据,依次是车型(1表示地铁、2表示公交)、开始乘车时间、乘车票价。每个数据以逗号结尾。不会有两次乘车记录出现在同一分钟。数组d存储乘车记录的结构如图a所示:

第1条乘车记录

第2条乘车记录

……

数组中的位置

1

2

3

4

5

6

……

对应的值

2

200

3

1

3

7

……

车型

开始时间

票价

车型

开始时间

票价

……


程序界面如图b所示:
图b
(1)在VB表达式Val(Text1.Text)中,Val、Text1、Text依次表示________(单选,填字母:A.方法名、属性名、事件名/B.函数名、对象名、方法名/C.函数名、对象名、属性名)。
(2)实现上述功能的程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有误,请改正。
Dim yh(1 To 100)As Integer,flag(1 To 100)As Boolean,dt As Integer
Dim d(1 To 100)As Integer’存储乘车的记录
Private Sub Command1_Click()
   Dim i As Integer,j As Integer,k As Integer
   Dim sum As Integer,n As Integer,c As String,s As String
   n=Val(Text1.Text):s=Text2.Text:j=1:k=1
   For i=1 To Len(s)
     c=Mid(s,i,1)
     If c="," Then
       ___
       j=i+1:k=k+1
     End If
   Next i
   For i=1 To n-1
     For j=3*n-1 To ___Step-3
If d(j)<d(j-3)Then
   temp=d(j+1):d(j+1)=d(j-2):d(j-2)=temp
   temp1=d(j):d(j)=d(j-3):d(j-3)=temp1
          temp2=d(j-1):d(j-1)=d(j-4):d(j-4)=temp2
       End If
     Next j
   Next i
’按行输出乘车记录,代码略
   dt=0
   For i=1 To k-1 Step 3’yh(dt)存储第dt张优惠券的乘车记录在数组d中的起始位置
        If d(i)=1 Then dt=dt+1:yh(dt)=i
     Next i
     sum=d(3)
     For i=2 To n
       For j=1 To dt
          If yh(j)3<i Then
             If(d((i-1)*3+1)=2)And(d((i-1)*3+2)-d(yh(j)+1)<=60)And flag(j)=False And()Then___
                  flag(j)=True:Exit For
             End If
          End If
        Next j
        If j=dt+1 Then sum=sum+d(3*i)
     Next i
     Label1.Caption=Text1.Text+"次乘车支付的总费用是:"Str(sum)
   End Sub
“奔跑吧,兄弟”栏目组要在全国各地挑选节目录制的地点。有来自K(1<=K<=25)个不同省份的N(K<=N<=100)个地区送来了各自的竞选材料。由于参选地区太多,没有办法同时呈现所有材料供评委进行选择。栏目组决定选择一段连续区间内的参选地区,这个区间内每个省份的参选地区至少要有1个,求满足要求的最小区间长度。参选地区用数字1,2,3…N表示,每个地区所属的省份依次存入数组a(1)到a(N),若1号地区的省份编号是3,即a(1)=3,分析可知,所求区间的长度至少为K(省份的数量),最大为N(地区的数量),我们可以通过二分K到N之间的数求得最小区间长度。例如有10个参选地区,分别来自5个不同的省份,从左到右排列,地区编号依次2,124335,3,5,4,则最小的一段包含所有5个地区的区间是从第2个到第7个地区,区间长度为6。
(1)若有12个参选地区,分别来自6个不同的省份,从左到右排列,地区编号依次为2,1,6,4,6,3,1,2,3,5,5,4则最小的区间长度为_________________________________
(2)请在划线处填入合适的代码。
①处代码______________;②处代码______________;③处代码______________
Dim a(1 To 100)As Integer, T As Integer, N As Integer
Private Sub Form _Load()
'产生N的值,表示地区数,产生K的值,表示省份数
'产生编号为1到N的地区的省份编号,并存储在数组a中
'代码略
End Sub
Private Sub Command1_Click()
Dim M As Integer
i=K:j=n
Do While i <=j

If bh(M)= True Then

j=M-1

ans =M

Else

i=M+1

End If

Loop
Text1.Text=Str(ans)
End Sub
Function bh(M As Integer)As Boolean
Dim f(1 To 25)As Integer        'f(i)表示省份为i的地区是否包含
Dim t As Integer     
bh=False
For i=1 To n-M+1   '枚举以i为起点的M个地区中各个省份是否都包含

For j=

f(a(j))=1

Next j

t=0

For j =1 To K

Next j

If t=K Then bh = True:Exit Function

For j=1 To K

f(j)=0

Next j

Next i
End Function

组卷网是一个信息分享及获取的平台,不能确保所有知识产权权属清晰,如您发现相关试题侵犯您的合法权益,请联系组卷网