k=a(j):a(j)=a(j-1):a(j-1)=k flag=True EndIf Nextj i=i+1 LoopLabel3.Caption=\"排序过程的加工遍数为\"+'(2) Str(i) Fori=1Ton
List2.AddItemStr(a(i)) Nexti EndSub
4.【201510】某数据加密方法描述如下: (1)以字节为单位进行加密处理;
(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;
(3)分别将上述两个4位二进制数转换为十进制数;
(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:
值(十进制) 加密字符 0 I 1 l 2 i 3 k 4 e 5 C 6 H 7 N 8 P 9 0 10 11 12 13 14 15 s t c a r d 小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮Commandl,程序依次将文本框Textl中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表显示了字符串中一个字符的加密过程: 程序运行效果如第17题图所示。 实现上述功能的VB程序如下: (1)请在划线处填入合适代码。 PrivateSubCommand1_Click()
DimnAsInteger,sAsString,iAsInteger,ssAsString
DimaAsInteger'存储加密前字符的ASCII码
Dimb1AsInteger,b2AsInteger'分别存储分割、转换后的两个十进制数 s=Text1.Text ① Fori=1Ton
a=Asc(Mid(s,i,1)) b1=a\\16 b2=aMod16
ss=ss+Code2Char(b1)+Code2Char(b2) Text2.Text=ss Nexti EndSub
'十进制值转换为加密字符的函数
FunctionCode2Char(cAsInteger)AsString DimsAsString s=\"IlikeCHNpostcard\" Code2Char=② EndFunction
(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是。
5.【201604】某地1900-1999年的平均降水量数据保存在数据库
中。现要求找出相邻两年年平均降水量变化(即本年度与上年度“年平均降水量”差值的绝对值)最大的年份区间。如果多个符合要求的年份区间,只输入距今最近的。小吴为此编写了VB程序,程序运行时,单击按钮Command1后,在文本框Text1中输出运行结果。实现上述功能的VB代码如下,但加框处代码有错,请改正。
Dimw(1To100)AsSingle'依次存储1900-1999年的年平均降水量数据 Constn=100
PrivateSubForm_Load()
'本过程从数据库中按19000-1999年依次读取年平均降水量数据,并存储在数组w中 '代码略 EndSub
PrivateSubCommand1_Click() DimiAsInteger,imaxAsInteger
1 imax= Fori=3Ton
IfAbs(w(i)-w(i-1))>=Thenimax=i Abs(w(i-1)-w(i-2Nexti
Text1.Text=\"年平均降水量变化最大的年份区间是\"+Str(imax+1898)+\"-\"+Str(imax+1899)
EndSub
6.【201604】某数据压缩方法描述如下:
1)原始数据中,某数不为0且相邻无重复,压缩数据用该数据表示;
2)原始数据中,某数为0且相邻无重复,压缩数据用两个数表示,第1个位0,第2个为0;
3)原始数据中,某数据相邻有重复,压缩数据用3个数表示:第1个位0,第2个为重复数的个数,第3个为该数本身; 根据上述压缩方法,对应的解压缩方法示例如图a所示。
图a
小明编写了一个解压送VB程序,功能如下:窗体加载时,自动读取压缩数据,依次存储在数组元素a(1)、a(2)、a(3)……中,压缩数据的个数存储在变量n中,压缩数据显示咋文本框Text1中。单击“解压缩”按钮Command1,程序对压缩数据依次进行解压缩处理,解压缩数据显示在文本框Text2中。程序运行界面如图b所示。
图b
(1)如果压缩数据为“23,0,21,66,0,0,77,0,5,0”,则解压缩数据的个数是。
(2)实现上述功能的VB程序如下。请在划线处填入合适代码。 Dima(1To100)AsInteger'存储压缩数据,最大处理个数为100 Dimb(1To1000)AsInteger'存储解压缩数据,最大处理个数为
1000
DimnAsInteger'存储压缩数据的个数 PrivateSubForm_Load()
'压缩数据由上述压缩方法生成
'本过程用于读取压缩数据并存储在数组a,压缩数据个数存储在变量n中 '代码略 EndSub
PrivateSubCommand1_Click()
DimpaAsInteger'存储压缩数组当前处理位置 DimpbAsInteger'存储解压缩数组当前处理位置 DimfirstdataAsInteger,countAsInteger,iAsInteger pa=1:pb=1 DoWhilepa<=n firstdata=a(pa)
Iffirstdata<>0Then'示例1情况处理 b(pb)=firstdata pa=pa+1:pb=pb+1 Else
count=a(pa+1)
Ifcount=0Then'示例2情况处理 b(pb)=0
pa=①:pb=pb+1 Else'示例3情况处理 Fori=1Tocount ② Nexti
pa=pa+3:pb=pb+count EndIf EndIf Loop
Text2.Text=Str(b(1)) Fori=2To③
Text2.Text=Text2.Text+\Nexti EndSub
7.【201608温州模拟卷】小明编写了一个VB程序,功能如下:在文本框Text1中输入一段英文,并在文本框Text2中输入英文段落中的某个单词(或字符串),单击Command1后,在文本框Text3中显示该单词在文中某两次出现的最大间距,若只出现一次货不出现则显示值为0。程序运行界面如下图所示: 实现上述功能的VB程序如下: PrivateSubCommand1_Click()
Dima(1To1000)AsString'数组a存储文中出现该指定单词或字
符串的各个位置
DimsAsString,cAsString,chAsString DimnAsInteger,MaxAsInteger,iAsInteger s=Text1.Text c=Text2.Text n=0:Max=0
Fori=1ToLen(s)-Len(c)+1 ch=________________ Ifch=cThen n=n+1 a(n)=i Ifn>=2Then
Ifa(n)-a(n-1)-Len(c)>MaxThenMax=a(n)-a(n-1)-Len(c) EndIf EndIf Next
Text3.Text=_______________ EndSub
8.【201608温州模拟卷】合唱队列是按队员的身高进行排列,形成中间高两边有序降低的队形:例如有6个队员“己、戊、丁、丙、乙、甲”的身高一次由小到大,则排列后的顺序为“戊、丙、甲、乙、丁、己”。小李用VB编写模拟“合唱队列”程序,功能
如下:在文本框Text1中输入各队员身高,输入结束并回车,则输入的各队员身高分别存入数组a中;单击“合唱队列”按钮Command1,对数组a的元素进行有序排列后,将各元素存入数组C中形成合唱队列,并将结果显示在文本框Text2中。程序运行界面如图所示:
实现上述功能的VB程序如下:
(1)如果输入各队员身高为“190,191,194,179,166”,则合唱队列的结果为_____________。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。 Dima(1To20)AsInteger DimnAsInteger
PrivateSubtext1_keypress(keyasciiAsInteger)
'将输入各队员身高分别存入数组a中,队员个数为n,代码略! EndSub
PrivateSubCommand1_Click() Dimc(1To20)AsInteger
DimrightAsInteger,leftAsInteger,iAsInteger Fori=1Ton-1 Forj=1Ton-i If__________Then
t=a(j):a(j)=a(j+1):a(j+1)=t EndIf
Next Next
'下列程序段实现数组C的合唱队列 m=(1+n)\\2 left=m:right=m c(m)=a(n) i=2 DoWhilei<=n IfiMod2=0Then right=right+1 c(right)=c(n-i+1) Else
________________ c(left)=a(n-i+1) EndIf Loop
s=_____________ Fori=2Ton
s=s+\",\"+Str(c(i)) Next
Text2.Text=s EndSub
9.【201610加试题】小吴为了研究冒泡排序过程中数据的“移动”情况,编写了一个VB程序,功能如下:在列表框List1中显示排序前数据(存储在数组a中),在文本框Text1中输入初始位置(即下标值),单击“排序”按钮Command1后,在标签Label1中显示指定初始位置的数据在排序过程中的位置变化情况,排序后的数据显示在列表框List2中。程序运行界面如图所示。
实现上述功能的VB程序如下,但加框处代码有错,请改正。 Dima(1To8)AsInteger DimnAsInteger
PrivateSubForm_Load() a(1)=30:a(2)=47:a(3)=30:a(4)=72
a(5)=70:a(6)=23:a(7)=99:a(8)=24 n=8 Fori=1To8
List1.AddItema(i) Nexti EndSub
PrivateSubCommand1_Click()
DimiAsInteger,jAsInteger,kAsInteger DimposAsInteger DimsAsString s=Text1.Text pos=Val(Text1.Text) Fori=1Ton-1
Forj=nToi+1Step-1 Ifa(j)'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置Ifpos=jThen
pos=j-1
s=s+\"→\"+Str(pos)
Else pos=j
s=s+\"→\"+Str(pos) EndIf EndIf Nextj Nexti
Label1.Caption=\"位置变化情况:\"+s
数组元数组元素的含义 素 Fori=1Ton
List2.AddItemStr(a(i)) Nexti
a(1) a(2) … 存储班级数n 从a(2)到a(n+1)依次存储第1、2、…EndSub a(n+1) 第n个班级人数 10.【201610加试题】小李与
a(n+2) 从a(n+2)依次存储小王合作编写一个成绩统计的
VB程序:小王编写一个过程,… 第1班每个学生的该过程从数据库读取某一指定
… 科目的相关数据,存储在数组a
单科成绩、第2班每中;小李编写一个过程,该过程
依据数组a中的相关数据统计各班平均分。小李与小王约定的个学生的单科成数组a各元素含义如图所示。
程序功能如下:在文本框绩、…第n班每个学Text1中输入科目名称,单击“读取数据库”按钮Command1,程生的单科成绩 序从数据库读取数据;单击“开
始统计”按钮Command2,程序进行统计处理,结果输出在列表框List1中。程序运行界面如下图所示。 实现上述功能的VB程序如下,请回答下列问题:
(1)根据程序运行界面中的数据及数组a各元素的含义,数组元素a(5)的值为(填写数值)。 (2)分析程序,可知数据库的文件名为 (3)请在划线处填入合适的代码。
Dima(1To600)AsInteger'数组大小满足处理要求 PrivateSubCommand1_Click()
'本过程由小王完成,从数据库读取指定科目的各相关数据,存储在数组a中
DimconnAsNewADODB.Conncction DimrsAsNewADODB.Recordset
connConncctionString=source=\"+\"Score.accdb\" conn.Open
Setrs.ActiveConnection=conn '本过程的其他语句略 EndSub
PrivateSubCommand2_Click()
'依据数组a中的相关数据统计各班级平均分 DimiAsInteger,jAsInteger,nAsInteger DimpAsInteger,sumAsInteger,averAsSingle ① p=n+2 Fori=1Ton
sum=0
Forj=1Toa(i+1) ②
p=p+1 Nextj
aver=sum/a(i+1)
List1.AddItemStr(i)+\"\"+Str(a(i+1))+\"\"+Str(aver) Nexti EndSub 答案:
1.(1)A(m)A(m)(2)A(k)=A(k+1)2.(1)Text1.text(2)r-1(3)Mid(s,p+1,Len(s)-p)或Mid(s,p+1)或Right(s,Len(s)-p)
3.(1)i<=n-1Andflag=True(2)Str(i-l)
4.(1)①n=Len(s)或n=Len(Text1.Text) ②Mid(s,c+1,1) (2)加密字符i对应两个值0,2 5.2Abs(w(imax)-w(imax-1)) 6.29pa+2b(pb+i-1)=a(pa+2)pb-1
7.⑴(2分)Mid(s,i,Len(c)) ⑵(2分)Str(Max) 8.⑴(2分)166,190,194,191,179
⑵①(2分)a(j)>a(j+1)②(2分)left=left–1③(1分)Str(c(1)) 9.k=a(j-1)ElseIfpos=j-1Then 10.33Score.accdbn=a(1)sum=sum+a(p)