For i = 4 To 3 Step -1
If a(i) < a(i-1) Then
tmp = a(i)
For j = i-1 To 1 Step -1
If tmp > a(j) Then Exit For
a(j+1) = a(j)
Next j
a(j+1) = tmp
End If
Next i
数组元素 a(1)到 a(6)的值依次为“19,8,96,92,85,88”,经过该程序段“加工”后,数组元素 a(1)到 a(6)的值依次为( )
| k=-20 Do While k=0 k=k+1 Loop |
小罗编写VB程序实现上述功能:程序运行时,读取所有城市数据保存在变量shuju中并显示在列表框List1中。在文本框Text1中输入“南区”或“北区”,文本框Text2中输入n的值,单击“排名”按钮Command1,对数据进行统计分析,并在列表框List2中显示治愈率最高的n个城市,如有与第n个城市相同治愈率的城市,则同时输出。程序运行界面如图所示,请回答下列问题。
Dim shuju As String, a(1 To 100) As String
Dim t As Integer, i As Integer, j As Integer, c As String, p As Integer, temp As String, q as String Dim f As Boolean, n As Integer, k As Integer
'读取所有城市数据保存在变量shuju中,并显示在列表框List1中,代码略
t = Len(shuju)
i = 1: p = 0: j = 1
Do While i <= t
c = Mid(shuju, i, 1)
If c = "/" Or c = ";" Then
p = p + 1
a(p) = j = i + 1
End If
i = i + 1
Loop
q = Text1.Text : n = Val(Text2.Text) : i = 1
Do While i <= p \ 4 - 1
k = i
IfThen f = True Else f = False
For j = i + 1 To p \ 4
If a(4 * j - 3) = q Then
If Val(a(4 * j)) / Val(a(4 * j - 1)) > Val(a(4 * k)) / Val(a(4 * k - 1)) Or Not f Then k = j
End If
End If
Next j
If k <> i Then
temp = a(4 * k - 3): a(4 * k - 3) = a(4 * i - 3): a(4 * i - 3) = temp
temp = a(4 * k - 2): a(4 * k - 2) = a(4 * i - 2): a(4 * i - 2) = temp
temp = a(4 * k - 1): a(4 * k - 1) = a(4 * i - 1): a(4 * i - 1) = temp temp = a(4 * k): a(4 * k) = a(4 * i): a(4 * i) = temp
End If
If
Then
List2.AddItem a(4*i-3) & "/" & a(4*i-2) & "/" & Format(Val(a(4*i)) / Val(a(4*i-1)), "0.00%") & ";"
i = i + 1
Else
Exit Do
End If
Loop
End Sub
①将发送信息中的每一个字符的八位二进制取反
②第1、2、4、8位上插入4个二进制数,若取反后的八位二进制数中1的个数是偶数,插入的4个二进制是1、0、1、0,否则是0、1、0、1
③将12位二进制分为3段(4位一段),每一段的最后一个数字移动到最前面,并将移动后的4位二进制数抓换为十六进制数,转换后的3位十六进制数即是加密后的字符字符"A"的加密过程如下表所示:
|
原文“A”转换成8位二进制数取反 |
1 0 1 1 1 1 1 0 |
|
插入4位二进制数1、0、1、0 |
1 0 1 1 0 1 1 0 1 1 1 0 |
|
4位1段,最后一个数字移动到最前面 |
1101 0011 0111 |
|
转换为十六进制数,即密文 |
D37 |
按照上述规则,小明设计了一个加密的VB程序,程序功能如下:在Text1中输入待加密的字符,单击“加密”按钮,将加密后的字符显示在Text2中,程序运行界面如下图所示,请回答如下问题:

Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer Dim m As Integer, n As Integer, t As Integer Dim count As Integer
Dim a(1 To 12) As Integer
Dim mingw As String, miw As String
mingw = Text1.Text
For i = 1 To Len(mingw)
n = Asc(Mid(mingw, i, 1))
j = 8
Do While
a(j) = (n + 1) Mod 2 count = count + a(j)
n = n \ 2
j = j - 1 Loop
For k = 1 To 4
m = 8 + k - 1
Do While m >= 2 ^ (k - 1)
a(m + 1) = a(m)
m = m –1
Loop
Next k
For t = 1 To 3
miw =
Next t
Text2.Text = miw
Next i
End Sub
Function rev_btoh(b(i) As Integer, start As Integer, ending As Integer) As String
Dim i, sum As Integer
Const code = "0123456789ABCDEF"
sum = b(ending)
For i = start To ending - 1
sum = sum * 2 + b(i)
Next i
rev_btoh = Mid(code, sum + 1, 1)
End Function
Dim a(1 To 10)As Integer
Dim i As Integer, k As Integer
For i=1 To 10 Step 2
a(i)=1
Next i
For i=1 To 10
If i Mod 3=0 Then a(i)=1-a(i)
Next i
For i=1 To 10
If a(i)=1 Then k=k+1
Next i
该程序段执行后,变量k的值为( )
i=0
Do While Not rs. EOF
i=i+1
a(i)=rs. Fields("售价")
rs. MoveNext ‘①
Loop
若记录集rs共有10条记录,执行循环前,当前记录为第1条。循环结束后,①处代码共执行的次数为( )
s = Text1.Text
s1 = ""
For i = 1 To Len(s) \ 2
m = Mid(s, i, 1)
n = Mid(s, n - i + 1, 1)
If m > n Then
s1 = s1 + m + n
Else
s1 = s1 + n + m
Next i
Text2.Text = s1
在Text1中输入“8523691”,则执行该程序后,Text2中输出的是( )
玩家通过4种指令控制小人运动:
· 左 X:小人向左移动X个格子
· 右 X:小人向右移动X个格子
· 下 X:小人向下移动X个格子
· 挖矿:收集小人所在格子的金矿
小人收集金矿需要遵循一定的规则:
①小人必须将当前行的金矿全部收集,才能去往下一行,即金矿需从上到下收集
②对于同一行的金矿,小人必须按照从左往右的顺序开始收集
现编写程序,以8*8的矩阵为例,在文本框Text1中输入金矿数量,点击按钮“开始”后,随机产生对应数量的金矿并借助图形控件输出(保证不会在同一个格子出现两个金矿),并且在列表框List1中按顺序输出指令,使小人按照规则得到所有金矿。如图a所示。请回答下列问题。

图a
图b
Const n = 8 '程序以8*8的矩阵为例
Dim x(1 To n*n) As Integer, y(1 To n*n) As Integer '存储所有金矿的位置
Dim px As Integer, py As Integer '存储小人所在的位置
Dim i As Integer, j As Integer, m As Integer, tmp As Integer
Private Sub Command1_Click()
m = Val(Text1.Text)
Randomize
'随机产生m个金矿并通过图形控件显示在界面上,代码略
For i = 1 To m - 1
For j = 1 To m - i
'将所有金矿按照从上到下、从左到右的顺序排序,以符合题目描述的规则
If x(j) > x(j + 1) Or Then
tmp = x(j): x(j) = x(j + 1): x(j + 1) = tmp
tmp = y(j): y(j) = y(j + 1): y(j + 1) = tmp
End If
Next j
Next i
px = 1: py = 1
i = 1: j = 1
Do While j <= m
Do While x(j) = x(j + 1) And j <= m
j = j + 1
Loop
If y(i) < py Then
List1.AddItem "左" + Str(py - y(i))
ElseIf y(i) > py Then
List1.AddItem "右" + Str(y(i) - py)
End If
List1.AddItem "下" + Str)
List1.AddItem "挖矿"
For k = i + 1 To j
List1.AddItem "右" + Str(y(k) - y(k - 1))
List1.AddItem "挖矿"
Next k
px = x(j)
j = j + 1
i = j
Loop
End Sub
Dim s1 As String, s2 As String, ch As String
Const code = "@*()^&#"
s1 = Text1.Text
For i = 1 To Len(s1)
ch = Mid(s1, i, 1)
If ch >= "a" And ch <= "z" Then
t = (Asc(ch) - 65 + i) Mod 7
s2 = Mid(code, t + 1, 1) + s2
Else
s2 = s2 + ch
End If
Next i
Text2.Text = s2
若 text1 中输入字符“AbCd”,则 text2 中输出的是 ( )
|
序号 |
第1列 |
第2列 |
…… |
第25列 |
第26列 |
|
列号 |
A |
B |
Y |
Z |
|
|
序号 |
第27列 |
第28列 |
…… |
第51列 |
第52列 |
|
列号 |
AA |
AB |
AY |
AZ |
|
|
…… |
|||||
|
序号 |
第703列 |
第704列 |
…… |
第727列 |
第728列 |
|
列号 |
AAA |
AAB |
AAX |
AAZ |
|
为了方便查看,小明编写了“Excel列号转换”程序,程序运行时,用户在文本框Text1中输入数字列号,点击按钮command1,在文本框Text2中输出它的字母列号;反之在文本框Text2中输入字母列号,单击按钮command2,在文本框Text1中输出它的数字列号。程序运行界面如图所示:

程序运行的代码如下,请回答下列问题:
|
'将数字列号转换为字母列号 Private Sub Command1_Click( ) Const code = “ABCDEFGHIJKLMNOPQRSTUVWXYZ” Dim s As String Dim n As Integer Dim r As Integer ① s =“” Do While n > 0 ② n = n \ 26 s = Mid(code, r, 1) + s Loop Text2.Text = s End Sub |
'将字母列号转换为数字列号 Private Sub Command2_Click( ) Dim s As String Dim n As Integer Dim ch As String s = Text2.Text n = 0 For i = 1 To Len(s) ch = Mid(s, i, 1) ③ Next i Text1.Text = Str(n) End Sub |
·将字符串(均为大写字符)s依次转换为相对应的数值(字符A~Z对应数值1~26);
·转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);
·每一段中K个数据与K*K转置矩阵进行乘法运算;
·将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值1~26对应字符A~Z),最后按原始字符串长度输出。
乘法运算规则如下:
第i个元素c(i) =第j个元素a(j) * 转置矩阵第i行第j个元素b(t)的乘积之和(其中j = 1 , 2 …K)
例如:字符串s = PYTHON,区块大小K = 4的转置过程如下:
Private Sub Command1_Click()
Dim a(1 To 100) As Integer ‘存储字符串,长度不超过100个字符
Dim b(1 To 100) As Integer ‘存储转置矩阵,长度不超过10*10
Dim c(1 To 100) As Long
Dim s As String, tmp As String
Dim k As Integer, t As Integer, i As Integer, j As Integer
Dim n As Integer, m As Integer, lens As Integer
s = Text1.Text ‘在Text1中输入原始字符串
k = Val(Text2.Text) ‘在Text2中输入区块大小K
Randomize
For i = 1 To k ^ 2
b(i) = Int(Rnd * 9) + 1
tmp = tmp + Str(b(i))
If i Mod k = 0 Then
List2.AddItem tmp
tmp = ""
End If
Next i
lens = Len(s): n = lens
For i = 1 To n
tmp = Mid(s, i, 1)
List1.AddItem Str(a(i))
Next i
Do While n Mod k <> 0
n = n + 1
a(n) = 0
List1.AddItem Str(a(n))
Loop
For i = 1 To n
m = (i -1) Mod k + 1
t = 1
For j =
c(i) = a(j) * b((m -1)* k + t) + c(i)
t = t + 1
Next j
Next i
For i = 1 To n
List3.AddItem Str(c(i))
Next i
s = ""
For i = 1 To lens
s = s + Chr(t + 64)
Next i
Text3.Text = s ‘在Text3中输出转置后的字符串
End Sub
def prime(x):#如果x 是素数返回True,否则返回False
flag= True
for i in range(2, x):
if :
flag = False
break
return flag
a = int(input("请输入整数a:"))
b = int(input("请输入整数b:"))
if a > b:
#如果a 大于b,则交换a 和b 的值
c = 0
for j in range(a, b + 1):
if :
print(j)
print(a ,"和",b"之间共找到",c,"个素数!")
警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0)
|
persons=[‘甲’,‘乙’,‘丙’, ‘丁’] for thief in persons: flag =(thief!=‘甲’)+(thief==‘丙’)+(thief ==‘丁’)+(thief!=‘丁’) if flag == 3: print(thief) |
运行结果是:
import random
fibo=[1]*11
for i in range(2, 11):
fibo[i] = fibo[i - 1] + fibo[i - 2]
n = random.randint(1, 10)
print (fibo[n])
运行该程序段,输出结果不可能是( )
Dim a(1 To 6) As Integer
For i=1 To 6
a(i)= Int(Rnd * 4)+1
If a(i) Mod 2=0 And i Mod 2=0 Then
a(i)=2 * a(i) - a(i - 1)
End If
s=s+Str(a(i))
Next i
执行该程序段后,变量s的值可能是( )
n=6
k=Val(Text1.Text)
For j=i-1 To n
temp= a(i)
For j=i-1 To ① Step-1
a(j+ 1) = a(j)
Next j
a( ② )= temp
Next i
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_ Click( )
Const Maxn= 100
Dim i As Integer, j As Integer, c As Integer
Dim max As Integer, sum As Integer, n As Integer
Dim a(1 To Maxn) As Integer, s As String
n= Val(Text1. Text)
Randomize
For i=1 To n* n
a(i)=
s=s+Str(a(i))
If i Mod n=0 Then
List1. AddItem s
s=“”
End If
Next i
For i=1 To n
sum= 0
For j=
sum=sum+a(j)
Next j
List2. AddItem "第" + Str(i) +"列的和是:"+Str(sum)
If
sum > max Then max=sum :
'改错
Next i
List2. AddItem "其中第" + Str(c)+ "列和最大,值为:"+Str(max)
End Sub