n = 8
L = 1: R = n
For i = 1 To n - 1
If i Mod 2 = 1 Then
pos = L: L = L + 1
Else
pos = R: R = R - 1
End If
k = pos
For j = L To R
If a(j) < a(k) Then k = j
Next j
If pos <> k Then
t = a(pos): a(pos) = a(k): a(k) = t
End If
Next i
已知a数组的各元素值分别为12,18,23,25,9,47,29,36,则运行程序段后,a数组各元素的值变为 ( )
|
原1-7号男生身高 |
171 172 180 174 176 179 178 |
|
筛选排序后序列 |
171 172 174 176 178 179 180 |
|
“造型设计”后序列 |
180 178 174 171 172 176 179 |

图1
身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号

图2
Dim h (1 To n) As Integer
Dim height1(1 To n) As Integer
Dim height2(1 To n) As Integer
Dim n As Integer, i As Integer, j As Integer, num As Integer, tmp As Integer
Dim sex(1 To n) As String
Private Sub Form_Load()
'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!
End Sub
Private Sub Command1_Click()
b = 0
For i = 1 To n 'n名学生中的男生
If sex(i) = “男” Then ① : height1(num) = h(i)
Next i
For i = 1 To num – 1
For j = num To i + 1 Step -1
If height1(j) < height1(j - 1) Then
tmp = height1(j): height1(j) = height1(j - 1): height1(j - 1) = tmp
End If
Next j
Next i
For i = 1 To num
Text1.Text = Text1.Text + " " + Str(height1(i))
Next i
End Sub
Private Sub Command2_Click()
Dim left, right As Integer, i As Integer, mid As Integer
mid = Int((1 + num) / 2)
left = 0: right = 0
height2(mid) = height1(1)
For i = 1 To (num - 1) \ 2
right = right + 1
height2(mid + right) = height1(2*i)
left = left + 1
②
Next i
If num Mod 2 = 0 Then ③
For i = 1 To num
Text2.Text = Text2.Text + " " + Str(height2(i))
Next i
End Sub
①②③
如果BMI<18.5,则在标签Label5中显示“体重过轻!”;如果18.5≤BMI≤25,则在标签Label5中显示“体重正常!”;如果BMI>25,则在标签Label5中显示“体重过重!”。运行效果如图所示。
Private Sub Command1_Click( )
Dim h As Single, m As Single, bmi As Single
Dim x As String
m=Val(Text 1.Text)
h=Val(Text2.Text)
①
If bmi<18.5Then
x="体重过轻!"
Else
If ② Then x="体重正常!"Else x="体重过重!"
End If
Label5.Caption=x
End Sub
画线处应填入的代码为:①;②。
For i=1 To 6
a(i)=Int(Rnd*10)+1
Next i
For i=1 To 5
If i Mod 2=1 And a(i)>a(i+1)Then
T=a(i):a(i)=a(i+1):a(i+1)=t
Else
a(i)=a(i)+1
End If
Next i
执行该程序段后,a(1)~a(6)各元素可能的值是( )
Private Sub Command1_Click( )
Dim s1, s2, result, t As String
Dim span, jw As Integer
s1=Text1. Text:s2=Text2. Text
span=Len(s1)-Len(s2)
If span<0 Then
t=s1:s1=s2:s2=t
span= ①
End If
For i=1 To span
s2="0"+s2
Next i
jw=0:result=" "
For i= ② To 1 Step-1
x=Val(Mid(s1, I, 1))+Val(Mid(s2,i,1))+jw
jw=x\2
result=Str(x Mod 2)+result
Next i
If jw=1 Then result="1"+result
Text3. Text=result
End Sub
t =True
For i =3 To 10
d=a(i- 1)- a(i- 2)
If a(i)-a(i-1)<>2*dThen
t = False
End If
Next i
执行程序后,t的值是True,则a(10)的值为( )
For i = 1 To 6
x = Int(Rnd * 10) +1
If i Mod 2 = 1 Then
a(i) = 2 * x + 1
ElseIf x mod 2 = 0 then
a(i) = x \ 2
Else
a(i) = x - 1
End If
Next i
执行程序后,a数组各元素可能的是( )
图a
程序VB代码如下:
Private Sub Command1_Click()
Const n = 20
Dim i, j As Integer
Dim a(1 To n) As Integer
Dim max As Integer
Dim c As Integer
Randomize
For i = 1 To n
a(i) = ①
For j = 1 To i - 1
If a(j) = a(i) Then
②
Exit For
End If
Next j
Next i
'将不重复无序数组a添加到列表框List1中,代码略
For i = 1 To n - 1
For j = 1 To ③
If a(j) > a(j + 1) Then
temp = a(j): a(j) = a(j + 1): a(j + 1) = temp
End If
Next j
Next i
max = Abs(a(2) - a(1))
i = 2
Do While i <= n – 1
If c > max Then max = c
i = i + 1
Loop
Label1.Caption = "相邻两个元素最大的差值为:" + Str(max)
End Sub
请回答下列问题:
① ② ③
⑴确定初始右边界:从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。
⑵调整子串左边界:若左边界有重复的字母则表明该子串可缩短,故左边可右移1位……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。
⑶调整子串右边界:子串右边界继续右移,在新子串符合条件后,记录并进行比较。
重复(2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。
实现上述功能的VB程序如下,请回答下列问题。
Const n = 300
Dim i As Integer, k As Integer, length As Integer, L As Integer
Dim pos As Integer, s1 As String, res As String
Dim f(1 To 26)As Integer '数组f记录每个小写英文字母的出现次数
Dim s(1 To n)As Integer '数组s记录每个输入字符在字母表中的位置
Private Sub Command1_Click()
res = ""
s1 = Text1.Text
For i = 1 To Len(s1)
s(i)= ①
Next i
k = 0: pos = 1: length = n
For i = 1 To 26
f(i)= 0
Next i
For i = 1 To Len(s1)
If f(s(i))= 0 Then k = k + 1
f(s(i))= f(s(i))+ 1 '调整右边界,直到达到26个字母
Do While ②
f(s(pos))= f(s(pos))- 1
If ③ Then
k = k - 1
If i - pos + 1 < length Then
length = i - pos + 1
res = Mid(s1, pos, length)
L = pos
End If
End If
pos = pos + 1
Loop
Next i
If res <> "" Then
Text2.Text = res
Label1.Caption = "最短长度:" + Str(length)+ "开始位置:" + Str(L)
Else
Label1.Caption = "无解!"
End If
End Sub
① ② ③
m=a(1):s=0
For i= 2 To 5
If a(i)> m Then m=a(i)
s=s+m
If a(i)<m Then m=a(i)
s=s+m
Next i
数组元素 a(1)到 a(5)的值依次为“1,2,3,1,2”,执行该程序段后变量 s 的值为( )
a(1) = 1: a(2) = 3: a(3) = 7: a(4) = 5: a(5) = 4
s = "PRE2021reform": t = 0
For i = 1 To 5
If a(i) >= t Then t = a(i)
s = Mid(s, 1, t - 1) + Mid(s, t + 1)
Next i
Text1.Text = s
score=int(input(“请输入分数:”))
if score>60:
score+=20
score+=10
print(score)
若程序运行后输入20,打印出的 score的值为。
Sub Command1_Click()
x=4
For i=1 To 10 step 3
If x<i Then x=x+i
End If
Next i
Text1.Text=str(x)
End Sub
该程序运行结束,文本框 Text1 中显示( )
x=int(input("请输入第1个数:"))
y=int(input("请输入第2个数:"))
if x>y:
print(x)
else:
print(y)
如图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
例如,压缩前的原始数据为:
11111100 010111010 10110000可表示为十六进制:FC 5A B0
删除每字节的后2 bit:
111111 00 010110 10 101100 00
首尾相连构建新的数据:
11 11110101 10101100表示为十六进制:…F5 AC
自此,原数据进行了有损压缩。程序运行界面如下所示,
实现上述算法的VB程序如下,但程序中加框处有误,请改正。
Dim a(1 To 100) As Integer
Const code="0123456789ABCDEF"
Const n=100
Private Sub Form_Load() '以随机数模拟读取原始数据
s=""
Randomize
For i=1 To n
a(i)=Int (Rnd()*16)
Text1.Text=Text1.Text+
'①
Next i
End sub
Private Sub Command1_Click()
For i=1 To n
t=t+HtoB(a(i))
Next i
For j=1 To n* 4 Step 8 '每8位一组每8位一组,取前6个字符
s=s+Mid(t, j, 6)
Next j
For i=1 To 4 *(n-1) Step 4 '每4位一组转为十六进制显示
Text2.Text= Text2.Text +BtoH (Mid(s, 1, 4))
Next i
End sub
Function HtoB (x As Integer) As String '十六进十六进制转为二进制函数
t=""
m=0
Do While
'②
r=x Mod 2
m=m+1
t= Trim(r)+t 'trim()用于删除前导空格
x=x\2
Loop
HtoB=Mid("0000", 1, 4-m)+t
End Function
Function BtoH (y As String) As String '二进制转为十六进制函数
t1=Val(Mid(y, 4, 1))
t2=Val(Mid(y, 3, 1))
t3=Val(Mid(y, 2, 1))
t4=Val(Mid(y, 1, 1))
s=t1+t2*+t3*4+t4*8
BtoH= Mid(code,s+1,1)
End Function
x=0
while(x!=4): #当x=!4时,执行循环
print('1. 添加订单')
print('2. 发货')
print('3. 查看订单列表')
print('4. 退出')
x=int(input("输入你的选择:")) #输入选择项
if 1 :
y=input("输入订单编号:") #输入订单编号
2 #在列表listque中添加订单号
elif x==2:
3 #如果订单列表为空
print("订单列表为空")
else:
print("发货单号:"+listque.pop(0))
elif x==3:
print("等待发货:",listque) #查询列表listque中的订单号
print()
input("运行完毕,请按回车键退出...")
此列表,定义的是( )列表。(从“空、非空” 里选填); 补充划线1/2/3处的内容。
处理“data.txt”文件中英文单词的 Python 程序段如下:
file=“data.txt”
n=0
for word in open(file): #打开文件准备读
if word[0:1]=='c': #word每次读到第一行信息,word[0:1]则是当前行字符的第1个字符
n=n+1
print(n)
运行该程序段后,输出的值为( )
s=input("请输入一串整数,以空格间隔开来:")
t=""
sum=0
for i in ① :
if i!=" ":
②
else:
sum=sum+int(t)
③
print("该数据序列的和为:",sum)
① ② ③
实现上述功能的VB代码如下,运行效果如图所示。请回答下列问题:
Const n= 5
Dim a(1 To n) As String
Private Sub Form_ Load( )
'将n个字符串分别赋值给数组元素a(1)、a(2)、……、a(n),并在列表list1中显示
'代码略:
End Sub
Private Sub Command1_ Click( )
Dim s As String, i As Integer, j As Integer
Dim m As Integer, k As Integer
Dim flag As Boolean
s = Text1. Text
m = Len(s)
List2. Clear
flag = False
For i=1 To n
k = Len(a(i))
For j=1 To k- m + 1
If
= s Then '①改错
List2. AddItem a(i)
flag = True
Exit For '退出for 循环
End If
Next j
Next i
If
Then '②填空
List2. AddItem“查找无结果”
End If
End Sub