vb程序设计书习题和参考标准答案.docx
《vb程序设计书习题和参考标准答案.docx》由会员分享,可在线阅读,更多相关《vb程序设计书习题和参考标准答案.docx(65页珍藏版)》请在冰点文库上搜索。
vb程序设计书习题和参考标准答案
vb程序设计书习题和参考答案
————————————————————————————————作者:
————————————————————————————————日期:
练习题
习题一
一、判断题
1.VisualBasic是以结构化的Basic语言为基础、以事件驱动作为运行机制的可视化程序设计语言。
2.面向对象的程序设计是一种以对象为基础,由事件驱动对象的编程技术。
3.事件是由VisualBasic预先定义的对象能够识别的动作。
4.新建工程时系统会自动将窗体标题设置为Form1。
5.控件的属性值不可以在程序运行时动态地修改。
6.决定对象是否可见的属性为Visible属性,决定对象可用性的属性是Enabled属性。
7.保存VisualBasic文件时,若一个工程包含多个窗体或模块,则系统先保存工程文件,再分别保存窗体或模块文件。
8.单击“启动”菜单项将窗体装入内存时,一定触发窗体的Load事件。
9.“事件过程”是用来完成事件发生后所要执行的程序代码。
10.在打开某窗体时,初始化该窗体中的各控件,应选用Load事件。
二、选择题
1.工程文件的扩展名为。
A、.frxB、.basC、.vbpD、.frm
2.下列不属于对象的基本特征是。
A、属性B、方法C、事件D、函数
3.在设计模式双击窗体将显示的窗口是
A、工程窗口B、工具箱C、代码窗口D、属性窗口
4.VB中运行程序的快捷键是
A、F2B、F5C、Alt+F3D、F8
5.改变控件在窗体中的上下位置应修改该控件的属性。
A、TopB、LeftC、WidthD、Right
6.窗体模块的文件扩展名是
A、.exeB、.basC、.frxD、frm
7.设置窗体的字体用属性。
A、FontNameB、FontSizeC、FontBoldD、FontItalic
8.设置窗体的字号用属性。
A、FontNameB、FontSizeC、FontBoldD、FontItalic
9.下列选项中不属于事件的是。
A、DblclickB、LoadC、ShowD、KeyUp
10.VB编制的程序保存在磁盘上,至少会产生何种文件。
A、.doc与.txtB、.com与.exe.C、.bat与.frmD、.vbp与.frm
三、程序设计题
1.新建一个工程,单击窗体时,在窗体上显示“欢迎使用VisualBasic程序”。
生成可执行文件,保存到D盘根目录下。
2.建立一个工程,界面如图1-28所示。
它由一个窗体、两个文本框和两个命令按钮组成。
单击“拷贝”按钮,可以将第一个文本框中显示的内容复制到第二个文本框中;单击“退出”按钮退出应用程序。
图1-28题2界面图1-29题3界面
3.在窗体上添加一个标签和两个命令按钮,并把两个命令按钮的标题分别设置为“隐藏标签”和“显示标签”。
当单击第一个命令按钮时,标签消失;而当单击第二个命令按钮时,标签重新出现,并且标签中显示“VB程序设计”。
界面如图1-29所示。
习题二
一、判断题
1.用DIM定义数值变量时,该数值变量自动赋初值为0。
2.整型数值常量有整数,长整数两种。
3在逻辑运算符Not、Or、And中,运算优先级由高到低依次为Not、Or、And。
4关系表达式是用来比较两个数据的大小关系的,结果为逻辑值。
5一个表达式中若有多种运算,同一层括号内,计算机按逻辑运算→关系运算→算术运算的顺序对表达式求值。
6赋值语句的功能是计算机表达式并转换为相同类型数据后为变量或控件属性赋值。
二、单选题
1.以下合法的VisualBasic标识符是_______。
A、ForLoopB、ConstC、9abcD、A#x
2.下列可作为VisualBasic变量名的是_________。
A、a#aB、4aC、?
xyD、Consta
3.表达式6*7/8Mod9的值是_______。
A、4B、5C、6D、7
4.将数学表达式cos2(a+b)+5e2写成VisualBasic表达式,其正确的形式是_______。
A、cos(a+b)^2+5*Exp
(2)B、cos^2(a+b)+5*Exp
(2)
C、cos(a+b)^2+5*Ln
(2)D、cos^2(a+b)+5*Ln
(2)
5.数学关系3≤x<10表示成正确的VB表达式为________。
A、3<=x<10B、3<=xandx<10
C、x>3orx<10D、3<=xand<10
6.设x=4,y=8,z=7,表达式xz)orzA、1B、-1C、TrueD、False
7.已知变量a、b、c中c最小,下列判别a、b、c能否构成三角形的逻辑表达式为_________。
A、a>=bandb>=candc>0B、a+c>bandb+c>aandc>0
C、(a+b>=cora-b<=c)andc>0D、a+b>canda-b0
8.下面进行算术运算符号的是_______。
A、ImpB、ModC、NotD、Like
9.可以同时删除字符串前导和尾部空白的函数是_______。
A、LtrimB、RtrimC、TrimD、Mid
10.Rnd函数不可能为下列_______值。
A、0B、1C、0.1234D、0.0005
11.Int(198.555*100+0.5)/100的值是_______。
A、198B、199.6C、198.56D、200
12.如果x是一个正实数,对x的第3位小数四舍五入的表达式是______。
A、0.01*Int(x+0.005)B、0.01*Int(100*(x+0.005))
C.、0.01*Int(100*(x+0.005))D.、0.01*Int(x+0.05)
13.执行语句s=len(Mid(“VisualBasic”,1,6))后,s的值为______。
A、VisualB、BasicC、6D、11
14.描述x、y中有一个小于z的逻辑表达式是_______。
A.x15.Int(Rnd*100)表示的是______范围内的数。
A、[0,100]B、[1,99]C、[0,99]D、[1,100]
16.输入对话框inputbox的返回值的类型是_________。
A、字符串B、整数C、浮点数D、长整数
17.在一行内写多个语句时,每个语句之间要用_____符号分隔。
A、,B、;C、:
D、、
18.一个语句要在下一行中继续书写,可以用______符号作为续行符。
A、+B、-C、_D、…
19.下列声明语句中错误的是_________。
A、Constvar1=123B、Dimvar2=’abc’
C、dima,basstringD、dimvar3asinteger
20.PrintNot10>15And8<5+2的输出结果为_____。
A、8B、7C、trueD、false
三、程序设计题
1.编写窗体的单击事件代码,求一任意三角形的面积,三角形的三条边a、b、c通过Inputbox函数输入,计算的结果存入S变量中,并以消息框的形式输出。
提示:
任意三角形的面积公式
2.编写一段代码,求给定的一个圆的周长和面积。
要求:
(1)圆的半径r利用Inputbox函数从键盘任意输入(r>0)。
(2)圆周率定义为符号常量。
(3)利用赋值语句将求出的周长和面积赋给变量L和S。
(4)用Print方法输出详细结果。
习题三
一、选择题
1.执行以下语句后的结果为。
DimxAsInteger
IfxThenPrintxElsePrintx-1
A、1B、0C、-1D、不确定
2.下列关于SelectCase测试表达式的叙述中,错误的是。
A、只能是变量名B、可以是整型C、可以是字符型D、可以是浮点类型
3.下列关于SelectCase的叙述中,错误的是。
A、Case10To100表示判断Is是否介于10与100之间
B、Case"abc","ABC"表示判断Is是否和"abc"、"ABC"两个字符串中的一个相同
C、Case"X"表示判断Is是否为大写字母X
D、Case-7,0,100表示判断Is是否等于字符串"-7,0,100"
4.由“Fori=1To16Step3”决定的循环结构被执行次。
A、4B、5C、6D、7
5.若i的初值为8,则下列循环语句的循环次数为次。
DoWhilei<=17
i=i+2
Loop
A、3次B、4次C、5次D、6次
6.由“Fori=1To9Step-3”决定的循环结构被执行次。
A、4B、5C、6D、0
二、程序阅读题(写出下列程序的运行结果)
程序1.请写出单击窗体后,窗体上的显示结果。
PrivateSubForm_Click()
DimxAsInteger,yAsInteger
x=5
y=-20
IfNotx>0Thenx=y-3Elsey=x+3
Printx-y;y-x
EndSub
程序2.请写出单击窗体后,窗体上的显示结果。
PrivateSubForm_Click()
DimaAsString,bAsString
a="abcd"
b="cdef"
e=Right(a,3)
f=Mid(b,2,3)
IfeEndSub
程序3.请写出单击窗体后,窗体上的显示结果。
PrivateSubForm_Click()
DimiAsInteger,jAsInteger
DimnAsInteger
n=0
Fori=1To3
Forj=5To1Step-1
n=n+1
Nextj,i
Printn;j;i
EndSub
程序4.请写出单击窗体后,窗体上的显示结果。
PrivateSubForm_Click()
DimiAsInteger
StaticSumAsInteger
Fori=1To10
Sum=Sum+i
Nexti
PrintSum
EndSub
程序5.请写出单击命令按钮后,窗体上的显示结果。
PrivateSubCommand1_Click()
DimsAsInteger,iAsInteger
s=1
i=1
DoWhilei<=4
s=s*i
i=i+1
Loop
Print"s=";s
EndSub
程序6.请写出单击命令按钮后,窗体上的显示结果。
PrivateSubCommand1_Click()
DimiAsInteger
DoUntili>=3
PrintTab(4*i+1);"A"
i=i+1
Loop
EndSub
三、程序填空题
1.【程序说明】下面是一段计算数学表达式的程序。
PrivateSubForm_Click()
DimnAsInteger,pAsInteger,sAsSigle,qAsInteger,iAsInteger
n=InputBox("请输入N的值:
")
s=0:
p=-1:
q=1
Fori=1Ton
p=-p:
q=
(1)
s=
(2)
(3)
Prints
EndSub
2.【程序说明】下列程序用于计算1+(1+3)+(1+3+5)+…+(1+3+5+…+39)。
PrivateSubForm_Click()
DimtAsInteger,mAsInteger
DimsumAsInteger
t=0
m=1
sum=0
Do
t=
(1)
sum=sum+t
(2)
LoopWhile(3)
Print"sum=";sum
EndSub
3.【程序说明】下列程序在文本框Text1中输入任一字符串,并按相反的顺序显示在文本框Text2中。
PrivateSubCommand1_Click()
DimnAsString,cAsString,dAsString
n=Text1.Text
m=
(1)
Fori=mTo1Step-1
c=Mid(n,i,1)
d=
(2)
Nexti
(3)
EndSub
四、程序设计题
1.用InputBox函数输入3个任意整数,按从大到小的顺序输出。
2.编程,输入x值,按下式计算并输出y值。
3.计算下式的和,变量x与n的数值用输入对话框输入。
4.用近似公式求自然对数的底数e的值,直到前后两项之差小于10-4为止。
习题四
一、选择题
1.窗体通用部分的语句“OptionBase1”,决定本窗体中数组下标界。
A、下界必须为1B、缺省的下界为1C、下界必须为0D、缺省的下界为0
2.用Dimc(2to5)AsInteger语句定义的数组占用个字节的内存空间。
A、4B、8C、6D、10
3.以下是VB合法的数组元素。
A、x9B、x[9]C、x(9)D、x{9}
4.设有数组声明语句:
Dima(2,3to4)AsInteger
以上语句所定义的数组a为维数组,共有个元素,第一维下标从到,第二维下标从到。
A、0B、1C、2D、3E、4F、5G、6H、9
二、程序阅读题(写出下列程序的运行结果)
程序1.在窗体中添加一个命令按钮,名称为Command1,然后编写如下程序:
PrivateSubCommand1_Click()
Dima(5)AsInteger,b(5)AsInteger
Forj=1to4
a(j)=3*j
b(j)=a(j)*3
Nextj
Text1.text=b(j\2)
EndSub
程序运行后,单击命令按钮,写出程序的运行结果。
程序2.在窗体中添加一个命令按钮(其Name属性为Command1),然后编写如下代码:
PrivateSubCommand1_Click()
Dima(10)AsInteger
Dimp(3)AsInteger
k=1
Fori=1To10
a(i)=i
Nexti
Fori=1To3
p(i)=a(i*2)
Nexti
Fori=1To3
k=k+p(i)*2
Nexti
Printk
EndSub
程序运行后,单击命令按钮,写出程序的运行结果。
程序3.请写出单击窗体后,窗体上的显示结果。
PrivateSubForm_Click()
Dima(5,5)AsByte,iAsByte,jAsByte
Fori=1To5:
Forj=1To5
a(i,j)=i*j
Nextj,i
Fori=1To5:
Printa(i,i);:
Nexti
EndSub
程序4.请写出单击窗体后,窗体上的显示结果。
PrivateSubForm_Click()
Dima(1To2,1To3)AsInteger,iAsInteger,jAsInteger
Fori=1To2
Forj=1To3
a(i,j)=i+j:
PrintTab(j*5+2);a(i,j),
Nextj
Print
Nexti
EndSub
三、程序填空题
1.【程序说明】以下程序产生30个两位随机整数、并按从小到大的顺序存入数组a中,再将其中的奇数按从小到大的顺序在窗体中用紧凑格式输出。
PrivateSubForm_Click()
Dima(30)Asbyte,iasByte,jAsByte,mAsByte
Fori=1To30:
a(i)=⑴:
Nexti
Fori=1To29
Forj=⑵
Ifa(i)>a(j)Then
m=a(i):
⑶:
a(j)=m
EndIf
Nextj,i
Fori=1To30
If⑷ThenPrinta(i);
Nexti
EndSub
2.【程序说明】以下程序产生20个两位随机整数存于数组之中,打印数组中大于50的数,并求出这些数的和。
PrivateSubCommand1_Click()
Dimarr(1To20)AsInteger
DimiAsInteger,sumAsInteger
Fori=1To20
arr(i)=⑴
Nexti
sum=0
Fori=1To20
If⑵Then
Printarr(i);
sum=⑶
EndIf
Nexti
PrintTab
(2);"sum=";sum
EndSub
3.【程序说明】下列程序用来在窗体上输出如图4-2所示大小可变的正方形数据。
Dima()AsInteger
PrivateSubForm_Click()
DimnAsInteger,iAsInteger
图4-2n为7时的输出图形
DimjAsInteger,kAsInteger
n=Val(InputBox("请输入数据:
"))
⑴
Fori=1To⑵
Forj=iTon-i+1
Fork=iTon-i+1
⑶
Nextk,j,i
Fori=1Ton
Forj=1Ton
PrintTab(j*3);a(i,j);
Nextj
⑷
Nexti
EndSub
四、程序设计题
1.设有a,b两矩阵,编程完成两个矩阵的相乘,结果存入c矩阵中。
2.编程产生10个[20,40]之间的随机整数存于一维数组a中,将a数组中的元素依次向后移动一个位置,最后一个元素移动到第一个元素的位置上。
3.用二分法对已排好序(升序)的数据进行检索。
说明:
二分查找法是对一批有序的数,取其中间元素,如果该元素是要找的数(key),输出该数的位置,否则,如果该元素大于key,则查找数列的范围缩小到该元素的前一个元素;如果该元素小于key,则查找数列的范围缩小为该元素的后一个元素到数列尾。
重复上述方法,直到查找的数列范围缩小到0个元素。
习题五
一、选择题
1.在过程调用中,参数的传递可以分为和两种方式。
A、按值传递B、按地址传递C、按参数传递D、按位置传递
2.在参数传递过程中,使用关键字来修饰参数,可以使之按值传递。
A、ByValB、ByRefC、ValueD、Reference
3.在窗体模块的通用声明段中声明变量时,不能使用关键字。
A、DimB、PublicC、PrivateD、Static
4.要想在过程调用后返回两个结果,下面的过程定义语句合法的是。
A、Subp(Byvaln,Byvalm)B、Subp(n,byvalm)
C、Subp(n,m)D、Subp(Byvaln,m)
5.Sub过程与Function过程最根本的区别是。
A、Sub过程可以使用Call语句或直接使用过程名调用,而Function过程不可以
B、Function过程可以有参数,Sub过程不可以
C、两种过程参数的传递方式不同
D、Sub过程的过程名不能返回值,而Function过程能通过过程名返回值
二、程序阅读题(写出下列程序的运行结果)
程序1.请写出三次单击命令按钮后,窗体上的显示结果。
PrivateSubp()
StaticsAsInteger
DimiAsInteger
Fori=1To10Step2
s=s+i
Nexti
Prints;
EndSub
PrivateSubCommand1_Click()
Callp
EndSub
程序2.请写出单击命令按钮后,窗体上的显示结果。
PrivateSubs(xAsSingle,yAsSingle)
DimmAsSingle
m=x
x=m/y
y=tMody
EndSub
PrivateSubCommand1_Click()
DimaAsSingle,bAsSingle
a=8
b=5
Calls(a,b)
Printa,b
EndSub
三、程序填空题
1.【程序说明】如果两个质数的差为2,就称这两个质数为质数对。
下列程序用于输出100以内的质数对。
PrivateFunctionp(mAsInteger)AsBoolean
DimiAsInteger
(1)
Fori=2ToSqr(m)
If
(2)Thenp=False:
ExitFor
Nexti
EndFunction
PrivateSubCommand1_Click()
DimiAsInteger
Dimp1AsBoolean,p2AsBoolean
p1=p(3)
Fori=5To99S