VB习题一六Word格式.docx
《VB习题一六Word格式.docx》由会员分享,可在线阅读,更多相关《VB习题一六Word格式.docx(23页珍藏版)》请在冰点文库上搜索。
![VB习题一六Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/5fd5b5e9-42a4-4c16-9bc5-54d86b548ab5/5fd5b5e9-42a4-4c16-9bc5-54d86b548ab51.gif)
【答】标签和文本框都可以在窗体上显示文字。
区别在于:
标签的内容在Caption属性内,在窗体上只能显示文字,不能编辑;
文本框的内容在Text属性内,在窗体上可直接对其内容进行编辑。
10.当窗体上有3个文本框和1个命令按钮,若程序运行时,要求焦点定位在第三个文本框(Text3)处,应对何控件的什么属性进行何种设置?
【答】对Text3控件进行Text3.TabIndex=0的设置。
11.若要对窗体上的3个文本框输入数据,各控件焦点的移动可通过Tab键(系统本身具有的),也可以通过回车键,则要对文本框的什么事件编程?
【答】对文本框的KeyPress事件编程。
例如,当焦点在Text1时,输入数据按Enter键后,让焦点跳到Text2文本框。
程序如下:
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Text2.SetFocus
……
EndIf
EndSub
12.当某文本框输入数据后(按了回车键),进行判断认为数据输入错,怎样删除原来数据?
怎样使焦点回到该文本框重新输入?
【答】假定文本框的名称为Text1,则事件过程如下:
If出错条件判断成立Then
Text1=””
Text1.SetFocus
EndIf
13.当运行程序前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一般放在什么事件中?
例如,程序要将命令按钮定位在窗体的中央,请写出事件过程。
【答】这些代码一般放在Form_Load()事件过程中。
将窗体定位在屏幕的中央,只能通过属性窗口对Form1窗口的StartUpPosition属性设置为2(表示屏幕中心),该属性不能放在运行时设置。
要将按钮定位在窗体的中央,事件过程如下:
PrivateSubForm_Load()
Command1.Left=Form1.ScaleWidth\2–Command1.Width\2
Command1.Top=Form1.ScaleHeight\2–Command1.Height\2
其中,ScaleWidth和ScaleHeight表示窗体的相对宽度和高度。
习题三
1.说明下列哪些是VB合法的直接常量,分别指出它们是什么类型。
【答】⑴100.0(单)⑵%100(非)⑶1E1(单)
⑷123D3(双)⑸123,456(非)⑹0100(整)
⑺”ASDF”(字)⑻“1234”(字)⑼#2000/10/7#(日)
⑽100#(双)⑾π(非)⑿&
O100(八)
⒀&
O78(非)⒁&
H123(十六)⒂True(逻)
⒃T(非)⒄&
H12ag(非)⒅-1123!
(单)
2.下列符号中,哪些是VB合法的变量名?
【答】⑴a123(合)⑵a12_3(合)⑶123_a(非)
⑷a123(非)⑸Integer(非)⑹XYZ(合)
⑺False(非)⑻sin(x)(非)⑼sinx(合)
⑽变量名(合)⑾abcdefg(合)⑿π(合)
3.把下列算术表达式写成VB表达式。
【答】⑴
表达式为:
Abs(x+y)+z^5
⑵
(1+x*y)^6
⑶
(10*x+sqr(3*y))/x/y
⑷
(-b+sqr(b*b–4*a*c))/(2*a)
⑸
1/(1/r1+1/r2+1/r3)
⑹
sin(45*3.14/180)+(Exp(10)+Log(10))/Sqr(x+y+1)
4.根据条件写一个VB表达式:
⑴产生一个C~L范围内的大写字母。
⑵产生一个100~200(包括100和200)范围内的正整数。
⑶已知直角坐标系中任意一个点(x,y),表示在第一或第三象限内。
⑷表示x是5或7的倍数。
⑸将任意一个两位数x的个位数与十位数对换。
例如,x=78,则表达式的值应为87。
⑹将变量x的值按四舍五入保留小数点后两位。
例如,x的值为123.2389,表达式的值为123.24。
⑺表示字符变量c是字母字符(大小写不区分)。
⑻取字符变量s中,第5个字符起的6个字符。
⑼表示10≤x<20的关系表达式。
⑽x,y中有一个小于z。
⑾x,y都大于z。
【答】⑴Chr(Int(Rnd*10+67))
⑵Int(Rnd*101+100)
⑶x*y>
0
⑷xmod5=0orxmod7=0
⑸(xmod10)*10+x\10
⑹Round(x*100)/100或Round(x,2)
⑺Ucase(c)>
="
A"
andUcase(c)<
Z"
orLcase(c)>
a"
andLcase(c)<
z"
⑻Mid(s,5,6)
⑼x>
=10andx<
20
⑽x<
zory<
z
⑾x>
zandy>
5.写出下列表达式的值:
【答】⑴123+23mod10\7+Asc("
)值为:
188
⑵100+"
100"
&
100值为:
"
200100"
⑶Int(68.555*100+0.5)/100值为:
68.56
⑷已知A$="
87654321"
,则表达式:
Val(Left$(A$,4)+Mid$(A$,4,2))值为:
876554
⑸DateAdd("
m"
1,#1/30/2000#)值为:
#2/29/2000#
⑹Len("
VB程序设计"
6
6.利用Shell()函数,在VB程序中分别执行画图和Word应用程序。
【答】调用Shell()函数,形式为:
Shell(”C:
\ProgramFiles\Accessories\Mspaint.exe”,1)
\ProgramFiles\MicroSoftOffice\Winword.exe”,1)
7.VisualBasic提供了哪些标准数据类型?
声明类型时,其类型关键字分别是什么?
其类型符又是什么?
【答】见教材P53表1.3.1。
8.哪种数据类型所需内存容量最少,且可存储例如3.2345这样的值?
【答】单精度。
9.将数字字符串转换成数值,用什么函数?
判断是否是数字字符串,用什么函数?
取字符串中的某几个字符,用什么函数?
大小写字母间的转换,用什么函数?
【答】将数字字符串转换成数值,用Val函数;
用IsNumeric()函数可判断是否是数字字符串;
用Mid()函数取字符串中的某几个字符;
用Ucase()函数将小写字母转换成大字母;
用Lcase()函数将大写字母转换成小字母。
10.要使单精度变量x、y、z分别保留1位、2位、3位小数位,并在窗体显示,使用什么函数?
如何写对应的Print方法?
【答】使用Format()函数,
显示1位小数位:
PrintFormat(x,”0.0”)。
显示2位小数位:
PrintFormat(y,”0.00”)。
显示3位小数位:
PrintFormat(z,”0.000”)。
习题四
1.指出下列赋值语句中的错误(包括运行时要产生的错误)。
⑴10x=Sin(x)+y
⑵c=3+sqr(-3)
⑶c+x+y=c*y
⑷x=Sin(x)/(20Mod2)
【答】⑴“10x”是一个非法的变量名。
⑵用负数开平方。
⑶左边为表达式。
⑷分母为零。
2.MsgBox作为函数使用时与InputBox的区别?
各自获得的是什么值?
【答】MsgBox返回所按按钮对应的值,InputBox返回文本框输入的值。
3.语句:
If表达式Then…
中的表达式可以是算术、字符、关系、逻辑表达式中的哪些?
【答】可以是算术、关系、逻辑表达式。
4.指出下列语句中的错误。
⑴Ifx≥yThenprintx
⑵If10<
x<
20Thenx=x+20
⑶Ifc>
andc<
Then
Print"
大写字母"
ElseIfc>
小写字母"
EndIf
【答】⑴“≥”应写成“>
=”。
⑵VB中表示x的范围“10<
x<
20”应写成“x>
10Andx<
20”
⑶“ElseIf”之间不能有空格,应写成“ElseIf”。
5.按照条件,写出相应的条件语句
⑴当C字符变量中第3个字符是“C”时,利用MsgBox显示“Yes”,否则显示“No”。
⑵利用If语句、SelectCase语句两种方法计算分段函数:
⑶利用If语句和Iif函数两种方法求3个数x、y、z中最大值,并将其放入Max变量中。
【答】⑴IfMid(C,3,1)=“C“ThenMsgBox“Yes“ElseMsgBox“No“
⑵方法一:
PrivateSubCommand1_Click()
x=Text1.Text
Ifx>
20Then
y=x*x+3*x+2
ElseIfx<
10Then
y=1/x+Abs(x)
Else
y=Sqr(3*x)-2
Printy
EndSub
方法二:
PrivateSubCommand2_Click()
SelectCasex
CaseIs>
y=x*x+3*x+2
CaseIs<
10
y=1/x+Abs(x)
CaseElse
EndSelect
⑶利用If语句:
Ifx>
yThenMax=xElseMax=y
Ifz>
MaxThenMax=z
利用IIf函数:
Max=Iif(x>
y,x,y)
Max=Iif(Max>
z,Max,z)
6.计算下列循环语句的次数:
⑴ForI=-3To20Step4
⑵ForI=-3.5To5.5Step0.5
⑶ForI=-3.5To5.5Step–0.5
⑷ForI=-3To20Step0
【答】⑴循环6次、循环体内I的值分别为:
-3,1,5,9,13,17、出循环后I的值为21。
⑵循环19次。
⑶不循环。
⑷循环无数次,无法终止。
7.下列30~90为语句标号,分别标记该语句,第40句共执行了几次?
第50句共执行了几次?
第90句语句显示的结果是多少?
30ForJ=1To12Step3
40ForK=6To2Step-2
50Mk=K
60PrintJ,K
70NextK
80NextJ
90PrintJ,K,Mk
【答】第40句是外循环的循环体,共执行了4次;
第50句是内循环的循环体,共执行了12次;
第90句语句显示的结果是:
1302。
8.如果事先不知道循环次数,如何用For…Next结构来实现?
【答】将循环终值设置为一个非常大的值,然后在循环体内增加If语句,判断是否满足循环结束条件。
形式如下:
For循环变量=1To非常大的数
……
If循环结束条件ThenExitFor
Next循环变量
9.利用循环结构,实现如下功能:
⑴
⑵分别统计1~100中,满足3的倍数、7的倍数的数各为多少个?
⑶将输入的字符串,以反序显示。
例如输入“ASDFGHJKL”,显示“LKJHGFDSA”。
【答】⑴S=0
ForI=1To10
S=S+(I+1)*(2*I+1)
NextI
⑵S3=0
S7=0
ForI=1To100
IfIMod3=0ThenS3=S3+1
IfIMod7=0ThenS7=S7+1
⑶S=InputBox(“请输入字符串:
”)
ForI=Len(S)To1Step-1
PrintMid(S,I,1);
10.下面程序运行后的结果是什么?
该程序的功能是什么?
PrivateSubCommand1_Click()
Dimx$,n%
n=20
x="
DoWhilen<
>
a=nMod2
n=n\2
x=Chr(48+a)&
x
Loop
Printx
【答】运行后结果为10100,该程序的功能是将十进制数转换成二进制字符串。
11.下面程序运行后的结果是什么?
Dimx%,y%,z%
x=242:
y=44
z=x*y
DoUntilx=y
yThenx=x-yElsey=y-x
Printx,z/x
【答】运行后结果为22和484,该程序的功能是用辗转相减法求x、y的最大公约数和最小公倍数。
12.利用随机函数产生20个50~100范围内的随机数,显示它们的最大值、最小值和平均值。
【答】PrivateSubCommand1_Click()
Max=50
Min=100
Sum=0
Fori=1To20
x=Int(Rnd*51+50)
Printx;
Ifx>
MaxThenMax=x
Ifx<
MinThenMin=x
Sum=Sum+x
Nexti
Print
Print"
最大值="
;
Max
最小值="
Min
平均值="
Sum/20
习题五
1.要分配存放12个元素的整型数组,下列数组声明(若无下界,则按默认规定)哪些符合要求?
⑴n=12⑵Dima%()
Dima(1Ton)AsIntegern=11
ReDima(n)
⑶Dima%[2,3]⑷Dima(1,1,2)AsInteger
⑸Dima%(10)⑹Dima!
()
ReDima(1To12)ReDima(3,2)AsInteger
⑺Dima%(2,3)⑻Dima(1To3,1To4)AsInteger
【答】⑵、⑷、⑺和⑻符合要求。
2.已知下面的数组声明,写出它的数组名、数组类型、维数、各维的上、下界、数组的大小,并按行的顺序列出各元素。
Dima(-1To2,3)AsSingle
【答】数组名为a、数组类型为单精度、二维、各维的下界分别为-1和0、上界分别为2和3、数组的大小为4×
4共16个元素,各元素排列顺序为:
3.静态数组和动态数组的区别是什么?
在声明静态数组、重定义动态数组时的下标都可以用变量来表示吗?
【答】静态数组在声明数组时的下标必须是常数,以后不能改变其大小;
动态数组在Dim声明时不要声明数组的大小,在以后的程序中可以用ReDim语句重新声明数组的大小,ReDim语句中的下标可以出现赋了值的变量。
4.已声明了静态数组a(3,4),能否在下面再用重定义动态数组a(4,4)来重定义a数组的大小?
【答】已声明了的静态数组,不能再用重定义语句来重新定义静态数组的大小。
5.使用ReDim语句可以改变数组类型吗?
【答】不能。
可以反复地使用ReDim语句改变数组元素的数目以及数组的维数,但不能将一个已定义为某种数据类型的数组,使用ReDim语句改为其他数据类型。
6.在ReDim语句中加了Preserve关键字,对重定义数组有何限制?
【答】这时,只能重定义数组最后一维的大小,且不能改变数组的维数。
例如以下语句:
Dima()
ReDima(3,4)
ReDimPreservea(4,5)
当程序执行到第3句时,显示“下标越界”的出错信息,即只能改变第二个下标的大小,而不能改变第一个下标的大小。
7.利用随机数生成两个矩阵(数据不一定相同,前者范围为30~70、后者为101~135)
要求:
⑴将两个矩阵相加,结果放入C矩阵中。
⑵将A矩阵转置。
⑶求C矩阵中元素的最大值和下标。
⑷以下三角形式显示A矩阵、上三角形式显示B矩阵。
⑸将A矩阵第1行与第3行对应元素交换位置,即第1行元素放到第3行、第3行元素放到第1行。
⑹求矩阵A两条对角线元素之和。
⑺将A矩阵按列的次序把各元素放入一维数组D中,显示结果。
習題五5【答】假定在通用声明段对数组的声明如下:
Dima%(1To4,1To4)
Dimb%(1To4,1To4)
Dimc%(1To4,1To4)
在Form_Load事件过程中对数组a、b根据要求随机生成数值;
根据各小题的要求,在各事件过程中分别编写代码。
⑴两个矩阵能相加的条件是它们的行数、列数相同,利用两重循环将它们的元素逐一相加即可。
程序段如下:
Fori=1To4‘本例行数为4
Forj=1To4‘本例列数为4
c(i,j)=a(i,j)+b(i,j)
Nextj
Nexti
⑵矩阵转置是将矩阵的行变为列、列变为行。
通过两重循环实现,程序段如下:
Fori=1
(2)To4
Forj=1Toi-1
t=a(i,j)
a(i,j)=a(j,i)
a(j,i)=t
⑶因为c是两维数组,所以最大值的下标有两个:
行下标、列下标。
DimMax%,Maxi%,Maxj%
Max=c(1,1):
Maxi=1:
Maxj=1
Fori=1To4
Forj=1To4