程序开始时在Text1中输入同学数n,在Text2中输入k的值,在Text3中输入m的值,点击“开始”按钮,在label5中显示依次出圈的学生编号。程序运行如图所示:
VB程序如下,请将按要求答题:
Dim stu(1 To 1000) As Integer
Dim n As Integer
Private Sub Command1_Click()
Dim left, k, m As Integer
Dim stup1, stup2 As Integer
n = Val(Text1.Text)
k = Val(Text2.Text)
m = Val(Text3.Text)
①
stup1 = n: stup2 = 1
For i = 1 To n
stu(i) = i Next i
Do While left > 0
stup1 = teachount(stup1, 1, k)
stup2 =
Label5.Caption = Label5.Caption & " " & Str(stup1)
left = left - 1
If ② Then
Label5.Caption = Label5.Caption & " " & Str(stup2)
left = left - 1
End If stu(stup1) = 0
stu(stup2) = 0
Loop
End Sub
'f=1 表示逆时针数c个,f=-1表示顺时针数c个
Function teachount(ByVal p As Integer, ByVal f As Integer, ByVal c As Integer) As Integer
Do While c > 0
③
Do While stu(p) = 0
p = (p + f + n - 1) Mod n + 1
Loop
c = c - 1
Loop teachount = p
End Function
操作1:在文本框中分别输入L,R,T(1≤L≤R≤n),对数组下标为L到R之内(包含L和R)的字符做相应的字符加密操作(1≤T≤100)。
操作2:在文本框中输入M(1≤M≤n),在标签中输出a(M)的值。
为了提高算法的效率,小明设计了如下算法,以n=10为例,将n个元素依次分成 段( 表示对 向下取整),每段的元素个数为 ,若最后有不足 个元素,则自成一段。给每段设置一个标记,如下表所示。
①对于操作1,若输入的L,R属于同一段,则直接对a(L to R)的每个元素的ASCII码进行后移T位的操作。如输入4,6,3,则第2段中的每个字符变为k,r,q,操作后如下表所示。
②对于操作1,若输入的L,R不属于同一段,则对元素a(L)所在段中从a(L)开始到该段最后一个元素为止的每个字符的ASCII码做后移T位的操作,并对元素a(R)所在段中从该段第一个元素开始到a(R)为止的每个字符的ASCII码做后移T位的操作,对a(L)元素所在段的下一段开始到a(R)元素所在段的上一段为止的每个段标记值增加T,这些段中的元素值保持不变。如在上表的基础_上再输入1,8,2,则第1段的3个字符和第3段中的前2个数都做相应的字符后移2位的操作,第2段的段标记值增加2,如下表所示。
③对于操作2,若输入M的值为4,则输出a(4)的值,若a(M)所在的段标记为奇数,a(M)的值为该数组元素的值,否则输出a(M)对应的大写字母的值,如a(4)=H。程序运行如下。请回答下列问题:
操作1:在文本框Text1,Text2,Text3中依次输入1,8,3后,点击按钮Command1
操作1:在文本框Text1,Text2,Text3中依次输入7,9,2后,点击按钮Command1
操作2:在文本框Text4中输入6后,点击按钮Command2
Const n=10
Dim a(1 To n)As String
Dim dbj(1 To n)As Integer ‘依次表示每段的标记值
Dim bk As Integer ‘表示每段的元素个数.
Private Sub Form_Lond()
bk = Int(Sqr(n))
‘读取数据,并存储到数组a中,代码略
‘读取数据,并存储到数组dbj中,代码略
End Sub
Function bl(x As Integer)As Integer ‘bl函数返回数组元素a(x)的段编号
bl=
End Function
Private Sub Command1_Click()
Dim L Ax Integer, R As Integer, t As Integer
L= Val(Text1.Text)
R= Val(Text2.Text)
t= Val(Text3.Texr)
If bl(L)= bl(R) Then
For i =L To R
a(i)= Chr((Ase(a(i))- Ase("a")+t) Mod 26+97)
Next i
Else
For i=L To bl(L)*bk
a(i) = Chr((Ase(a(i))- Ase("a")+1) Mod 26+97)
Next i
For i= bl(L)+ 1 To bl(R)-1
dbj(i) = dbj(i) + t
Next i
For i =
a(i) = Chr((Ase(a(i))-Ase("a") + 1) Mod 26 + 97)
Next i
End If
List1. AddItem Str(L) +"," + Str(R) + "," + Str(t) +“加密完成!”
End Sub
Private Sub Command2_Click( )
Dim M As Integer
Dim jg As Suring
M= Val(Text4. Tex1)
If dbj(bl(M)) Mod2 = 0 Then
Jg=
Else
jg= a(M)
End If
Labell. Caption =“经过一 系列操作后. a(” + Str(M) +“)的值为:“+ ig
End Sub
screen.fill((255,255,0)) #窗口填充黄色*
#加载背景图像
#将背景图画在窗口
pygame.display.update() #窗口刷新
①授权码由9位字符组成,前8位为日期的密文,最后1位为验证码;
②取日期各位的字符,若该字符第一次出现,则直接取其对应的加密字符,否则取下一个不重复的加密字符;
③求出所有日期字符数值的和,将和除16取余加1得到一位验证码字符,取得的验证码重复时,处理规则与②相同。
加密字符对应表如下:
值(十进制) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
加密字符 |
K |
n |
G |
j |
L |
t |
W |
b |
O |
a |
P |
H |
Z |
Q |
Y |
C |
小李设计了一个生成8位日期(YYYYMMDD格式)授权码的VB程序,程序功能如下:在文本框Text1中输入一个8位有效日期,单击“生成”按钮Command1后,在标签Label2中显示该日期的授权码。运行界面如图所示。实现上述功能的VB程序如下。
Dim f(0 To 15)As Integer
Const code ="KnGjLtWbOaPHZQYC"
Private Sub Command1_Click( )
Dim rq As String,sq As String
Dim c As Integer,i As Integer,d As Integer
rq = Textl.Text:sq=""
For i= 1 To 8
c=Val(Mid(rq,i,1))
d=d+c
sq= ①
Next i
yz =GetChar(d Mod 16+1)
Text2.Text = sq + yz
End Sub
Function GetChar(x As Integer) As String
Dim flag As Boolean
flag = False
Do While flag = False
f(x) =f(x) +1
If f(x) =1 Then
②
f(x) =f(x) +1
flag=True
Else
x=(x+1) Mod 16
End If
Loop
End Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②。
import matplotlib.pyplot as plt
import numpy as np
# numpylinspace(start, stop, num=50)
#产生从start到stop的等差数列,num为元素个数,默认50个
x = np. linspace(-1,1,50)
forn in [1/3,1/2,1,2,3]:
y=x**n
plt. show( )
请回答下面问题:
1)用数组mab分别记录1~96个字符的ASCII值,用数组zm记录对应字符在密码本中位置,如mab(9)=65,表示密码本中第9个字符是“A”,则对应的zm(65)=9;
2)把密钥中每个字符的ASCII值的各个数字进行累加(如Hi分别为(7+2)+(1+0+5)),将累加的和除以9取余数后加7,作为将密码本转换成二维表的列数;
3)每个明文在转换后二维表中位置作为密文,该位置是用十六进制表示的行号和列号。
程序运行的界面如下图所示:
实现上述功能的VB程序如下,请回答以下问题:
Dim Mab(96) As Integer '存储密码本中每个字符的ASCII值
Dim zm(127) As Integer '存储ASCII值32至127的字符在密码本数组mab中的下标
Private Sub Form_Load()
'产生密码本及96个字符在密码本中位置,代码略。
End Sub
Function p(s As String) As Integer
Dim i As Integer, t1 As Long
Dim sum As Integer, s1 As String
t1=0
i=1
Do While i<=Len(s)
s1=Mid(s, i, 1)
t1=Asc(s1)
i=i+1
Loop
p=sum Mod 9+7
End Function
Private Sub Command1_Click()
Dim i As Integer, t As Integer, hang As Integer
Dim s As String, s1 As String, Lie As Integer
List1.Clear
s1=Text1.Text
t=p(s1)
Label5.Caption= “将密码本换成一张”+Str(t)+ “列的二维表”
i=1
Do While i<=96
s=s+Chr(Mab(i))+ “”
If i Mod t=0 Or i=96 Then
List1.AddItem s
s= “”
End If
i=i+1
Loop
wz= “123456789ABCDEF”
s=Text2.Text
For i =1 To Len(s)
s1=Mid(s, i, 1)
hang=(t1-1)\t+1
lie=(t1-1) Mod t+1
s2=
Next i
Text3.Text=s2
End Sub
Dim k As Integer, num As Integer, m As Integer
Dim s As String, ans As String
s =" abcdefghi jk lmnopqrs tuvwxyz "
k=26:ans=””
m = Val(Text1.Text)
Do While m> 0
x=Int(Rnd()*k)+1
ans=ans+Mid(s, x,1)
s =Mid(s,1,x-1)+Mid(s,k,1)+Mid(s,x+1,26-x)
k=k-1:m=m-1
Loop
Text2.Text = ans
文本框Text1中输入4,执行上述程序后,文本框Tex2中有显示的内容不可能为( )
现需要设计一程序,在窗体加载时,读取数据库中学生的订餐情况,以班级+姓名+订餐情况输出至列表框List1中,在文本框Text1中输人班级,单击命令按钮Command1统计该班级的订餐情况,程序运行如图b所示。
Dim xm(1 To 1000) As String, bj(1 To 1000) As Integer
Dim tc1(1 To 1000) As String, tc2(1 To 1000) As String
Dim n As Integer '学生总人数
Private Sub Form_ Load( )
'从数据库中按班级、学号有序地读取学生的姓名、班级、中午套餐、晚上套餐,
'依次存人xm、bj、tc1、tc2数组中,在List1中显示,总人数存人n中,代码略
End Sub
Private Sub Command1_ Click( )
Dim k As Integer, i As Integer, j As Integer, m As Integer
Dim zc(1 To 4) As Integer, wc(1 To 4) As Integer '用于统计套餐数量
k = Val(Text1.Text)
For i=1 To 4 '为数组赋初始值
zc(i)=0:wc(i)=0
Next i
i=1:j=n '查找班级里第一-位同学的序号
Do While i<=j
m=(i+j)\2
If Then i=m+1 Else j= m-1
Loop
For i=j+1 To n
If bj(i) = k Then
'改错
wc(fx(tc2(i)))= wc(fx(tc2(i))) + 1
End If
If Then Exit For
Next i
's为班级订餐统计信息,代码略
List2.AddItem s
End Sub
Function fx(a As String) As Integer '将套餐字母转换为数字序号
End Function
For i = 1 To 5
a(i)= Int(Rnd * 10)
Next i
For i = 2 To 5
If a(i) < a(i -1) And a(i) Mod 2 = 1 Then
a(i) = a(i) + 1
ElseIf a(i) Mod 2 = 0 And i Mod 2 = 0 Then
a(i) = a(i -1) -1
End If
Next i
执行程序后,a数组各元素不可能是( )
例:使用凯撒密码对明文“yza”进行加密的过程:“yza”→121 122 97→…→ 98 99 100 →“bcd”
要求:如果明文是大写字母则需要转小写。如果明文是其它字符则不作任何处理。例如:明文为“ABc,z”密钥为3,则结果密文为“def,c”
def change(code,key):
#change函数功能:实现要进行加密的字符code由大写字母转小写字母
#判断转换后的字符code是否为小写字母,若是则进行加密
m=ord(code)
return chr(m)
code=input(“请输入要加密的明文”)
key=int(input(“请输入密钥”))
code_new=“”
for i in code:
code_new+=change(i,key)
print(code_new)
def encrypt(st1): st2="" for s in stl: st2 += chr(ord(s)+5) return st2 print(encrypt("ktocji")) |
运行结果是
____
a,b=[0]*10,[False]*10
i=0
while i<=9:
____
if not b[r]:
a[i]=r
____
i=i+1
print(a)
则划线处的代码依次是( )
① r=random.randint(0,10)
② b[r]=True
③import random
④ b[i]=True
⑤from random import randint
⑥ r=random.randint(0,9)
i =1
Do While i<=5
a(i)= Int(Rnd*10)*2 + 1
If Not flag(a(i)) Then flag(a(i))=True
i= i + 1
Loop
已知数组flag各元素的初值为False,运行以上程序段程序,数组元素a(1)到a(5)的值可能为( )