秋VB.docx
《秋VB.docx》由会员分享,可在线阅读,更多相关《秋VB.docx(49页珍藏版)》请在冰豆网上搜索。
秋VB
VisualBasic程序设计(2008秋)
一、选择题(用答题卡答题,答案依次填在21~30答题号内)
21.窗体上有若干命令按钮和一个文本框,程序运行时焦点置于文本框中,为了在按下回车键时执行某个命令按钮的Click事件过程,需要将该按钮的21属性设置为True。
A.EnabledB.Default
C.CancelD.Visible
22.执行以下语句时,会出现错误提示的是22。
A.Print“2b3”+12.5B.Print“12.5”+12
C.Print“12.5”&12.5D.Print“2e3”+12
23.数学表达式
对应的VB表达式是23。
A.Abs(e^x+Sin(30)^3)/Sqr(x+y))
B.Abs(Exp(x)+Sin(30)^3)/(Sqr(x+y))
C.Abs(e^x+Sin(30*3.14159/180)^3)/(Sqr(x+y))
D.Abs((Exp(x)+Sin(30*3.14159/180)^3)/Sqr(x+y))
24.下面的表达式中,有24个能够对Single类型变量x的第3位小数,正确地进行四舍五入计算。
Format(x,"#.00")Int(100*(x+0.005))/100
CInt(100*(x+0.005))/100Fix(100*(x+0.005))/100
A.1个B.2个C.3个D.4个
25.下面有关数组处理的叙述中,正确的是25。
A.在过程中使用ReDim语句可以改变动态数组数据的类型
B.在过程中,可以使用Dim、Private和Static语句来定义数组
C.用ReDim语句重新定义动态数组时,可以改变数组的大小,但不能改变数组的维数
D.不可以用Public语句在窗体模块的通用处说明一个全局数组。
26.下列关于菜单的说法中,错误的是___26_____。
A.每一个菜单项就是一个对象,并且可设置自己的属性和事件
B.菜单项不可以响应DblClick事件
C.VB6.0允许创建超过四级的子菜单
D.程序执行时,如果要求菜单项是灰色,不能被用户选择,则应设置菜单项的Enabled属性为False
27.以下关于Function过程的说法中,错误的是___27____。
A.Function过程名可以有一个或多个返回值
B.在Function过程内部不得再定义Function过程
C.Function过程中可以包含多个ExitFunction语句
D.可以像调用Sub过程一样调用Function过程
28.以下Case语句中,错误的是___28_____。
A.Case0To10B.CaseIs>10
C.CaseIs>10AndIs<50D.Case3,5,Is>10
29.下面的表达式中,运算结果为True的是29。
A."abcrd"<="ABCRD"B.Int(134.69)<=CInt(134.69)
C.3>2>1D.Mid("Visual",1,4)=Right("lausiV",4)
30.设计界面时,要使一个文本框具有水平和垂直滚动条,应先将其30属性置为True,再将ScrollBar属性设置为3。
A.MultiLineB.AutoSizeC.AlignmentD.RightToLeft
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)
1.执行下面程序,单击Command1,则数组元素a(1,2)的数值是
(1),a(3,3)的数值是
(2),图片框中最后一行显示的是(3)。
OptionExplicit
PrivateSubCommand1_Click()
Dima(4,4)AsInteger,iAsInteger,jAsInteger
DimkAsInteger,numAsInteger
num=0
Fork=1To4
Fori=1Tok-1
num=num+1
a(i,k)=num
Nexti
Forj=kTo1Step-1
num=num+1
a(k,j)=num
Nextj
Nextk
Fori=1To4
Forj=1To4
Picture1.PrintRight(""&a(i,j),3);
Nextj
Picture1.Print
Nexti
EndSub
2.执行下面程序,单击Command1,窗体上显示的第一行是(4),第二行是(5),第四行是(6)。
OptionExplicit
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger,iAsInteger
a=2:
b=5
Fori=aToa*bStepa
Callsub1(i,a,b)
Printa,b
Nexti
Printa,b,i
EndSub
PrivateSubsub1(iAsInteger,aAsInteger,bAsInteger)
i=i+1
a=a+1
b=b+1
EndSub
3.运行下面的程序,单击Command1,在窗体上显示的变量a的值为(7),变量b的值为
(8),变量c的值为(9)。
OptionExplicit
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger,cAsInteger
a=5:
b=10:
c=15
Printfun(a,b,c)+fun(a,b,c)
Printa,b,c
EndSub
PrivateFunctionfun(xAsInteger,yAsInteger,zAsInteger)AsInteger
z=x
x=x+y
y=y+z
fun=x+y
EndFunction
4.执行下面的程序,单击Command1,窗体上显示的第一行是(10),第二行是(11),第四行是(12)。
OptionExplicit
PrivateSubCommand1_Click()
DimaAsInteger,bAsInteger
a=1:
b=1
Callsub1(a,b)
Printa,b
EndSub
PrivateSubsub1(aAsInteger,bAsInteger)
a=a+b:
b=b+a
Printa,b
Ifa>10Then
a=a+b
b=b+a
Else
Callsub1(a,b)
EndIf
EndSub
5.运行下列程序,单击Command1,在窗体上显示的第一行内容是(13),第二行的内容是
(14),第三行的内容是(15)。
OptionExplicit
PrivateSubCommand1_Click()
DimsAsString
s="Basic"
Calltrans(s)
EndSub
PrivateSubtrans(sAsString)
DimjAsInteger,tAsString
DimkAsInteger
k=3
Do
j=InStr(s,"a")
t=LCase(Right(s,j))
s=Right(t,Len(s)-k)&Left(s,Len(t))
k=k-1
Prints
LoopUntilk=0
EndSub
6.下面程序的功能是计算
的值。
请完善如下程序:
OptionExplicit
PrivateSubCommand1_Click()
DimnAsInteger,stAsString,iAsInteger
DimkAsSingle,sAsSingle,jAsInteger
n=Text1
s=1
Fori=2Ton
(16)
Forj=1Toi
st=st&CStr(i)
Nextj
k=(17)
s=s+k
Nexti
Text2=s
EndSub
7.下面程序的功能是:
将输入的2位16进制数的每一位转换为一个四位的2进制数,再组合成为一个8位的2进制数。
OptionExplicit
PrivateSubCommand1_Click()
DimhAsString,h1AsString*1,h2AsString*1
h=Text1
h1=Left(h,1):
h2=Right(h,1)
Text2=h2b(h1)&h2b(h2)
EndSub
PrivateFunctionh2b(pAsString)AsString
DimstAsString,iAsInteger
st="0123456789ABCDEF"
Fori=1ToLen(st)
If(18)ThenExitFor
Nexti
i=i-1
Do
h2b=(19)
i=i\2
LoopUntili<=0
h2b=(20)
EndFunction
8.下面程序的功能是:
输入一个n位的整数(n≤10),求出由这n个数字组成的最大整数和最小整数。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
DimnAsLong,a()AsInteger,iAsInteger
DimlargeAsString,smallAsString
n=Text1
Callchange(n,a)
Callsort(a)
Fori=1ToUBound(a)
large=a(i)&large
small=(21)
Nexti
Text2=large
Fori=1ToLen(small)
If(22)ThenExitFor
Nexti
Ifi<>1Then
small=Mid(small,i,1)&Left(small,i-1)&Right(small,Len(small)-i)
EndIf
Text3=small
EndSub
PrivateSubsort(a()AsInteger)‘冒泡法排序
DimiAsInteger,jAsInteger,tAsInteger
Fori=1ToUBound(a)-1
Forj=1ToUBound(a)-i
If(23)Then
t=a(j)
a(j)=a(j+1)
a(j+1)=t
EndIf
Nextj
Nexti
EndSub
PrivateSubchange((24))
DimkAsInteger
Do
k=k+1
ReDimPreservea(k)
a(k)=nMod10
n=(25)
LoopUntiln=0
EndSub
9.下面程序的功能是:
在文本框1中输入若干以空格分隔的整数(末尾无空格),程序自动将输入的数据分解并存储到一个一维数组,再把数组中所有重复的元素删除(只保留一个),并输出到文本框2。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
Dima()AsInteger,iAsInteger,stAsString
DimkAsInteger,pAsInteger
st=Text1
Do
p=InStr(st,"")
Ifp<>0Then
(26)
ReDimPreservea(k)
a(k)=Val(Left(st,p-1))
st=Right(st,Len(st)-p)
Else
(27)
a(k+1)=Val(st)
EndIf
LoopUntil(28)
Calldel(a)
Fori=1ToUBound(a)
Text2=Text2&Str(a(i))
Nexti
Text2=LTrim(Text2)
EndSub
PrivateSubdel(a()AsInteger)
DimiAsInteger,jAsInteger,kAsInteger
Do
i=i+1
j=i+1
DoWhilej<=UBound(a)
If(29)Then
Fork=jToUBound(a)-1
a(k)=a(k+1)
Nextk
ReDimPreservea(UBound(a)-1)
Else
(30)
EndIf
Loop
LoopUntili>UBound(a)
EndSub
2008秋上机VB01
【考试须知】
1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考;
2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分;
3.程序代码书写应呈锯齿形。
一、改错题(14分)
【题目】本程序的功能是:
随机生成一个有n个元素的数组(n由InputBox函数输入),找出其中的最大元素并将它删除,再输出删除后的数组。
OptionExplicit
OptionBase1
Dima()AsInteger,nAsInteger
PrivateSubCommand1_Click()
DimiAsInteger
n=InputBox("请输入数组个数",,10)
ReDima(n)
Fori=1Ton
a(i)=Int(Rnd*100)+1
Text1=Text1&Str(a(i))
Nexti
CallLookup(a)
Fori=1Ton
Text2=Text2&Str(a(i))
Nexti
EndSub
PrivateSubLookup(a()AsInteger)
DimMaxvAsInteger,maxpAsInteger,iAsInteger
Maxv=a
(1):
maxp=1
Fori=2Ton
Ifa(i)>MaxvThen
Maxv=a(i):
maxp=i
EndIf
Nexti
Callmove_f(a,maxp)
EndSub
PrivateSubmove_f(a()AsInteger,kAsInteger)
DimiAsInteger
Fori=k+1ToUBound(a)
a(i)=a(i+1)
Nexti
ReDima(UBound(a)-1)
EndSub
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,找出指定范围[a,b]之间所有能构成幻影素数的数。
所谓幻影素数是指自身为素数,其反序数也是素数的数。
例如107与701都是素数,所以107是幻影素数。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.
运行程序,在文本框A和文本框B中输入指定数据范围,再按“运行”按钮,将找出的幻影素数存放在列表框中(若指定区间无幻影素数,则输出“本区间无幻影素数”)。
按“清除”按钮,将文本框和列表框清空,焦点置于文本框A上;
3.程序中应定义一个名为prime的函数过程,用于判断一个整数是否为素数;再定义一个求一个整数的反序数的通用过程。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
VB02
【考试须知】
1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考;
2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分;
3.
程序代码书写应呈锯齿形。
一、改错题(14分)
【题目】本程序的功能是查找80~150范围内的特殊十进制数据,其特点是该十进制数对应的8进制数为回文数(指从左向右读与从右向左读是一样的数)。
例如十进制数据105对应八进制数为151,151属于回文数,所以105就是符合要求的数。
OptionExplicit
PrivateSubCommand1_Click()
DimiAsInteger,hwAsString,fgAsBoolean
DimstAsString
Fori=80To150
fg=False
Callhw8(i,hw,fg)
IffgThen
st=CStr(i)&"==>"&hw&"&O"
List1.AddItemst
EndIf
Nexti
EndSub
PrivateSubhw8(nAsInteger,hwAsString,fAsBoolean)
DimkAsInteger,st()AsString*1,iAsInteger
hw=""
Do
k=k+1
ReDimPreservest(k)
st(k)=nMod8
hw=st(k)&hw
n=n\8
LoopUntiln<0
Fori=1ToUBound(st)/2
Ifst(i)<>st(UBound(st)-i+1)ThenExitFor
Nexti
f=True
EndSub
【要求】
1.新建工程,输入上述代码,改正程序中的错误;
2.改错时,不得增加或删除语句,但可适当调整语句位置;
3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。
二、编程题(26分)
【题目】编写程序,验证任意一个不超过9位的自然数,经过下述的反复变换最终得到123。
变换方法是:
统计该数的偶数(0算偶数)个数记为a,奇数个数记为b,该数位数记为c;以a为百位数、b为十位数、c为个位数,得到一个新数(若a=0,则以b为百位数、a为十位数),若这个新数不是123,再按上述步骤进行变换,直到出现123为止。
123被称为陷阱数。
【编程要求】
1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2.
运行程序,在文本框1中任意输入一个不超过9位的自然数后,按“验证”按钮,则根据变换规则生成新数,将其输出到列表框,重复变换操作,直到得到123为止,最后输出“验证成功”信息;按“清除”按钮,将文本框和列表框清空,焦点置于文本框上;按“结束”按钮,结束程序运行;
3.程序中应定义一个名为Validate的通用过程,用于对数据进行变换操作。
【要求】
将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。
VB03
【考试须知】
1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考;
2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分;
3.程序代码书写应呈锯齿形。
一、改错题(14分)
【题目】本程序的功能是将密文解密。
密文中被非数字字符分隔的连续的数字是5进制数,每个5进制数对应一个明文字符的ASCII代码。
例如5进制数242对应的ASCII代码值是72,也就是字母“H”,密文末尾以非数字字符结束。
OptionExplicit
OptionBase1
PrivateSubCommand1_Click()
DimmwAsString,stAsString,iAsInteger
DimpAsString,t()AsString,kAsInteger
mw=Text1
Fori=1ToLen(mw)
p=Mid(mw,i,1)
st=""
Ifp>="0"Andp<="4"Then
st=st&p
ElseIfLen(st)<>0Then
k=k+1
ReDimt(k)
t(k)=st
EndIf
Nexti
Fori=1ToUBound(t)
k=convert(t(i))
st=st&Chr(k)
Nexti
Text2=st
EndSub
PrivateFunctionconvert(pAsString)AsInteger
DimiAsInteger,kAsInteger,nAsInteger
Fori=Len(p)To1
n=n+Val(Mid(p,i,1))*5^k
k=k+1
Nexti
convert=