从被加密字符串中获取单个字符,然后得到其ascii码的8位二进制编码。
将字符的二进制编码反向,得到其逆序二进制码。
将逆序二进制码的每4位转换为相应的十六进制编码,即得到单个字符加密后的字符串。
以此类推,直到所有字符加密完成,得到加密字符串。
具体程序界面如下图,在text1中输入字符串,点击“加密”按钮command1后,在text2中显示加密后的字符串。
程序中②画线处应填入。
Private Sub Command1_Click()
Dim s As String, ch As String
Dim result As String, chA As String, chB As String
Dim i As Integer, j As Integer
Dim n As Integer, m As Integer
s = Text1.Text
n = Len(s)
result = "": c = "0123456789ABCDEF"
For i = 1 To n
ch = ①
ch = niXu(ch)
m = 0
For j = 1 To 4 ' 获取二进制码前4位的值
②
Next
chA = Mid(c, m + 1, 1)
m = 0
For j = 5 To Len(ch)
m = m * 2 + Val(Mid(ch, j, 1))
Next
chB = Mid(c, m + 1, 1)
result = result + chA + chB
Next
Text2.Text = result
End Sub
' 得到单个字符ch的8位二进制编码
Function D2B(ByVal ch As String) As String
Dim s As String
Dim data As Integer, i As Integer
data = Asc(ch):s = ""
Do While data > 0
s =Str(data Mod 2) + s
data = data \ 2
Loop
If Len(s) < 8 Then
For i = 1 To 8 - Len(s)
s = "0" + s
Next
D2B = s
Else
D2B = s
End If
End Function
' 返回字符串s的逆序
Function niXu(ByVal s As String) As String
Dim i As Integer:Dim r As String
r = ""
For i = Len(s) To 1 Step -1
r = r + Mid(s, i, 1)
Next
niXu = r
End Function
请在下列程序代码的基础上按照要求设计该程序, 完善程序中的划线部分。
Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer
Function f(x) As Boolean
f = True
For i = 2 To Sqr(x)
If x Mod i = 0 Then
Next i
End Function
Private Sub Command1 Click()
n =
For a1 = 2 To n
For a2 = a1 To n
For a3 = a2 To n
If And f(a1) And f(a2) And f(a3) Then
List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3))
End If
Next a3
Next a2
Next a1
End Sub
⑴使用循环列出1到99999中的每一个数zmsknz
⑵通过自定义函数ddknzms拆解得到每个数中的每位数上的数码及它们对应的n次幂之和
⑶将zmsknz与ddknzms进行比较,若相等则说明是自幂数,可将其加入列表。
编写VB程序,使用枚举法得到5位数以内的自幂数,程序设计界面如图所示:
请根据算法及相应注释将下面的程序补充完整:
Function ddknzms(zmsknz As Long) As Long '得到可能的自幂数
Dim zmsknz_str As String '字符串类型自幂数可能值
Dim zmsknz_length As Integer, zmswsxh As Integer '字符串类型自幂数可能值字符个数
zmsknz_str = Trim(Str(zmsknz))
zmsknz_length = Len(zmsknz_str)
For zmswsxh = 1 To zmsknz_length
ddknzms = ddknzms + Val(Mid(zmsknz_str, zmswsxh, 1))^
Next zmswsxh
End Function
Private Sub Command1_Click()
Const ZMSWS = 5
Dim zmsknz As Long, zmsknz_zz As Long
zmsknz_zz = 10 ZMSWS - 1
For zmsknz = 1 To zmsknz_zz
If Then List1.AddItem (Str(zmsknz)
Next zmsknz
End Sub
数组a用于存储产生的10个随机整数,函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False。
Dim a(1 To 10) As Integer
Function f(x As Integer) As Boolean
′代码略
End Function
Private Sub Commandl_Click()
Dim n As Integer ′n用于统计已经产生的随机整数个数
Dim i As Integer.j As Integer
Dim x As Integer.k As Integer
Randomize ′初始化Rnd函数
n=0
List1.Clear ′清除列表框中内容
List2.Clear
Do While n<10
x=① ′产生[1,999]范围内的随机整数
If Not f(x) Then
n=n+1
a(n)=x
List1.AddItem Str(a(n))
End If
Loop
For i=1 To 9
For j=10 To i+1 step -1
If ② Then
k=a(j):a(j)=a(j-1):a(j-1)=k
End If
Next j
Next i
For i=1 To 10
List2.AddItem Str(a(i))
Next i
End Sub
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim a(1 To 10) As Integer ‘存储0~9每个数字出现的次数
Dim b(1 To 26) As Integer ‘存储a~z每个字母出现的次数
Dim zf As String, x As String, p As Integer
Dim maxa As Integer, maxb As Integer
For i = 1 To Len(zf)
x = Mid(zf, i, 1)
If pd(x) = 1 Then
p = Asc(x) - Asc(“0”) + 1
a(p) = a(p) + 1
p = Asc(x) - Asc(“A”) + 1
b(p) = b(p) + 1
Else
p = Asc(x) - Asc(“a”) + 1
b(p) = b(p) + 1
End If
Next i
k = a(1):maxa = 1
For i = 2 To 10
If a(i) > k Then k = a(i):maxa = i
Next i
k = b(1) :maxb = 1
For i = 2 To 26
IfThen k = b(i) :maxb = i
Next i
Label1.Caption =“出现最多的数字是” + Chr(maxa+ Asc(“0”)-1)
Label2.Caption = “出现最多的字母是” + Chr(maxb + Asc(“A”)-1)
End Sub
Function pd(ch As String) As Integer ’函数用于判断每个字符类型
If ch >= “0” And ch <= “9” Then pd = 2
If ch >= “A” And ch <= “Z” Then pd = 2
If ch >= “a” And ch <= “z” Then pd = 3
End Function
Private Function bw(x As Integer, y As String) As String
'函数bw功能:若二进制位数不足,通过在前面添”0”使得位数为4的倍数
Dim rAs 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)
EndIf
bw=①
End Function
Private SubCommand 1 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=Text 1.Text
n=Len(m)
Text 2.Text=””
m=② ‘调整m的位数为4的倍数
For i=1Ton-3Step 4
s=0
For j=i To i+ 3
a=Val(Mid(m, j, 1) )
s=③
Next j
If s>= 10 Then
s 1=Chr(Asc(”A”) +s-10)
Else
s 1=CStr(s)'函数CStr类似于Str,但无前导空格
End If
Text 2.Text=Text 2.Text+s1
Next i
End Sub
① ② ③
Function calculate(x As Integer, y As Integer, op As String) As Integer
If op=“+”Then calculate=x+y
If op=“-”Then calculate=x-y
If op=“*”Then calculate=x*y
If op=“\”Then calculate=x\y
End Function
Function state(op As String) As Integer
If op=“#”Then state=-1
If op=“=”Then state = 1
If op=“+”Then state = 1
If op=“-”Then state = 1
'①
If op=“*”Then state = 3
End Function
Private SubCommand1_Click()
Dim s As String, length As Integer, t As String
Dim k As Integer, q As Integer
Dim opt( 0 To 3) As String
Dim i As Integer
Dim s1 As String
Dim a( 1 To 3) As Integer
s=Text 1.Text
length=Len(s)
t=“”:k=0:q=0:opt(q) =“#”
For i= 1 To length
s1=Mid(s, i, 1)
If s1>=“0”And s 1<=“9”Then
t=t+s1
Else
k=k+1
a(k) =Val(t)
t=“”
Do While '②
a(k-1) =calculate(a(k-1) , a(k) , opt(q) )
k=k-1
q=q-1
Loop
q=q+1
'③
If s1=“=”Then Label1.Caption=Str(a(1))
End If
Next i
End Sub
Function f(a As Integer, b As Integer) As Integer
Dim k As Integer
k = a Mod b
If k = 0 Then
f = b
Else
f = f(b, a mod b)
End If
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer
i = Val(Text1.Text)
j = Val(Text2.Text)
Text3.Text = Str(i * j / f(i, j))
End Sub
该程序运行之后,在text1与text2分别输入25 与15,点击command1后在text3上显示的内容为( )
s="ABCDEFGH"
i=1
Do While i<=Len(s)
If i mod 2=0 then
s=mid(s, i+1, len(s)-i) & mid(s, 1, i-1)
End If
i=i+1
Loop
Text1.text=s
①全0块“0000”,可以化简为“0”
②连续多个全0块,可以化简为“: :”
③一个IPv6地址中只能出现一个“: :”,出现多个全0块时,“: :” 要化简最长的一段,没有最长的就将最左侧的一段化简为“: :”
④“: :”可以出现在地址开头或结尾
如:数据“FBCD:EF01:6789”在化简前为“FBCD:EF01:0000:0000:0000:0000:0000:6789”。
小李根据上述化简算法设计了一个IP化简地址还原的VB程序,功能如下:在文本框Text1中输入已经化简的IP地址,单击“还原”按钮Command1,在文本框Text2中输出其化简前的IP地址。运行界面如图所示。
Function ipv6(s As String) As String
Dim i As Integer
For i= Len(s) + 1 To4
s= "0"+s
Next i
End Function
Private Sub Command1_Click( )
Dim ip(1 To 8) As String
Dim st As String
Dim f As Integer, k As Integer
Dim s As String, n As Integer
f= 0
s = Text1.Text
n= Len(s)
For i= 1 To n
c1 = Mid(s, i, 1)
If c1 <> "." Then
ip(k)= ip(k) +c1
End If
If c1= ":" Or i= n Then
If c2 =":" Then
f= k
Else
ip(k) = ipv6(ip(k))
k=k+ 1
End If
End If
Next i
k=k- 1
x=8-k
For i=k To f+ 1 Step-1
Next i
For i=f+ 1 To f+x
ip(i) = "0000"
Next i
Text2.Text= ip(1)
For i=2 To 8
Text2.Text = Text2.Text + ":" + ip(i)
Next i
End Sub
Dim a(1 To 9) As String, k As Integer
Dim s1 As String, s2 As String
s1= Text1.Text:s2 = Text2.Text
For i = 1 To Len(s1)
k = Val(Mid(s1, i,1))
a(k) = Mid(s2, i, 1)
Next i
For i=1 To 9
s=a(i)+s
Next i
Label1.Caption = s
在文本框Text1中输入“52463”,文本框Text2中输入“happy”, 执行该程序段后,标签Label1中显示的内容是( )
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-1,2,0.01)
y=x**5+x**4+x-3
plt.plot(x,y)
plt.title('x^5+x^4+x-3')
plt.xlabel('X')
plt.ylabel('Y')
plt.show( )
下列选择错误的是( )
def CaesarCipher():
c=mingwen.get("0.0", "end")
b=""
miwen.delete("0.0", "end")
for i in range(len(c)):
if 'a'<=c[i]<='w' or 'A'<=c[i]<='W':
b=b+chr(ord(c[i]) ① ) #生成密文
elif 'x'<=c[i]<='z' or 'X'<=c[i]<='Z':
b=b+chr(ord(c[i]) ② ) #生成密文
else:
b=b+c[i]
miwen.insert("0.0",b)
下列说法正确的是( )
import math
def IsPrime(i):
if i==1:
return False
for j in range(2,int(math.sqrt(i))+1):
if:
return False
return True
a=int(input("请输入a:"))
b=int(input("请输入b:"))
summ=0
for i in range(a,b+1):
if IsPrime(i):
while t>0:
summ=summ+t%10
print("数字和为:",summ)
小明在代码中插入了语句“df_delc=df.drop(0)”, 其余不做修改,那么运行这段修改后的代码,其运行结果为( )
代码和程序运行界面如下所示,请在划线处填入合适的代码,并且在加框处代码有错误,请改正:
Const n = 1000
Dim mw(0 To 1000) As String '存放转换后密文的字符
Function zh(s As String) As String '按字母表后移3位进行转换
Dim p As Integer,flag As Boolean
If s >= "a" And s <= "z" Then
p = Asc(s) - 96: flag = True
Else
p = Asc(s) - 64: flag = False
End If
①
If flag Then zh = Chr(p + 96) Else zh = Chr(p + 64)
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As String, a As Integer
Dim tmp As String, k As Integer, s As String
s = Text1.Text
k = 1: a = 1
For i = 1 To Len(s)
t = Mid(s, i, 1)
If t = " " Then
k = 0: mw(i) = t
Else
If k < 3 Then
mw(i + a) = t: a = -a
Else
tmp = zh(t)
j = i
Do While
②
j = j + 1
Loop
mw(j) = tmp
③
End If
End If
k = k + 1
Next i
For i = 1 To Len(s)
Text2.Text = Text2.Text + mw(i)
Next i
End Sub
请回答下列问题:
① ② ③
s=[1,3,5,7,9]
s.insert(2,6)
print(s)