VB期末A卷.docx
《VB期末A卷.docx》由会员分享,可在线阅读,更多相关《VB期末A卷.docx(14页珍藏版)》请在冰豆网上搜索。
VB期末A卷
2008/09第二学期程序设计基础VB试卷
说明:
考生应将所有答案填写在答卷上,否则无效。
一、选择题(每小题1分,共10分)
1、下列函数中,_________函数返回的值是数值型的。
A.ChrB.MidC.SpaceD.Instr
2、执行语句a=MsgBox("AAAA",,"BBBB","",5)后,所产生的信息框的标题是_____。
A.BBBBB.空C.AAAAD.5
3、设a=2,b=3,c=4,d=5,表达式3>2*bORa=cANDb<>cORc>d的值是______。
A.1B.TrueC.FalseD.-1
4、Timer控件可用于后台进程中,可在Timer事件内编程,要停止触发Timer事件,可通过以下_______属性。
A.Enabled=False或Interval=0B.Visible=False或Interval=0
C.Enabled=False或Visible=FalseD.Enabled=False且Interval=0
5、下面语句说明合法的是______。
A.Suba1(ByValn%())B.Suba1(nAsInteger)AsInteger
C.Functionf1%(f1AsInteger)D.Functionf1(ByValnAsInteger)
6、设当前位置CurrentX=200,CurrentY=400,执行指令"Line(100,250)-(350,500),,B"后,CurrentX=______。
A.100B.200C.350D.550
7、在用通用对话框控件建立打开文件对话框时,在文件列表框只允许显示文本文件类型的文件,则Filter属性的正确设置是_________。
A.Text(.txt)|*.txtB.Text(.txt)(*.txt)
C.文本文件|(.txt)D.Text(.txt)||*.txt
8、当拖动滚动条中的滚动块时,将触发的滚动条的______事件。
A.MoveB.ChangeC.ScrollD.SetFocus
9、VisualBasic的使用目的是_________。
A.图像处理wwwB.开发Windows应用程序C.制作WAV文件D.文字处理
10、假设Text1文本框中输入了学生的成绩,以A、B、C、D、E字符表示不同的等级,下列语句中_____________可用于判断输入数据是否正确。
A.If"A"<=Text1<="E"ThenMsgBox"输入正确"ElseMsgBox"输入错误"
B.If"A"<=Text1OrText1<="E"ThenMsgBox"输入正确"ElseMsgBox"输入错误"
C.IfA<=Text1AndText1<=EThenMsgBox"输入正确"ElseMsgBox"输入错误"
D.If"A"<=Text1AndText1<="E"ThenMsgBox"输入正确"ElseMsgBox"输入错误"
二、填空题(每空格1分,共10分)
1、为了在运行程序时删除窗体Form1的背景图片,可使用
语句。
2、正确地显示一个标题为:
“ERROR”、提示信息为“Input”的对话框的代码是k=InputBox(
)。
3、滚动条产生Change事件是因为
属性值改变了。
4、假定窗体上有一个文本框,若有以下事件过程,请问这个文本框只能接受
。
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii<65OrKeyAscii>90ThenKeyAscii=0
EndSub
5、若在程序中使用Dima,basString*4声明a、b两个变量,则变量a的类型是
,变量b的类型是
。
。
6、表达式Int(74.555*100+0.5)/100的值是
。
7、如果要时钟控件每半分钟发生一个计时器事件,则Interval属性应设置为
。
8、要使Fork=xTo-5Step-2语句循环执行20次,循环变量的初值x应当是
。
9、在用ShowFont方法打开通用对话框中的字体对话框前,必须先设置
属性。
三、是非题(每题1分,共10分,请在答卷纸相应题号旁的括号中填“√”或“×”)
1、在刚建立工程时,使窗体上的所有控件具有相同的缺省字体格式,应对form的font属性进行设置。
2、For/Next循环正常(未执行ExitFor)结束后,控制变量的当前值一定不可能等于终值
3、VB中的对象指的就是控件。
4、CLS是窗体的一个方法。
5、移动框架时框架内控件也跟随移动,但框架内控件的Left和Top属性值不会改变。
6、在窗体上绘制CommonDialog控件时,要想使控件在运行时不可见,只要设置该控件的visible属性为false即可。
7、已知a=3.5,b=5.0,c=2.5,d=True,则表达式:
a>=0ANDa+c>b+3ORNOTd的值是false
8、文件列表框与盘驱动器列表框、目录列表框一样,都能响应Change事件。
9、要在窗体上通过Pset方法绘制宽度为2的点,则需要设置DrawStyle属性。
10、在块IF结构中,“EndIf”语句可以缺省。
四、程序阅读题(每题6分,共24分)
阅读下列程序,将运行时的输出结果或改错的情况写在答卷纸相应题号下。
程序1.下面是一段计算数学表达式的程序,请写出这个数学表达式。
PrivateSubForm_Click()
DimnAsInteger,pAsInteger,sAsSingle,qAsInteger,iAsInteger
n=InputBox("请输入N的值:
")4
s=0:
p=-1:
q=1
Fori=1To4
p=-p
q=q*i
s=s+p*i/q
Nexti
Prints
EndSub
1!
-2/2!
+3/3!
-4/4!
程序2.运行时3次单击command1,并依次输入7,8,9,窗体显示结果是什么?
DimmAsInteger
PrivateSubCommand1_Click()
DimaAsInteger,iAsInteger,fAsInteger
a=InputBox("a=")
f=1
i=2
doWhilei<=a/2
IfaModi=0Thenf=f+i
i=i+1
m=m+1
loop
Printf;m
EndSub
程序3.已知水平滚动条HScroll1的有关属性已经在属性窗口进行了如下的设置:
HScroll1.Min:
1HScroll1.Max:
12HScroll1.SmallChange:
3
HScroll1.LargeChange:
4HScroll1.Value:
5
写出连续3次单击水平滚动条HScroll1右端箭头后,窗体上显示的结果。
PrivateSubHScroll1_Change()
StaticyAsInteger
IfHScroll1.ValueMod2=0Then
y=y+HScroll1.Value
Print"y=";y
EndIf
EndSub
程序4.下面的数字金字塔显示程序中有三处错误,请根据要求修改错误:
OptionExplicit
PublicSubprt()
'显示由数字组成的如下所示金字塔图案
'9
'888
'77777
'6666666
'555555555
'44444444444
'3333333333333
'222222222222222
'111111*********11
DimiAsInteger,jAsInteger
Fori=1To9
PrintSpace(10-i);
Forj=1To2*i-1
Printtrim(str(i));
Nextj
Form1.Print
Nexti
EndSub
五、程序选择填空题(每空格2分,共16分)
阅读下列程序说明和程序,将答案填写在答卷纸相应题号下。
程序1.某文件中存放了若干个实数,单击Command1可用对话框打开该文件、并将读入的所有数据在List1中显示,单击Command2可将读入的数据按值从小到大顺序重新写入到该文件。
PrivateSubCommand1_Click()
DimxAsSingle
List1.Clear:
CommonDialog1.Action=1
OpenCommonDialog1.FileNameFor
(1)As#2
DoWhile
(2)
Input#2,x:
List1.Additemx
Loop
Close#2
EndSub
PrivateSubCommand2_Click()
DimnAsSingle,xAsSingle,iAsInteger,jAsInteger,KAsInteger
n=List1.(3)
Redima(n)AsSingle
Fori=1Ton:
a(i)=List1.List(i-1):
Nexti
Fori=1Ton-1
k=i
Forj=i+1Ton:
If(4)Thenk=j:
Nextj
x=a(k):
a(k)=a(i):
a(i)=x
Nexti
OpenCommonDialog1.FileNmaeForOutputAs#1
Fori=1Ton:
Print#1,a(i):
Nexti
Close#1
EndSub
【供选择的答案】
(1)A、OutputB、InputC、AppendD、Read
(2)A、Eof
(1)B、NotEof
(1)C、Eof
(2)D、NotEof
(2)
(3)A、CountB、ListCount-1C、ListD、ListCount
(4)A、a(j)>a(k)B、a(j)>=a(k)C、a(j)<>a(k)D、a(j)程序2.阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
PrivateSubf(sAsString)
DimiAsInteger,nAsInteger,cAsString
n=Len(s)
IfnMod2=1Thenc=Mid(s,n\2+1,1)
Fori=1ToLen(s)\2
c=Mid(s,Len(s)+1-i,1)+c+Mid(s,i,1)
Nexti
s=c
EndSub
PrivateSubCommand1_Click()
DimxAsString
x=InputBox("x=")
Callf(x)
Printx
EndSub
(5)单击Command1后输入"abc",窗体上显示结果为:
A、cbaB、bcaC、abcD、acb
(6)单击Command1后输入"abcd",窗体上显示结果为:
A、abdcB、cdabC、abcdD、bcad
(7)如果将Sub过程f首句改为PrivateSubf(ByvalsAsString),单击Command1后输入"abcd",窗体上显示结果为:
A、abdcB、cdabC、abcdD、bcad
(8)如果将Sub过程f首句改为PrivateSubf(ByrefsAsString),单击Command1后输入"abcd",窗体上显示结果为:
A、abdcB、cdabC、abcdD、bcad
六、程序设计题(每题10分,共30分)
见答题纸
2007/08二学期程序设计基础VB答卷
选课班级任课教师 班级 学号考生姓名
题号(题分)
一(10)
二(10)
三(10)
四(24)
五(16)
六(30)
总分
得分
一、选择题(每小题1分,共10分)
1.D2.A3.C4.A5.D6.C7.A8.C9.B10.D
二、填空题(每空格1分,共10分)
Form1.Picture=LoadPicture()
("INPUT","ERROR")
value
大写字母
变体变量
定长字串
74.56
30000
33
flags
三、是非题(每题1分,共10分,请在答卷纸相应题号旁的括号中填“√”或“×”)
1、(√)2、(√)3、(×)4、(√)5、(√)
6、(×)7、(√)8、(×)9、(×)10、(×)
四、程序阅读题(每题6分,共24分)
程序1.
(我的公式编辑器有问题,分母都是分子的阶乘)
程序2.12程序3.y=8
75y=20
48
程序4.
(1)应修改为Fori=9To1step-1
(2)应修改为Forj=1To2*(9-i)+1
(3)应修改为PrintTrim(Str(i));(这里str可以没有,但是分号必须有)
五、程序填空题(每空格2分,共16分)
1.B2.D3.D4.D5.A6.B7.C8.B
六、程序设计题(每题10分,共30分)(编程题可能答案会有不同,大家可以酌情判分)
1、编写一个程序,输入两个正整数m、n,调用子过程求两个正整数m、n的最大公约数。
在主程序窗体中输出m、n及最大公约数。
(注意这里要求调用sub子过程,不是function函数过程)
PrivateSubForm_click()
DimmAsInteger,nAsInteger
DimxAsInteger
Do1分
m=val(InputBox("请输入第一个正整数"))1分
n=val(InputBox("请输入第二个正整数"))
loopuntilm>0andn>0
Callgys(m,n,x)2分
Printm&"与"&n&"的最大公约数是"&x1分(如果这里写法跟我的一致,要注意参数传递方式有没有用byval,否则m、n会出错,要扣分)
EndSub
PrivateSubgys(byvalaAsInteger,byvalbAsInteger,rAsInteger)1分
r=aModb算法3分
DoWhiler<>0
a=b:
b=r:
r=aModb
Loop
r=b1分
EndSub
2、设计一个窗体,上面有一个图片框,一个文本框、一个命令按钮,要求初始化命令按钮不能响应,文本框输入一个不小于10且不大于100的整数n,按下回车键后命令按钮激活,按下命令按钮后调用函数过程,计算前n项级数和:
S=1/2+2/3+3/4+4/5+……得到级数和后,在图片框中利用(10,s1),(11,s2)……(n,sn)坐标绘制曲线图,要求图片框的坐标系为(10,4)-(n,-4)
DimnAsInteger1分
PrivateSubCommand1_Click()(此段程序6分)
DimiAsInteger,sAsSingle
Picture1.Scale(10,40)-(n,-40)1分
Picture1.Cls
i=10
s=jishu(i)1分
Picture1.Line(i,s)-(i,s)1分
Fori=11Ton
s=jishu(i)
Picture1.Line-(i,s)1分
Nexti
Command1.Enabled=False1分
EndSub
PrivateFunctionjishu(jAsInteger)AsSingle(此段程序1分)
DimkAsInteger
jishu=0
Fork=1Toj
jishu=jishu+k/(k+1)1分
Nextk
EndFunction
PrivateSubForm_Load()(此段程序1分)
Command1.Enabled=False1分
Text1.Text=""
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)(此段程序2分)
IfKeyAscii=13Then
IfVal(Text1.Text)>=10AndVal(Text1.Text)<=100Then1分
n=Text1.Text
Command1.Enabled=True
Else
Text1.Text=""
Command1.Enabled=False1分
MsgBox"请重新输入数据"
EndIf
EndIf
EndSub
3、在form1窗体的文本框中输入一个正整数n,单击command1按钮,计算n以内所有能被5和7整除的数之和(如:
输入40,则40以内能被5和7整除的数只有35;输入100,则100以内能被5和7整除的数有35和70,则和为105),并将结果显示在标签框内(35+70=105)。
如果输入的n值范围内没有可以被5和7整除的数,则用msgbox提示。
PrivateSubCommand1_Click()1分(有头有尾)
DimnAsInteger,iAsInteger,sumAsInteger
IfVal(Text1.Text)>0Thenn=Text1.TextElseText1.Text="":
ExitSub1分
Fori=7TonStep7算法4分
IfiMod5=0Then
Label1.Caption=Label1.Caption+Str(i)+"+"
sum=sum+i
EndIf
Nexti
Ifsum=0Then2分
MsgBoxn&"中没有能被5和7整除的数"
ExitSub
Else
Label1.Caption=Left(Label1.Caption,Len(Label1.Caption)-2)+"="+Str(sum)2分
EndIf
EndSub
PrivateSubForm_Load()
Text1.Text=""
Label1.Caption=""
EndSub