⑴只针对英文字符和数字进行加密,其余字符保持不变;
⑵将原文中的小写字母转换成大写字母;
⑶根据第2步所得结果,若是英文字符,则逐个后移4位(例如“A”→“E”,“Z”→“D”);若是数字,则逐个前移2位(例如:“3”→“1”,“1”→“9”)。
实现上述要求的某Python程序如下,但程序加框处代码有误,请修改。
s1=input("请输入明文:")
s2="
for i in range(len(s1)):
s=""
if s1[i]>="a" and s1[i]<="z":
s=chr(ord(s1[i])-32)
s=chr((ord(s)-ord("A")+4) % 26 +ord("A"))
elif s1[i]>="A" and s1[i]<= "Z":
s=chr((ord(s1[i])-ord("A")+4)%26 +ord("A"))
elif s1[i]>="0" and s1[i]<="9":
#①
else:
#②
s2=s2+s
print("得到的密文是:",s2)
①从左往右依次获取各字符的ASCII码值;
②对奇数位字符的ASCII码值做加法处理,对偶数位字符的ASCII码值做减法处理;
③将上述结果取绝对值后除以26求余数,余数为0~25,分别对应大写字母A~Z,则该大写字母即为验证字符。
小李编写字符串验证程序,功能如下:在文本框Text1中输入待检验字符串(最后一位为验证字符),点击按钮Command1,在标签Label1中显示输入字符串是否验证成功。程序运行界面如图所示。
Private Sub Command1_Click()
Dim s As String, t As String
Dim cha As Integer, ans As Integer
Dim a As Integer, b As Integer, i As Integer
s =
t = Mid(s, Len(s), 1)
ans = 0
For i = 1 To Len(s) - 1
cha = Asc(Mid(s, i, 1))
If Then
ans = ans - cha
Else
ans = ans + cha
End If
Next i
ans = Abs(ans) Mod 26
If
Then
Label1.Caption = "验证成功!"
Else
Label1.Caption = "验证失败!"
End If
End Sub
flag=True: i=1
Do While i<=6
k=Int(Rnd*99)+1
If k mod 2=1 Or flag Then
a(i)=k
i=i+1
flag=Not flag
End If
Loop
执行该程序段后,在下列选项中,a(1)~a(6)各元素的值可能的是( )
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 中输出的是 ( )
解题思路:随机生成 10 条船的载重量[1,10]和费用[1,30],然后将它们按费用从小到大排序,若费用相同,则载重大的在前,运输时,先把费用低的船装满,再按费用向下将船装好,运输。
图 a
Dim f(1 To 10) As Integer, w(1 To 10) As Integer, b(1 To 10) As Integer
Private Sub Command2_Click()
Dim n As Integer, count As Integer, yf As Integer
Dim s As String, i as integer
n = Val(Text1.Text)
count = 0
yf = 0
cz = n
i = 1
Do While n > 0
If n >= w(b(i)) Then
Else
yf = yf + n * f(b(i))
End If
count=count+1
s = s + Str(b(i)) + "号船"
i=i+1
Loop
Label2.Caption = "总计费用为:" + Str(yf) + "元 " + Str(count) + " 条船,分
别为 " + s
End Sub
Private Sub form_load()
Dim t As Integer, i as integer, j as integer
List1.Clear
List1.AddItem "编号 载重 费用'"
For i = 1 To 10
w(i) = Int(Rnd * 10 + 1)
f(i) = Int(Rnd * 30 + 1)
b(i) = i
List1.AddItem Str(b(i)) + " " + Str(w(i)) + " " + Str(f(i))
Next i
For i = 1 To 9
For j = 10 To i + 1 Step -1
If Then
t = b(j): b(j) = b(j - 1): b(j - 1) = t
End If
Next j
Next i
End Sub
1)将每个人看成是一个钩码,能挂在另一个挂钩底下,自己底下也能挂其他挂钩。
2)如果两个钩码在同一条钩码串上,则为亲戚(如2、3都能找到1)。
3)如果两个是亲戚但不在一串钩码上,则可将其中一串的最上面的钩码挂在另一串的下方。
例如从图a加框处的前三行数据可得到图b所示的钩码串1和钩码串2,从第四行数据可知9、5也为亲戚,则可将两串钩码合并,合并后3为2的顶端,5为3的顶端,其余数据以此类推。
根据算法思想,编写VB程序功能如下:程序初始化时给出6条亲戚关系显示在List1中,单击“理关系”按钮,在List2中显示每个人所在钩码的顶端编号。在Text1和Text2中分别输入两人的编号,单击“询问”按钮,输出两个人是否为亲戚关系。程序运行界面如图a所示。
Const n = 9 ‘总人数
Const m = 6 ‘已知的亲戚关系数
Dim a(1 To n) As String , b(1 To n) As String
Dim f(1 To n) As String ‘记录不同的亲戚钩码串成员,每条亲戚钩码串内互为亲戚
Dim k As Integer ‘亲戚钩码串的数目
Private Sub Form_Load()
‘初始化List1和List2,生成m条亲戚关系,每条亲戚关系的编号对应存储在数组a(i)和b(i) '中,在List1中输出a(i)和b(i),代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, x As Integer, y As Integer
f(1) = a(1) + b(1) ‘利用a(1)、b(1)生成第一条钩码串存储在f(1)中
k = 1 ‘k为钩码串编号
For i = 2 To m
x = root(a(i), 0): y = root(b(i), 0) ‘x为调用函数获取a(i)所在的钩码串编号
If x = 0 And y = 0 Then k = k + 1: ‘根据x与y分类讨论
If x <> 0 And y = 0 Then f(x) = f(x) + b(i)
If x = 0 And y <> 0 Then f(y) = f(y) + a(i)
If x <> y And x <> 0 And y <> 0 Then ‘x、y在不同钩码串则将两条钩码串合并
f(x) = f(x) + f(y): f(y) = f(k): k = k - 1
End If
Next i
For i = 1 To n ‘输出每个人所在钩码的顶端编号
x = root(CStr(i), 0): y = root(CStr(i), 1) ‘Cstr()函数用于去除字符前导空格
If x <> 0 Then
If y = Len(f(x)) Then List2.AddItem Str(i) + " " + CStr(i)
If y <> Len(f(x)) Then List2.AddItem Str(i) + " " +
End If
Next i
End Sub
'按钮Command2的功能为判断输入的两个人是否为亲戚关系,代码略
Function root(a As String, b As Integer) As Integer ‘参数a表示待查找目标,参数b
‘表示返回值类型,0表示返回目标所在钩码串编号,1表示返回目标在该钩码串中的位置
Dim m As Integer, n As Integer, i As Integer, j As Integer
m = 0: n = 0: i = k: j = 0
Do While i > 0
If a = Mid(f(i), Len(f(i)) - j, 1) Then m = i: n = Len(f(i)) - j: Exit Do
j = j + 1
If j = Len(f(i)) Then i = i - 1: j = 0
Loop
If Then root = m Else root = n
End Function
1)对待加密的字符进行判断,如果是英文字符的,则将该字符后移2位(如:字符“A”转换成“C”,字符“Z”转换成“B”,字符“a”转换成“c”,字符“z”转换成“b”),其他字符保持不变;
2)求出每个字符的ASCII码,然后用7位二进制来表示,比如“4”的ASCII码为十进制52,转换为7位二进制为“0110100”;
3)从左至右依次记为第1,2,3……7位,分别把第3,4,5位取反。即0变1,1变0,至此“0110100”变为“0101000”,将此二进制转换为ASCII码为40,对应的字符为左括号“(”,即“4”经过加密后得到加密字符为左括号“(”。
在文本框Text1中输入ASCII字符,单击“加密”按钮Command1,则在文本框Text2中显示经过加密的字符。程序界面如图所示,请完成下列问题。
Private Sub Command1_Click()
Dim s As String, ch As String s = Text1.Text
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "A" And ch <= "Z" Then
ElseIf ch >= "a" And ch <= "z" Then '让小写字母后移2位,代码略
End If
Text2.Text = Text2.Text +
Next i
End Sub
Function jm(x As String) As String
Dim a(1 To 7) As Integer, j As Integer, n As Integer, asc1 As Integer
asc1 = Asc(x)
n = 0
For j = 7 To 1 Step -1
If j = 3 Or j = 4 Or j = 5 Then a(j) = 1 - asc1 Mod 2
Else
a(j) = asc1 Mod 2
End If
n =
asc1 = asc1 \ 2
Next j
jm = Chr(n)
End Function
s=int(input("请输入一个两位数:"))
s=s//6
print(s)

Private Sub decrypt_ Click()
Dim g,n,U,y,hkey As Integer
Dim mw, xx As string
Dim a(1 To 100) As Integer
Dim i, L As Integer, c As String
'经与小明的协商,小红已获得g,n,U,y的值
g=2:n=7 '约定两个数g和n的值分别为2和7
U=2:y=5 '小红随机生成的数y的值为5
mw = Text1.Text '小明的密文,由数字和逗号组成
hkey = ①
L=1
For i = 1 To Len(mw)
c = Mid(mw, i, 1)
If
Then
a(L)=a(L)*10+Val(c)
Else
L= ②
End If
Next i
For i=1 To L
a(i) = a(i) Xor hkey
③
Next i
Text2.Text = xx
End Sub
① ② ③
ans = 0: L = 0: R = 7
key = 2 ^ (Int(Rnd * 5))
Do While L <= R
m = (L + R + 1) \ 2
If a(m) > key Then
L = m + 1
ans = ans + 1
Else
R = m - 1
ans = ans - 1
End If
Loop
数组 a(0)到 a(7)的值依次为16,16,8,8,4,2,2,1,该程序运行后,ans 的值不可能的是( )
a=Int(Rnd*20)*2+11
r=0:s=""
Do While a>0
r=a Mod 7
s=r&s
a=a\7
Loop
执行该程序段后,变量s的值不可能是( )
①open ( ) ②load ( ) ③read ( ) ④write ( )
a=[1,2,3,4,5]
b=[1,3,5,7,9]
for i in range(10):
if i in a:
if i in b:
print(i,end=“→”)
以上程序段执行后的输出结果是( )