19.(2019·4月浙江选考)小王设计“模拟撤销”程序,需要用一个“历史记录”,“历史记录”是在对字符串s进行插入或删除时,将每步操作信息依次存储得到的,操作信息由操作符(“+”表示插入,“-”表示删除)、操作位置和操作字符串(只包含英文字母)构成,例如,“+23abc”表示在字符串s第23个位插入了“abc”,“模拟撤销”过程按照“历史记录”的逆序进行,将字符串s的内容恢复到初始状态。
对字符串“Book”的操作与撤销过程,如图a所示。
小王编写的“模拟撤销”VB程序如下,文本框Text1中的内容是撤销前字符串,文本框Text2中的内容是历史记录,单击“撤销”按钮Command1后,在标签Label1中显示撤销过程,程序运行界面如图b所示。
(1)实现上述功能的VB程序如下,在程序中出现的对象没有Caption属性的是________。
(选填,填字母:
A.Label1 /B.Command1 /C.Text1和Text2)
(2)请在划线处填入合适代码。
PrivateSubCommand1_Click()
DimsAsString,tAsString,chAsString
DimcAsString,numAsString,ssAsString
DimnAsInteger,iAsInteger
s=Text1.Text:
t=Text2.Text
c=“ ”:
num=“ ”:
ss=s
Fori=Len(t)To1Step-1
____①______
Ifch>=“a”Andch<=“z”Orch>=“A”Andch=“Z”Then
c=ch+c
ElseIfch>=“0”Andch<=“9”Then
num=ch+num
Else
n=Val(num)
Ifch=“-”Then
s=Mid(s,1,n-1)+____②____
Else
s=Mid(s,1,n-1)+Mid(s,n+Len(c),Len(s)-n-Len(c)+1)
EndIf
ss=ss+“→”+s
c=“ ”:
num=“ ”
EndIf
Nexti
Label1.Caption=ss
EndSub
(3)运行该程序,若文本框Text1中的内容是“April”,文本框Text2中的内容是“-3p+3ri-6e”,单击撤销按钮,For循环语句执行完成后,字符串s的值是“________”。
答案
(1)C
(2)①ch=Mid(t,i,1) ②c+Mid(s,n,Len(s)-n+1) (3)”Apple”
20.(2018·11月浙江选考)在平面坐标系中,给定一组有序的点。
从原点出发,依次用线段连接这些点,构成一条折线。
要求编写一个“计算折线长度”的程序,功能如下:
在文本框Text1中依次输入这些点的坐标值(数据都用逗号分隔并以逗号结尾),单击“计算”按钮Cmd后,程序计算这条折线的长度,结果显示在Label1中。
例如,三个点的坐标(5,10)、(8,12)、(6,17)输入格式如图所示。
(1)Cmd对象属于________类。
(单选,填字母:
A.Form/B.Label/C.TextBox/D.CommandButton)
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
PrivateSubCmd_Click()
DimiAsInteger,jAsInteger,kAsInteger
Dimx1AsSingle,y1AsSingle,x2AsSingle,y2AsSingle
DimdAsSingle,TotaldAsSingle,vAsSingle,sAsString
s=____①____
x1=0:
y1=0 ′出发点为坐标原点
k=1:
j=1:
Totald=0
Fori=1ToLen(s)
IfMid(s,i,1)=“,”Then
v=Val(Mid(s,j,i-j)) ′提取坐标值,保存在变量v中
j=i+1
If____②____Then
x2=v
Else
y2=v
d=Sqr((x2-x1)^2+(y2-y1)^2)
Totald=Totald+d
x1=x2:
y1=y2
EndIf
k=k+1
EndIf
Nexti
Label1.Caption=Str(Totald)
EndSub
(3)运行该程序,输入数据如上图所示,程序执行到循环结束时,变量k的值为________。
答案
(1)D
(2)①Text1.Text ②kMod2=1(3)7
21.小王编写了一个实现文字查找替换功能的VB程序,运行界面如图所示。
文本框Text1显示原文内容,Text2中输入查找内容,Text3中输入替换内容,单击“全部替换”按钮Command1后,Text4显示查找替换的结果,Text5中显示替换的次数,Text6显示“查找内容”在原文中的起始位置。
实现上述功能的VB程序如下,但加框处代码有错,请改正。
PrivateSubCommand1_Click()
DimsAsString,resuleAsString,posAsString
DimcountAsInteger,iAsInteger
i=1:
count=0
resule=“ ”:
pos=“ ”
DoWhilei<=Len(Text1.Text)
s=Mid(Text1.Text,i,Len(Text2.Text))
Ifs=Text2.TextThen
result=result+Text3.Text
count=count+1
pos=
′
(1)
i=i+Len(Text2.Text)
Else
′
(2)
i=i+1
EndIf
Loop
Text4.Text=result
Text5.Text=Str(count)
Text6.Text=pos
EndSub
答案
(1)Str(i)
(2)result=result+Mid(text1.text,i,1)
22.单词倒序加密法。
把明文中每个单词首尾颠倒进行加密,空格、标点等其他字符按原来顺序输出。
在文本框Text1中输入密文,单击“解密”按钮Command1,按加密的规则,在文本框Text2中输出解密后的字符。
程序运行时的界面如图所示。
实现上述功能的VB程序如下,请在划线处填入合适代码。
PrivateSubCommand1_Click()
DimiAsInteger,sAsString,chAsString
DimnewchAsString,s1AsString
____①____
newch=” ”
s1=” ”
i=1
DoWhilei<=Len(s)
ch=Mid(s,i,1)
Ifch>=”A”Andch<=”Z”Orch>=”a”Andch<=”z”Then
s1=ch+s1
Else
newch=____②____
s1=” ”
EndIf
____③____
Loop
Ifs1<>” ”Thennewch=newch+s1
Text2.Text=newch
EndSub
答案 ①s=Text1.Text ②newch+s1+ch ③i=i+1
23.李雷收到了朋友发给他的一封奇怪的邮件,里面有段内容是由一些数字和符号组成,信上面说了,这段内容是加密后的内容,并给出了具体加密方法(假定原文的英文字母都是大写的),具体方法如下:
①“A”变为一个1到100内的随机数*27+1,“B”变为一个1到100内的随机数*27+2,……,
②每个字母变为数字后会加上一个“-”用来分割数字;
③其他空格和标点字符都按原来的表示。
(1)根据描述,若密文为“1905-1442-”,则表示的是:
____________。
(2)请在划线处填入合适的代码。
PrivateSubCommand1_Click()
DimsAsString,ywAsString,chAsString
DimvalueAsInteger′用于存储某字母在密文中对应数值的临时变量
s=Text1.Text
value=0:
yw=” ”
Fori=1ToLen(s)
ch=Mid(s,i,1)
Ifch>=”0”Andch<=”9”Then
value=____①____
ElseIfch=”-”Then
yw=yw+____②____
value=0
Else
yw=yw+ch
EndIf
Nexti
Text2.Text=yw
EndSub
答案
(1)OK
(2)①value*10+Val(ch)
②Chr(Asc(“A”)+valueMod27-1)
24.某密钥的加密规则是:
取字符ASCII码对应二进制的后4位,如果其值为0到7则显示该值,如果其值8到11则对应显示“东南西北”,如果其值为12到15则对应显示“东南东北西南西北”。
程序运行的界面如图所示。
为实现上述功能,请在划线处填入合适的代码。
PrivateSubCommand1_Click()
DimsAsString,nAsInteger,mAsInteger,resultAsString
dw=”东南西北东南东北西南西北”
result=” ”
s=Text1.Text
Fori=1ToLen(s)
c=Mid(s,i,1)
___①___
Ifm<8Then
result=result+Str(m)
Else