a=15
b=46
If
:
print(‘True’)
else:
print(‘Flase’)
① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。
②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。
③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。
小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。
请回答下列问题:
Dim n As Integer '总人数/总作品数
Dim m As Integer '每人分配篇数
Dim a(1 To 500) As Integer '数组a大小满足处理要求
Dim c(1 To 100) As Integer '数组c大小满足处理要求
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
n = Val(Text1.Text): m = Val(Text2.Text)
Randomize
i = 1
Do While i <= m
For j = 1 To n
c(j) = 0 '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1
Next j
For j = 1 To n
If j = n - 1 And c(n) = 0 Then
①
Else
k = r(n, j)
End If
a((i - 1) * n + j) = k '分配数字k到当前方案的第j个位置上
c(k) = 1
Next j
If ② Then i = i + 1
Loop
s = ""
For i = 1 To n
s = "参赛者" & i & ":"
For j = 1 To m
s = s + Str(a((j - 1) * n + i))+ ","
Next j
List1.AddItem s
s = ""
Next i
End Sub
Function r(x As Integer, y As Integer) As Integer
'生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0
End Function
Function check(c As Integer) As Boolean
'本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE
Dim p As Integer, f As Boolean
f = True
p = 1
For i = 1 To c * n
If ③ Then
f = False: Exit For
End If
p = p mod n +1
Next i
check = f
End Function
① ② ③
Dim x As Integer,y As Integer
x=2:y=3
If x+y=5 Then x=x+2
y=x+y
该程序段运行后,x,y的值为( )
c=0
For i=1 To 10
If i Mod 2=0 Or i Mod 3=1 Then
c=c+1
End If
Next i
| Y=x Mod 7 If y=0 Then y=7 |
每个方块用一个代表其周围墙的数字之和(0≤p≤15)表示:1 表示西墙,2 表示北墙,4 表示东墙,8 表示南墙。城堡的内墙被计算两次,方块(1,1)的南墙同时也是方块(2,1)的北墙。城堡至少有两个房间。例如,图a的每个方块对应数字如图b所示。
图a
图b
程序运行界面如图c所示,现已知城堡地形对应的数字矩阵,要求出城堡一共有多少房间,最大 的房间有多大。小金利用深度优先搜索算法解决当 前问题,具体算法如下:
图c
在城堡中按行搜索,找到第一个未被搜索过方块, 以它为起点,分别按左、上、右、下的顺序向其四个方向试探,若发现一个方向上的方块是未被搜索过且可以通往的(无墙),则以这个方块为新起点,再重复上述试探。若当前方块四个方向上均无路可走,则返回上一个方块进行其他方向上的搜索,直至返回开始当前搜索的第一个方块且这个方块四个方向上也无路可走是,则本轮搜索结束。
Const m = 4 Const n = 7
Dim a(1 To m * n * 4) As Integer
Dim f(1 To m * n) As Boolean
Dim c(1 To m * n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, x As Integer, y As Integer
Dim area As Integer, max As Integer, cnt As Integer
'城堡地形对应的数字矩阵,存入 c 数组中,并显示在列表框 List1 中,f 数组初值为 false, 代码略
For i = 1 To m * n
x = c(i)
For j = 1 To 4
a((i - 1) * 4 + j) = x Mod 2
x = x \ 2
Next j
Next i
max = 0
For i = 1 To m
For j = 1 To n
IfThen
cnt = cnt + 1
area = Search(i, j)
If max < area Then
max = area
End If
Next j
Next i
Label1.Caption = "城堡一共有" + Str(cnt) + "个房间,最大的房间占" + Str(max) + "块方格."
End Sub
'从方块(x, y)开始搜索,并返回其所在房间所占方块数.
Function Search(ByVal x As Integer, ByVal y As Integer) As Integer
Dim i As Integer, j As Integer, sum As Integer, r As Integer, c As Integer
Dim pre(1 To m * n) As Integer '记录当前房间搜索的路径
Dim row(1 To 4) As Integer, col(1 To 4) As Integer
row(1) = 0: row(2) = -1: row(3) = 0: row(4) = 1
col(1) = -1: col(2) = 0: col(3) = 1: col(4) = 0
sum = 1: j = 1: pre(1) = x * 10 + y
f((x - 1) * n + y) = True
Do While True
For i = 1 To 4
r = x + row(i): c = y + col(i)
If r >= 1 And r <= m And c >= 1 And c <= n Then
If f((r - 1) * n + c) = False AndThen
sum = sum + 1
x = r: y = c
f((x - 1) * n + y) = True
j = j + 1
pre(j) = x * 10 + y
Exit For
End If
End If
Next i
If i > 4 Then
If j = 0 Then
Exit Do
x = pre(j) \ 10: y = pre(j) Mod 10
End If
Loop
Search = sum
End Function
a=4
b=5
If a<b Then
a=2*b
b=a+b
End If
Print a, b
执行上述程序段后,变量a的值是,变量b的值是。
S=0
For i=1 To 14
x=2*i-1
If x Mod 3 =0 Then s=s+1
Next i
小吴设计一个根据校验码校验物品代码的VB程序,功能如下:在文本框Text1中输入物品代码,单击“校验”按钮Command1,如果输入的校验码与计算所得的校验码一致,则输出“校验通过。”(如下左图所示),否则输出“校验不通过!”(如下右图所示)。
Dim s As String '用于存储输入的物品代码
Dim t As String
Dim i As Integer, j As Integer
Dim sum As Integer '用于存储计算校验码的累加和
Dim check_old As Integer '用于存储输入物品代码中的校验码Y
Dim check_new As Integer '用于存储按照前面9个数字X计算所得的新校验码
Dim a(1 To 10)As Integer
Private Sub Command1_Click()
'从物品代码中取出9个数字X依次存储到a(1)到a(9)中,取出校验码Y存储到a(10)中
s=
Text ①
j=0
For i=1 To 13
t=Mid(s, i, 1)
If(t>="0")And(t<="9") Then
j=j+1
a(j)=Val(t)
End If
Next i
'计算新的校验码并和输入的校验码进行比较
sum=0
For i=1 To 9
sum=sum+
②
Next i
check_new=
③
check_old=a(10)
If check_old=check_new Then
Label1.Caption="校验通过。"
Else
Label1.Caption="校验不通过! "
End If
End Sub
实现上述功能的VB程序如下,加框处代码有错,请改正。
①在搭乘一次地铁后可以获得一张优惠票,有效期为45分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于45分钟,即:t_bus-t_ subway <=45
②搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。
③搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。
小轩同学编写了VB程序计算最近公共交通出行的费用,程序运行时,在文本框Text1中输人小轩的公共交通出行记录(各数之间以逗号分隔),单击“获取数据”按钮Command1将数据按顺序存储在数组a中并在List1中显示。其中第i条出行记录乘坐的交通工具存储在数组元素a(3*i-2)中,0代表地铁,1代表公交车;第i条记录乘车的票价存储在数组元素a(3*i-1)中;第i条记录开始乘车的时间(距0时刻的分钟数)存储在数组元素a(3* i)中。如小轩最近6条乘车记录的数据为0,5,1,0,20,16,0,7,23,1,18,31,1,4,38,1,7,68在数组a中的存储结构如下表所示。
|
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
…… |
a(16) |
a(17) |
a(18) |
|
0 |
5 |
1 |
0 |
20 |
16 |
…… |
1 |
7 |
68 |
单击“计算”按钮Command2,则在标签Label2中显示小轩同学的公共交通出行总费用。程序运行界面如图所示。

Const maxn= 1005
Dima(1 To 3 * maxn) As Integer
Dim ticket(1 To 3 * maxn) As Integer
Dim i,n,k,x,y,cost As Integer
Dim tail,head As Integer
Dim s As String
Dim found As Boolean
Private Sub Command1_Click()
s= Text1.Text
k= 1
For i=1 To L en(s)
c= Mid(s,i,1)
If c="," Then k=k+1 Else
Next i
'将各条出行数据输出在列表框List1中,代码略
End Sub
Private Sub Command2_ Click()
head=1:tail= 1
For i=1 To k\ 3
If a(3 * i-2)=0 Then
cost= cost+a(3 * i-1)
ticket(3 * tail)=a(3 * i)+45
tail= tail+1
Else
Do While head < tail And ticket(3 * head) < < a(3 * i)
head= head+1
Loop
If found= False Then cost=cost+a(3 * i-1)
End If
Next i
Label2.Caption= Str( cost)
End Sub
Function pd(x As Integer, y As Integer) As Boolean
pd= False
For j=x Toy
If ticket(3 * j-1) >=a(3 * i-1) And ticket(3 * j-2)=0 Then
pd=True
ticket(3 * j-2)=1
Exit Function
End If
Next j
End Function
a=10
s=0
if a>5:
s=s+a
print(s)
① ② ③ ④ ⑤
B .
C .
D .
Private Sub Command1_Click( )
Dim x As Integer
Dim y As String
x=Val(Text1.Text)
If x>=95 Then
y=“非常满意”
ElseIf x>=80 Then
y=“满意”
ElseIf x>=60 Then
y=“基本满意”
Else
y=“不满意”
End If
Label1.Caption=y
End Sub
在文本框Text1中输入50,单击命令按钮Command1后,在标签Label1中显示( )
Private Sub Command1_ Click( )
Dim a(1 To 10) As Integer, i As Integer, k As Integer
a(1)=1:a(2)=17:a(3)=8:a(4)=9:a(5)=18
a(6)=15:a(7)=20:a(8)=13:a(9)=7:a(10)=11
k=0
For i= 2 To 9
If(a(i)-a(i-1))*(a(i+1)-a(i))< 0 Then k=k+1
Next
Text1. Text = Str (k)
End Sub
该程序段运行后后,文本框Text1中显示的内容是( )
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t1 As Integer, t2 As Integer
Dim s As String, c As String, st1 As Integer, st2 As Integer, max As Integer
s = Text1.Text: max = 0: st1 = 1
For i = 1 To Len(s) - 1
c = Mid(s, i, 1)
If c = "," Then
t1 = Val(Mid(s, st1, i - st1))
①
st2 = st1
For j = i + 1 To Len(s)
②
If c = "," Then
t2 = Val(Mid(s, st2, j - st2))
st2 = j + 1
End If
Next j
End If
If j>0 Then t2 = Val(Mid(s, st2, j - st2))
If Abs(t1 - t2) > max Then max = Abs(t1 - t2)
Next i
shuchu.Caption = "所有数之间绝对值相差最大为:" + Str(max)
End Sub
① ②
1)如果“-”号右边的字符按照ASCI码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“-”号,例如:“c-g”输出为“cdefg”,“3-7”输出为“34567”。

2)如果“-”号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,保留中间的“-”号,例如:“a-a”输出为“a-a”,“4-1”输出为“4-1”。
3)如果“-”号右边的字符恰好是左边字符的后继,则删除中间的“-”号,例如“d-e”应输出为“de”,“3-4”应输出为“34”。
某同学按照上述算法,编写了VB程序,功能如下:在文本框Text 1中输入简写字符串,单击“展开”按钮Command 1,程序进行字符串展开处理并显示在文本框Text 2中。程序运行界面如图所示。
Private Sub Command1_Click()
Dim st1 As String, st2 As String, i As Integer
st1=Text1. Text
n=Len(st1)
st2=""
For i=1 To n
If pos(st1, i)Then<> "-" Then
st2=st2+pos(st1, i)
Else
If pos(st1, i-1)<pos(st1, i+1) Then
For j=Asc(pos(st1, i-1))+1 To Asc(pos(st1, i+1))-1
Next j
Else
st2=st2+"-"
End If
End If
Next i
Text2. Text=st2
End Sub
Function pos(s As String, x As Integer) As String '返回字符串s中x位置的字符
End Function
li = map(int, input(). split())
cnt=0
for i in li:
if :
cnt+=1
print("奇数有{}个。". format(cnt))
s=Text1. Text
s1=" "
For i=1 To Len(s)
c= Mid(s, i, 1)
If c>= "A" And c <= "Z" Then
c= Chr(Asc(c)+ 32)
ElseIf c>="a"Andc<(="z"Then
c=Chr( Asc(c)-32)
End If
s1=c+s1
Next i
Text2. Text=s1
该程序段运行后,若在文本框Text1中输入 “Ab12CD”,则 文本框Text2中显示的内容是( )
n="p4y2t3h1o9n4";p=""
for i in n:
if "0"<=i<="9":
if p=="":
p+=i
elif i>=p[-1]:
p+=i
elif i<p[0]:
p=i
执行该程序段后,则p的值是( )