Private Function bw(x As Integer, y As String) As String
'函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数
Dim r As Integer, i As Integer
r = x Mod 4
If r <> 0 Then
For i = 1 To 4 - r
y = "0" + y
Next i
x = Len(y)
End If
bw =
End Function
Private Sub Command1_Click()
Dim m As String, n As Integer, i As Integer, a As Integer
Dim s As Integer, s1 As String, j As Integer
m = Text1.Text
n = Len(m)
Text2.Text = ""
m = '调整m的位数为4的倍数
For i = 1 To n - 3 Step 4
s = 0
For j = i To i + 3
a = Val(Mid(m, j, 1))
s =
Next j
If s >= 10 Then
s1 = Chr(Asc("A") + s - 10)
Else
s1 = CStr(s) '函数CStr类似于Str,但无前导空格
End If
Text2.Text = Text2.Text + s1
Next i
End Sub
a=2
b=a+5
If a Mod b=2 Then
a=a+2
b=a+b
End If
b=b+2
Text1.Text=Str(b)
该程序运行后,文本框Text1上显示的内容为。
s=1
For i=1 To 20
If i Mod 5=0 Then
s=s+i
End If
Next i
实现上述功能的VB程序如下。
Dim a(1 To 20)As Integer
Dim n As Integer
Private Sub Command1_Click( )
‘随机生成20个互不相同的整数,存储在数组a中,n记录了整数的个数,代码略
End Sub
Private Sub Command2_Click( )
Dim t,max,w As Integer
Dim i,c As Integer
max=1:w=1
i=2:t=2
①
Do While i<n
If a(i+1)-a(i)=c Then
t=t+1
If t>max Then
max=t
②
End If
Else
t=2
c=a(i+1)-a(i)
End If
i=i+1
Loop
If max>2 Then
For i= ③ To w
List2. AddItem Str(a(i))
Next i
Else
List2. AddItem"没有找到等差数列"
End If
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
①给定24小时内的租赁起始时间和结束时间:输入租赁开始的时间和结束的时间。注:时间的输入格式为hh:mm:ss,如10:23:11。
②计算租车时间time:计算租车起始时间和结束时间的时间差time。
③计算租车费用pay:若time小于等于1,则pay为0;若,则pay为time;若time大于10, 则pay为10。
Stime=input('租车开始时间:')
etime=input('租车结束时间:')
#stime.split(":")[0]切出的是租车开始时间的时
#stimespli(":")[1]切出的是租车开始时间的分
#stime.split(":")[2]切出的是租车开始时间的秒
if int(etime. split(":")[0])>=int(stime.split(":")[0]):
time=int(etime. split(":")[0])-int(stime.spilt(":")[0])
if int(etime.split(":")[1]>int (stime.split(":"))[1):
time=time+1
elif int (etime.split(":")[1])= int(stime.split(":")[1]) and int(etime.split(":")[2]>= int(stime.split(":")[2]):
time= time+1
if time<=1:
pay=0
elif
pay=time
else:
print(pay)
1)将被乘数a转换为二进制数;
2)将转换后的二进制数中每个数码乘以对应的权值,再乘以乘数b;
3)最后将各乘积相加,得到a与b相乘的结果。
图a显示了13与11相乘的过程:
在文本框Text1中依次输入被乘数与乘数(输入的字符仅限于数字字符、“*”及“/”,每两个乘数间用“/”分隔,并以“/”结尾),单击“计算”按钮Command1后,将计算结果
依次显示在文本框Text2中。程序运行界面如图b所示。
Private Sub Command1_Click()
Dim a As Integer, b As Integer, qz As Integer, sum As Integer
Dim tx As String, c As String, tmp As String
tx = Text1.Text: tmp=""
n = Len(tx):sum = 0
For i = 1 To n
c = Mid(tx, i, 1)
If c >= "0" And c <= "9" Then
ElseIf c = "*" Then
a = Val(tmp): tmp = ""
Else
b = Val(tmp): tmp = ""
End If
If Then
qz = 1
Do While a > 0
x = a Mod 2
qz = qz * 2
a = a \ 2
Loop
s = s & Str(sum)
a = 0: b = 0: sum = 0
End If
Next i
Text2.Text = s
End Sub
,其中p=
。输入这三个数字,计算三角形的面积,四舍五入精确到1位小数。保证能构成三角形,0≤a,b,c≤1000,每个边长输入时不超过2位小数。
max = 0
For p =
amin = a(p): amax = a(p)
i = p + 1: j = p + 19
Do While
If a(i) > a(j) Then
If a(i) > amax Then amax = a(i)
If a(j) < amin Then amin = a(j)
Else
If a(i) < amin Then amin = a(i)
If a(j) > amax Then amax = a(j)
End If
i = i + 1: j = j - 1
Loop
If
Then max = amax - amin
Next p
Text1.Text = "最大波动值为:" + Str(max)
上述程序段3个方框处的语句分别为( )
①在搭乘一次地铁后可以获得一张优惠票,有效期为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

实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为( )
Dim a(1 To 100) As Sting
For i= 1 To 10
For j=1 To 10
If i=j Or i Mod 10=0 Or i Mod 10= 1
Then
a( ① )="●"
Else
a( ① )="○"
EndIf
Next j
Next i
For i= 1 To 100
s=s+ a(i)
If ② Then
List1.Addltem s
End If
Next i
l 路线每个点只能向右或向下
l 任何一个岔口优先向右走,右侧不通再向下走
l 一条路线中每个点只能走一次,不能重复
算法思路:探路过程中,记录每个坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧坐标为0;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下为止,最后输出整体线路坐标。
实现算法的程序如下,运行结果如图所示。
回答下列问题:
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, zb As Integer
Dim cha(1 To 10) As Integer ‘记录一条线路中各个岔路口坐标
Dim lu(1 To 10) As Integer ‘记录路线经过的坐标
zb = 1: j = 0: lu(1) = 1: i = 1
Do While i <= 9 ‘第1个和最后1个固定,中间有9个需要路过的坐标
If zb Mod 6 <> 0 And a(zb + 1) = 1 Then ‘向右畅通
If zb + 6 <= 30 and a(zb + 6) = 1 Then ‘记录岔路口
j = j + 1
End If
zb = zb + 1
i = i + 1
lu(i) = zb
ElseIf zb + 6 <= 30 And a(zb + 6) = 1 Then ‘向下畅通
zb = zb + 6
i = i + 1
lu(i) = zb
Else ‘坐标退回到上一个岔路口
If j = 0 Then Exit Do
Do While lu(i) <> cha(j)
Loop
a(cha(j) + 1) = 0 ‘标记此路口右侧不可用
j = j - 1
End If
End If
Loop
If j = 0 Then
Text1.Text = "没有畅通道路"
Else
For i = 1 To 10
Text1.Text = Text1.Text + Str(lu(i))
Next i
End If
End Sub
Private Sub Form_Load()
End If ‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略
End Sub
|
图a | 图b |
程序运行界面如图a所示。实现上述功能的VB代码如下:
Dim n As Integer, m As Integer
Dim a(1 To 100) As Integer
Dim b(1 To 10) As Integer 'b数组存储柱子位置
Dim f(3) As Integer, i As Integer 'f数组存储三种类型的个数
Private Sub Command1_Click()
n = Val(Text1.Text):m = Val(Text2.Text)
k = 0
For i = 1 To m
b(i) = Int((Rnd * n ^ 2) + 1)
a(b(i)) = 2
For j = 1 To i - 1
If b(i) = b(j) Then
①
Exit For
End If
Next j
Next i
'将房间设置为黑白两种颜色交错,白黑以0、1代替
For i = 1 To n * n
If a(i) = 0 And k = 1 Then
s = s + "■": a(i) = k
ElseIf a(i) = 0 And k = 0 Then
s = s + "□": a(i) = k
Else
s = s + "○"
f(k) = f(k) - 1
f(2) = f(2) + 1
End If
②
If i Mod n = 0 Then
List1.AddItem s
s = ""
End If
Next i
'对b数组的数值按升序进行排序,代码略
For i = 1 To m - 1
s = search(i)
If s > smax Then smax = s
Next i
'对f(0)和f(1)的相等情况进行判断,并输出最后结果,代码略
End Sub
Function search(i As Integer) As Integer
Dim x1 As Integer, x2 As Integer
Dim y1 As Integer, y2 As Integer
x1 = (b(i) - 1) \ n + 1
y1 = (b(i) - 1) Mod n + 1
For j = i + 1 To m
x2 = (b(j) - 1) \ n + 1
y2 = (b(j) - 1) Mod n + 1
If ③ Then s = 0
s = (x2 - x1) * (y2 - y1)
If s > search Then search = s
Next j
End Function
① ② ③
如图a中,5张骨牌的差值为:|(3+3-4-4)+(6+3-2-5)+(2+3-4-5)+(1+5-3-3)+(1+1-1-1)|=4。
每张骨牌都可以顺时针旋转90度,效果如图b所示。现在最多可以选择其中一张骨牌进行旋转,使得旋转后的骨牌差值变小。求一种旋转方案,并输出骨牌差值的最小值。
|
图a 图b |
编写VB程序,实现上述功能。运行程序,在文本框Text1中依次输入5张骨牌上的数字,单击“计算”按钮Command1,在文本框Text2、Text3、Text4中输出结果。程序运行界面如图b所示。
Dim a(1 To 20) As Integer ‘依次存储5张骨牌上的数字
Dim d(1 To 5) As Integer ‘依次存储5张骨牌,上下两行的差值
Const n = 5
Private Sub Form_Load()
'从文本框Text1读取5张骨牌上的数字,依次存入数组a
'a(1)~a(4)依次存储第一张骨牌从左到右从上到下四个数字
'a(5)到a(20)依次类推
'代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, up As Integer, down As Integer, t As Integer, k As Integer
Dim id As Integer, times As Integer, x As Integer, ans As Integer
For i = 1 To n
up = a(4 * i - 3) + a(4 * i - 2)
down = a(4 * i - 1) + a(4 * i)
d(i) = up - down
t = t + d(i)
Next i
id = 0 : times = 0
ans =
If ans <> 0 Then
k = 1
Do While k <= n
For x = 1 To 3
temp =
If temp < ans Then
ans = temp
id = k
End If
If temp = 0 Then Exit Do
Next x
k = k + 1
Loop
End If
Text2.Text = CStr(id)
Text3.Text = CStr(times)
Text4.Text = CStr(ans)
End Sub
Function turn(ByVal k As Integer, ByVal x As Integer) As Integer
‘求将第k张骨牌,顺时针旋转x次后,上下两行的差值,代码略
End Function
s1 = "algorithm"
If Len(s1) Mod 2 = 1 Then
i = Len(s1) \ 2: j = Len(s1) \ 2 + 2
s2 = Mid(s1, i + 1, 1)
Else
i = Len(s1) \ 2: j = Len(s1) \ 2 + 1
End If
Do While i >= 1
If Mid(s1, i, 1) > Mid(s1, j, 1) Then
s2 = Mid(s1, i, 1) + s2
Else
s2 = s2 + Mid(s1, j, 1)
End If
i = i - 1: j = j + 1
Loop
Label1.Caption = s2
执行该程序段后,标签Label1上显示的内容是( )
程序界面如图所示,实现上述功能的VB代码如下,请回答下列问题:
Private Sub Command1_Click()
Dim s As String, ans As String
Dim ch As String, n As Integer
Dim i As Integer
s= Text1.Text
ans =““: n=0
For i=1 To Len(s)
If ch>= "A" And ch<= "Z" Or ch>>="a" And ch<=" z" Then
n=n+1
ElseIf n > 0 Then
ans=ans+Str(n) + ","
List1.AddItem
n=0
End If
Next i
List1.AddItem"连续字母的数量依次为:"+ans
End Sub
若实现上述功能的程序如下,请在划线处填写合适代码。
Dim a(1 To 13) As Integer
Dim n As Integer
Private Sub Command1_ Click( )
Dim i As Integer, s As String, j As String
Randomize
n=13
For i=1 To n
a(i) = Int(Rnd * 13)+1
Next i
For i=1 To n-1
For j=i+1 To n
If a(j) < a(i) Then
t=a(j)::a(i)=t
End If
Next j
Next i
s=“”
For i=1 To n
s = s+ Str(a(i))
If Then s=s+“,”
Next i
Label1. Caption =s
End Sub
Private Sub Command2_ Click( )
Dim i As Integer, j As Integer
Dim t As Integer, k As Integer
Dim max As Integer '存储连续数个数最大值
Dim begin As Integer '存储连续数开始的数值
k= 1
max=1
For i=2 To 13
If a(i)=a(i-1)+1 Or a(i)=a(i-1) Then
If Then k=k+1
If k > max Then
max= k
begin =
End If
Else
k=1
End If
Next i
s=" "
For j=begin To begin+max-1
s =s+ Str(j)
Next j
Label2. Caption = s
End Sub
a=int(input("请输入线段a的长度:"))
b=int(input("请输入线段b的长度:"))
c=int(input("请输入线段c的长度:"))
if :
print("可以构成三角形")
else:
print("不可以构成三角形")
为实现上述程序功能,则划线处应填入的表达式是( )
1)a医生值班儿比C医生晚一天
2)D医生值班儿比e医生晚两天
3)B医生值班儿笔记医生早三天
4)F医生值班儿日在BC医生值班日之间,且在星期四。打印出每个医生的值班表。
某医院内科有a,b,c,d,e,f,g七位医生,他们在一星期内每天值一次班,根据排班要求打印出值班表。
# 用列表结构列出Monday~Sunday
days=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday",]
for a in range(7):
for b in range(7):
if a!=b:
for c in range(7):
if(c!=a)and(c!=b):
for d in range(7):
if(d!=a)and(d!=b)and(d!=c):
for e in range(7):
if(e!=a)and(e!=b)and(e!=c)and(e!=d):
for f in range(7):
if(f!=a)and(f!=b)and(f!=c)and(f!=d)and(f!=e):
for g in range(7):
if(g!=a)and(g!=b)and(g!=c)and(g!=d)and(g!=e)and(g!=f):
#用条件表达式表示出符合要求的排班
if(a==c+1)and(d==)and(b==g-3)and(f>b)and(f<c)and():
#打印输出每个医生的排班结果
print("a医生:",,'\n')
print("b医生:",days[b],'\n')
print("c医生:",days[c],'\n')
print("d医生:",days[d],'\n')
print("e医生:",days[e],'\n')
print("f医生:",days[f],'\n')
print("g医生:",days[g],'\n')
编写完成后原名保存并关闭应用软件。