22VB加试填空题.docx

上传人:b****8 文档编号:8986457 上传时间:2023-02-02 格式:DOCX 页数:16 大小:31.98KB
下载 相关 举报
22VB加试填空题.docx_第1页
第1页 / 共16页
22VB加试填空题.docx_第2页
第2页 / 共16页
22VB加试填空题.docx_第3页
第3页 / 共16页
22VB加试填空题.docx_第4页
第4页 / 共16页
22VB加试填空题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

22VB加试填空题.docx

《22VB加试填空题.docx》由会员分享,可在线阅读,更多相关《22VB加试填空题.docx(16页珍藏版)》请在冰豆网上搜索。

22VB加试填空题.docx

22VB加试填空题

VB选考填空题

【201509】编写VB程序,实现如下功能:

在文本框Text1中输入一个整数,单击按钮Command1,采用对分查找法在数组A(从小到大排序,并显示在标签Label1中)中查找该数。

若找到,则从数组A中删除该数(该数后面的数组元素都前移一位),并在标签Label2中显示删除后的结果,运行效果如图所示;否则,在标签Label2中显示“该数没有找到”。

实现上述功能的VB代码如下,但加粗加下划线部分代码有错,请改正。

DimA(1to10)asInteger

Form_Load事件过程产生10个整数,按升序保存在数组A中,并在标签Label1中显示

PrivateSubCommand1_click()

DimIasinteger,jasinteger,masinteger,kasinteger

Dimxasinteger,fasboolean‘变量f用于标记是否在数组中找到x

X=val(Text1.text)

I=1:

j=10

F=false

Dowhile(i<=j)and(f=false)

M=int((i+j)/2)

Ifa(m)=xthenf=true

Ifa(m)>xthenI=m+1elsej=m-1

Loop

Iff=truethen

Fork=mto9

A(k+1)=a(k)

Next

Label2.caption=””

Fork=1to9

Label2.caption=label2.caption+str(a(k))+””

Nextk

Else

Label2.caption=”该数没有找到”

Endif

Endsub

【201509】用VB编写一个字符串分行程序,功能如下:

单击“分行”按钮Command1,将文本框Text1中的英文文本在列表框List1中分行显示(分行时单词不得跨行,每行字符尽可能多但不超过40个),并在标签Label1中输出总行数,运行效果如第17题图所示。

分行算法如下:

(1)将文本框中的字符串保存到变量s中;

(2)当s中字符个数超过40时,循环执行下列①、②、③步,否则跳转到(3):

①如果第41个字符不是英文字母,则分行位置p=40;否则,向左逐个查找,直至找到第一个非英文字母,将其位置作为分行位置p;

②截取s的前p个字符,作为新增行显示在列表框List1中,同时总行数加1;③将s中未分行部分重新赋值给变量s。

(3)将s作为新增行显示在列表框List1中,同时总行数加1。

实现上述功能的VB程序如下,请在划线处填入合适代码。

PrivateSubCommand1_click()

Dimsasstring,casstring

Dimrasinteger,totalasinteger,pasinteger

Total=0

S=_______________

DoWhilelen(s)>40

R=41

C=mid(s,r,1)

Ifnot((c>=”a”andc<=”z”)or(c>=”A”andc<=”Z”))then

P=40

Else

‘从第41个字符开始向左找到第1个非英文字母,并将其位置值赋给p

DoWhile((c>=”a”andc<=”z”)or(c>=”A”andc<=”Z”))

r=_________________

c=mid(s,r,1)

Loop

P=r

Endif

List1.additemmid(s,1,p)

Total=total+1

S=__________________

Loop

List1.additems

Total=total+1

Label1.caption=“共”+str(total)+“行”

EndSub

【201510】n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。

小刘发现:

当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。

为此,小刘对算法进行优化,编写了一个VB程序,功能如下:

运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Commaiid1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。

运行效果如图所示。

实现上述功能的VB代码如下,但加框处代码有错,请改正。

Dima(1To8)AsInteger

DimnAsInteger

PrivateSubForm_Load()

'n=8,排序前数据存储在数组a中,并在列表框Listl中显示

'代码略

EndSub

PrivateSubCommand1_Click()

DimflagAsBoolean'flag值为True表示一遍加工中发生过交换

i=1

flag=True

DoWhile'

(1)

i<=n-1Orflag=True

flag=False

Forj=nToi+1Step-1

Ifa(j)

k=a(j):

a(j)=a(j-1):

a(j-1)=k

flag=True

EndIf

Nextj

i=i+1

Loop

Str(i)

Label3.Caption="排序过程的加工遍数为"+'

(2)

Fori=1Ton

List2.AddItemStr(a(i))

Nexti

EndSub

4.【201510】某数据加密方法描述如下:

(1)以字节为单位进行加密处理;

(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;

(3)分别将上述两个4位二进制数转换为十进制数;

(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:

值(十进制)

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

加密字符

I

l

i

k

e

C

H

N

P

0

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

Abs(w(i-1)-w(i-2))

IfAbs(w(i)-w(i-1))>=Thenimax=i

Nexti

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+","+Str(b(i))

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)

a(j-1)=a(j)

a(j)=k

'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置

Ifpos=jThen

pos=j-1

s=s+"→"+Str(pos)

pos=j

s=s+"→"+Str(pos)

EndIf

EndIf

Nextj

Nexti

Label1.Caption="位置变化情况:

"+s

数组元素

数组元素的含义

a

(1)

存储班级数n

a

(2)

从a

(2)到a(n+1)依次存储第1、2、…第n个班级人数

a(n+1)

a(n+2)

从a(n+2)依次存储第1班每个学生的单科成绩、第2班每个学生的单科成绩、…第n班每个学生的单科成绩

Fori=1Ton

List2.AddItemStr(a(i))

Nexti

EndSub

10.【201610加试题】小李与小王合作编写一个成绩统计的VB程序:

小王编写一个过程,该过程从数据库读取某一指定科目的相关数据,存储在数组a中;小李编写一个过程,该过程依据数组a中的相关数据统计各班平均分。

小李与小王约定的数组a各元素含义如图所示。

程序功能如下:

在文本框Text1中输入科目名称,单击“读取数据库”按钮Command1,程序从数据库读取数据;单击“开始统计”按钮Command2,程序进行统计处理,结果输出在列表框List1中。

程序运行界面如下图所示。

实现上述功能的VB程序如下,请回答下列问题:

(1)根据程序运行界面中的数据及数组a各元素的含义,数组元素a(5)的值为(填写数值)。

(2)分析程序,可知数据库的文件名为

(3)请在划线处填入合适的代码。

Dima(1To600)AsInteger'数组大小满足处理要求

PrivateSubCommand1_Click()

'本过程由小王完成,从数据库读取指定科目的各相关数据,存储在数组a中

DimconnAsNewADODB.Conncction

DimrsAsNewADODB.Recordset

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1