那么能得到任意三位数X个位数的表达式是:
Dim a(l To 100) As String
Private Sub Commandl_Click()
Dim c As Integer, t As String, ans As String
s = Textl. Text
k = Val(Text2. Text)
ans =“”
For i = 1 To Len(s) - k - 1
c = c + 1
a(c) = Mid(s, i, 1) + Mid(s, i + k + 1, 1)
If check(c) Then
ans = ans + a(c) + ","
Else
c = c - 1
End If
Next i
Text3. Text = ans
End Sub
Function check(k As Integer) As Boolean
Dim i As Integer
check = True
For i = 1 To k - 1
If a(i) = a(k) Then check = False: Exit For
Next i
End Function
若该程序段执行后,在文本框Text1中输入的字符串长度不超过10,文本框Text2中输入的值在0到8范围内(输入输出都不包括双引号本身),下列说法不正确的是( )
Dim s(1 To 81) As Integer, I As Integer, j As Integer, C As Integer, temp As Integer
c=0 : s(1) = 0
For i = 1 To 9
For j = 1 To i
temp = s(j * i)
s(j * i) = j * i
If temp <> s(j * i) And s(j * i) Mod 9 = 0 Then c =c + 1
Next j
Next i
该程序段运行后,变量c的值为( )
原始数据:
a(1) |
a(2) |
a(3) |
a(4) |
1 |
2 |
3 |
4 |
方法一:
①向右旋转1步:
a(1) |
a(2) |
a(3) |
a(4) |
4 |
1 |
2 |
3 |
②向右旋转2步:
a(1) |
a(2) |
a(3) |
a(4) |
3 |
4 |
1 |
2 |
③向右旋转3步:
a(1) |
a(2) |
a(3) |
a(4) |
2 |
3 |
4 |
1 |
方法二:
①将a(1)值放至旋转3个位置后位置a(4):
a(1) |
a(2) |
a(3) |
a(4) |
1 |
2 |
3 |
1 |
②将原a(4)值放至旋转3个位置后位置a(3):
a(1) |
a(2) |
a(3) |
a(4) |
1 |
2 |
4 |
1 |
③将原a(3)值放至旋转3个位置后位置a(2):
a(1) |
a(2) |
a(3) |
a(4) |
1 |
3 |
4 |
1 |
④将原a(2)值放至旋转3个位置后位置a(1):
a(1) |
a(2) |
a(3) |
a(4) |
2 |
3 |
4 |
1 |
有n个数存储在数组a中,给定一个整数p(1≤p≤n),将数组a的前p个数与后n-p个数分别向右旋转k次。例如数组a的各个数值分别是1,2,3,4,5,6,7,当p=4,k=1时,旋转后的结果为4,1,2,3,7,5,6。小明为此编写了VB程序,功能如下:在文本框Text2、Text3中依次输入p和k的值,单击“旋转数组”按钮Command1后,数组旋转后结果显示在Text4中。程序运行界面如下图所示,请回答下列问题:
Dim a(20) As Integer
Const n = 20
Private Sub Form_Load()
'随机产生n个[1,100]之间的随机整数,依次存储到a(1)、a(2)、…a(n)中,并在文本框Text1显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, p As Integer, k As Integer, cnt As Integer, c As Integer, t As Integer
p = Val(Text2.Text)
k = Val(Text3.Text)
i = 1: start = 1:c = a(i): cnt = 1
Do While cnt<= p '方法二
i = ①
t = a(i)
a(i) = c
If ② Then
start = start + 1
i = i + 1
c = a(i)
Else
c = t
End If
cnt = cnt + 1
Loop
For i = 1 To k '方法一
temp = a(n)
For j = ③
a(j) = a(j - 1)
Next j
a(p + 1) = temp
Next i
For i = 1 To n
s = s + Str(a(i))
Next i
Text4.Text = s
End Sub
① ② ③
s = ""
For i = 2 * n - 1 To 1 Step -1
If i <= n Then
S=
Else
S=
End If
Next i
上述程序段方框处的语句分别为:( )
Dim k As Integer
s = 0: k = 0
For i = 1 To 4
t = a(i)
a(i) = k + t
k = t
s = s + a(i)
Next i
Text1.Text = Str(s)
数组元素 a(1)至 a(4)的值依次为“1, 3, 2, 0”,执行该程序段后,文本框 Text1 中显示的是( )
For i = 1 To Len(s1)
c1 = Mid(s1, i,1): c2 = Mid(s2, i, 1)
If Then
If Then Exit For '退出For循环
If Then Exit For
If Then Exit For
End If
Next i
If i > Len(s1) Then Label1.Caption =“相等” Else Label1.Caption =“不相等”
上述程序段中方框处可选语句为:
①Abs (Asc(c1) - Asc(c2)) <> 32 ②c1 <> c2
③c1 >= "a" And c2 >= "a" ④c1 <= "Z" And c2 <= "Z"
则(1)(2)(3)(4)处语句依次可为( )
对w*h(10*8)网格数据进行存储,无障碍物的位置对应数组元素数值为0,有障碍物的位置对应数组元素数值为1。数组d中数据初始化后,对应数组元素数值d(2)=1:d(27)=1 :d(33)=1:d(45)=1:d(52)=1:d(57)=1,其他数组元素数值为0。对应最大空正方形的起始位置为3,边长为4。
找最大空正方形的方法如下:①从当前位置右下角开始逐渐扩大正方形边长,直到有障碍物出现,不能再扩展为止;②取下一个位置,按照步骤①继续查找,最后1列为边界,该位置上无需查找。
Const W=10
Const h=8
Dim d(1 To w*h)As Integer
Private Sub Form_Load( )
‘数组初始化,无障碍物的位置对应数组元素值为0,有障碍物的位置对应数组元素数值为1
End Sub
Private Sub Command l_Click()
Dim i As Integer,length As Integer,maxw As Integer
Dim max As Integer
max=0
For i=1 To w*h
If i Mod w <> 0 Then ‘判断该位置是否需要查找
If length>max Then max =length:maxw=i
End If
‘输出最大空正方形的起始位置和边长,代码略。
End Sub
Function scan(k As Integer)As Integer
Dim j As Integer
Dim t As Integer,s As Integer
Dim dw As Integer
t=1
Do While k\w+1+t<h And。
s=0
dw=k+w+1
For j=1 To t^2
s=s+d(dw+w*((j-1)\t)+(j-1)Mod t)
Next j
If Then
Exit Do ‘退出循环
Else
t=t+1
End If
Loop
scan=t
End Function
1)查找相邻两个非降序数据段:在未处理的数据区域中,从前往后找出第一个最长非降序数据段。若该数据段后面没有元素,则本轮处理完毕:否则在第1个数据段的后面,从前往后找出数组中第二个最长非降序数据段。
2)合并两个数据段:借助数组tmp.将查找到的两个相邻数据段合并成一个非降序数据段,然后将合并后的数据依次存回到原数组中。
3)若数组中还有未处理的数据,则重复(1)(2)步骤。每一轮数据处理完毕后,重新从数组第1个数据开始进行下一轮处理。若检测到某一轮没有合并处理,则说明n个数据已构成非降序数据段,数据处理结束。
Const n = 10
Dim a(1 To n + 5) As Integer
Din tmp(1 To n + 5) As Integer
'读取n个整数保存到数组a中,并在文本概Text1中显示,代码略。
Private Sub Comnand1_ Click()
Do While True
If Not Merge() Then Exit Do
'在列表概List1中输出这一轮合并后的数据,代码略。
Loop
End Sub
Function Position(low As Integer) As Integer
Din i As Int eger
For i=low To n-1
If Then Exit For
Next i
Position = i
End Function
Function Merge() As Bool ean
Dim i As Integer, flag As Boolean, p1 As Integer, p2 As Integer
Dim low1 As Integer, high1 As Integer, high2 As Integer
flag = False: low1= 1
Do While low1 < n
high1 = Position(low1)
If high1 = n Then Exit Do Else flag = True
high2 = Position(high1 + 1)
p1=low1:p2=high1+1
i = low1
Do While
If p2>high2 Or p1 <= high1 And a(p1) < a(p2) Then
tmp(i)=a(p1):p1=p1+1
Else
tmp(i)=a(p2):p2=p2+1
End If
i =i+1
Loop
For i = low1 To high2
a(i) = tmp(i)
Next i
Loop
Merge = flag
End Function
①将密文进行转换为一个十进制数值:例如密文242转换的表达式为:2*53+4*5*+2*5*=72 对应的明文字符为大写“H":
②得到的数值就是对应明文的ASCII 字符的十进制编码(提示:空格所对应的ASCII值为十进制32,小写字母“z”所对应的ASCII值为十进制数122);
程序运行界面如下图所示。在文本框Text1中输入密文,单击“解密”按钮,在文本框Text2 中输出解密后的明文密码。实现上述功能的VB代码如下:
Private Sub Convnand1_Click()
Dim st, p, c1, c2, c3 As String
Dim i, d, res As Integer
st = Text1.Text: n = Len(st)
i=1:res=””
Do While i <=n- 2 '提取有效密文,并进行转换
c1 = Mid(st, i, 1): c2 = Mid(st, i + 1, 1): c3= Mid(st, i +2, 1)
If Then ‘①
p = Mid(st, i, 3)
d = conv(p)
If d>=32 And d<=122 Then res= res + Chr(d)
②
Else
i =i+1
End If
Loop
Text2 Text = ③
End Sub
‘以下代码是将有效密文数字转换为十进制数的函数
Function conv(p As String) As Integer
Dim k As Integer, q As String, i As Integer
k=0:q=””
For i =ITo 3
q = Mid(p, i, 1)
④
Next i
conv=k
End Function
For i=1 To 6
If i Mod 2<>0 Then
If a(i) Mod 10>5 Then
a(i)=a(i) \ 10
Else
a(i)=a(i) Mod 10
End If
Else
a(i)=a(i- 1)+1
End If
Next i
程序运行后a(1)到a(6)的值分别是2,3,4,5,0,1,则a(1)到a(6)各元素的初始值可能是( )
a=int(input("请输入线段a的长度:"))
b=int(input("请输入线段b的长度:"))
c=int(input("请输入线段c的长度:"))
if :
print("可以构成三角形")
else:
print("不可以构成三角形")
为实现上述程序功能,则划线处应填入的表达式是( )
a=input('请输入一串英文字符串:')
s=''
sum=0
for ch in a:
s=s+str(ord(ch)-ord(‘A’)-1)
for ch in s:
sum+=int(ch)
print(sum)
若输入字符串为‘ZBAX’(不包含前后引号),则输出结果为( )