vb课后练习答案习题解答.docx
《vb课后练习答案习题解答.docx》由会员分享,可在线阅读,更多相关《vb课后练习答案习题解答.docx(21页珍藏版)》请在冰点文库上搜索。
vb课后练习答案习题解答
第5章数组与记录
5.1填空题
1.若要定义一个包含10个字符串元素,且下界为1的一维数组s,则数组说明语句为()。
答案:
Dims(1To10)AsString
2.若要定义一个元素为整型数据的二维数组a,且第一维的下标从0到5,第二维下标从-3到6,则数组说明语句为()。
答案:
Dima(0To5,-3To6)AsInteger
3.如果数组元素的下标值为实数,则VB系统会按()进行处理。
答案:
四舍五入原则
4.数组元素个数可以改变的数组称为( );数组元素可以存放不同类型数据的数组称为( )。
答案:
可调数组、可变类型数组
5.数组刷新语句用于( )。
若被刷新的数组是数值数组,则把所有元素置( );若被刷新的数组为字符串数组,则把所有元素置( )。
答案:
清除指定数组内容、0、空字符串
10.控件数组是由一组类型和( )相同的控件组成,共享()。
答案:
名字、同一个事件过程
11.控件数组中的每一个控件都有唯一的下标,下标值由()属性指定。
答案:
Index
12.建立控件数组有两种方法:
()和()。
答案:
在设计阶段通过相同Name属性值来建立、在程序代码中使用Load方法
5.2选择题
1.下列一维数组说明语句错误的是()。
a)Dimb(100)ASDouble
b)Dimb(-5To0)ASByte
c)Dimb(-10To–20)ASInteger
d)Dimb(5To5)ASString
答案:
c
2.若有数组说明语句为:
Dima(-3To8),则数组a包含元素的个数是()。
a)5b)8c)11d)12
答案:
d
3.设有数组说明语句:
Dim c(1To10),则下面表示数组c的元素选项中( )是错误的。
a)c(i-1)b)c(5+c)c(0)d)c(10)
答案:
c
4.下列数组说明语句中正确的是()。
a)Dima(-1To5,8)ASString
b)Dima(n,n)ASInteger
c)Dima(0To8,5To–1)ASSingle
d)Dima(10,-10)ASDouble
答案:
a
5.设有数组说明语句:
Dim b(-1To2,-2To2),则数组b中元素的个数是( )。
a)12b)15c)16d)20
答案:
d
6.设有数组说明语句:
Dim c(-1To1,1To5),则下列表示数组c的元素选项中( )是正确的。
a)c(i+j)b)c(i)(j)c)c(i+1,j-1)d)c(1,0)
答案:
c
7.若有数组说明语句:
Dima()ASInteger,则a被定义为( )。
a)定长数组b)可调数组c)静态数组d)可变类型数组
答案:
b
8.若有数组说明语句:
Dimt(1To10)ASVariant,则t被定义为( )。
a)数值数组b)可调数组c)字符串数组d)可变类型数组
答案:
d
9.下面选项中,错误的是()。
a)DimsAsvariant:
s=Array("one","two","Three")
b)Dimb:
b=Array(1,2,3)
c)DimbAsInteger:
b=Array(1,2,3)
d)DimbAsvariant:
b=Array(1,2,3)
答案:
c
10.若有以下说明语句
Typeemployee
numAsInteger
salaryAsSingle
EndType
DimprogrammerAsemployee
则下面表示记录变量programmer的成员Salary正确的是( )。
a)programmer→salaryb).salary
c)d)
答案:
d
11.已知有说明语句
Typedat
yearAsInteger
monthAsInteger
dayAsInteger
EndType
Typeemp
noAsInteger
nameAsString﹡10
sexAsString*1
birthdayAsdat
salaryAssingle
EndType
DimprogrammerAsemp
并假设变量programmer所表示职工的出生日期是“1978年10月1日”,则下列正确的赋值语句是()。
a)year=1978:
month=10:
day=1
b)=1978:
=10:
=1
c)=1978:
=10:
=1
d):
:
答案:
d
12.假设有第11题的说明语句,则下列With语句正确的是()。
a)withprogammer
no=1000:
name="张勇":
sex="男"
withbirthday
year=1978:
month=10:
day=1
Endwith
salary=2800
Endwith
b)withprogrammer
.no=1000:
.name="张勇":
.sex="男"
with.birthday
.year=1978:
.month=10:
.day=1
Endwith
.salary=2800
Endwith
c)withprogrammer
.no=1000:
.name="张勇":
.sex="男"
.=1978:
.=10:
.=1
.salary=2800
Endwith
d)withprogrammer,birthday
.no=1000:
.name="张勇":
.sex="男"
.year=1978:
month.=10:
day.=1
.salary=2800
Endwith
答案:
c
5.3解答题
1.使用关键字Dim,ReDim和Static定义的数组分别称为什么数组?
它们各有什么特点?
答:
使用关键字Dim说明的数组称为定长数组。
说明定长数组时,应同时确定维数和下标范围。
VB编译程序在编译时为定长数组分配相应的内存区域,并且在应用程序运行期间,定长数组都占有这块内存区域。
使用关键字ReDim说明的数组称为可调数组或动态数组。
若在程序运行前,不能确定数组的大小或在程序运行时需要改变数组的大小,则该数组应定义为可调数组。
在应用程序运行期间,可调数组占用的内存区域可能会改变。
使用Static说明的数组称为静态数组。
在整个应用程序运行期间,系统分配固定内存区域。
定义该数组的过程执行结束时,数组的值仍保留,该过程再次被调用时,数组的值为上次过程调用结束时的值。
而定长数组和可调数组则不然,定义它们的过程执行结束时,它们的值不保留。
5.4阅读程序,并写出执行结果
1.PrivateSubCommand1_Click()
Dimf(10)AsInteger
f(0)=1:
f
(1)=1
Fori=2To10
f(i)=f(i-2)+f(i-1)
Nexti
Fori=0To10
IfiMod4=0ThenPrint
Printf(i),
Nexti
EndSub
答案:
1123
581321
345589
2.PrivateSubCommand1_Click()
Dims(1To6)AsInteger
Fori=1To6
s(i)=i
Nexti
Fori=1To3
Forj=4To6
t=s(i):
s(i)=s(j):
s(j)=t
Nextj
Nexti
Fori=1To6
Prints(i);
Nexti
EndSub
答案:
654321
3.PrivateSubCommand1_Click()
Dima(1To9)AsInteger
Dimb(1To3,1To3)AsInteger
Dimi%,j%
Fori=1To9
a(i)=i
Nexti
Fori=1To3
Forj=1To3
b(i,j)=a(i*j)
Ifj<=iThenPrintb(i,j),
Nextj
Print
Nexti
EndSub
答案:
1
24
369
4.PrivateSubCommand1_Click()
Dima(1To5,1To5)AsInteger,i%,j%
Fori=1To5
Forj=1To5
Ifi<=jThena(i,j)=1Elsea(i,j)=i-j+1
Nextj
Nexti
Fori=1To5
Forj=1To5
Printa(i,j);
Nextj
Print
Nexti
EndSub
答案:
1 1 1 1 1
2 1 1 1 1
3 2 1 1 1
4 3 2 1 1
5 4 3 2 1
5.5编程题
2.编一程序,使用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出该数组,然后求这组数中的最大值及最大值在数组中的位置。
解答:
(1)界面设计和属性设置
在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3.5.2所示。
表3.5.2属性设置
控件名称
属性名
属性值
Form1
Caption
求两两不相同随机数最大值及其位置
Command1
Caption
开始
Command2
Caption
结束
(2)程序代码
PrivateSubCommand1_Click()
Cls
Dima(1To10),i%,j%,max%,p%
Randomize
Fori=1To10
l:
a(i)=Int((90*Rnd+10))
Forj=1Toi-1
Ifa(i)=a(j)ThenGoTol
Nextj
Nexti
Print:
Print
PrintTab(15);"产生的随机数为:
"
Print
Fori=1To10
Print"a(";i;")=";a(i),
IfiMod4=0ThenPrint
Nexti
max=a
(1):
p=1
Fori=2To10
Ifa(i)>maxThenmax=a(i):
p=i
Nexti
Print:
Print
PrintTab(15);"最大值为:
";max
PrintTab(10),"最大值所在数组元素的下标为:
";p
EndSub
PrivateSubCommand2_Click()
End
EndSub
(3)运行情况
运行程序后,屏幕出现用户界面。
单击标题为“开始”的命令按钮,系统执行相应的Click事件过程。
执行结果如图3.5.2所示。
单击标题为“结束”的命令按钮,结束程序的执行。
图3.5.2执行结果
4.给定两组已按升序排列好的整型数据,编写一个程序把它们合并为一组仍按升序排列的数据。
解答:
(1)界面设计和属性设置
在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3.5.4所示。
表3.5.4属性设置
控件名称
属性名
属性值
Form1
Caption
把两个升序数组合并为一个升序数组
Command1
Caption
合并
Command2
Caption
结束
(2)程序代码
DimaAsVariant,bAsVariant,c%(0To11)
PrivateSubForm_Activate()
Dimi%
a=Array(1,2,7,8)
Print:
Print:
Print
PrintTab(5);"第一个升序数组:
";
Fori=0To3
Printa(i);
Nexti
Print:
Print
b=Array(3,4,8,8,9,10,12,12)
PrintTab(5);"第二个升序数组:
";
Fori=0To7
Printb(i);
Nexti
EndSub
PrivateSubCommand1_Click()
Dimi%,j%,k%
i=0:
j=0:
k=0
Whilei<4Andj<8
Ifa(i)>b(j)Then
c(k)=b(j):
k=k+1:
j=j+1'比较a和b中的元素,把较大的元素移到
Else'c中,直到其中一个数组搬空为止
c(k)=a(i):
k=k+1:
i=i+1
EndIf
Wend
Whilei<4
c(k)=a(i):
i=i+1:
k=k+1'把a中剩余的元素搬到c中
Wend
Whilej<8
c(k)=b(j):
j=j+1:
k=k+1'把b中剩余的元素搬到c中
Wend
Print:
Print
PrintTab(5);"合并后的升序数组:
"
PrintTab(8);
Fori=0To11
Printc(i);
Nexti
EndSub
PrivateSubCommand2_Click()
End
EndSub
(3)运行情况
运行程序后,系统执行Form_Activate事件过程,屏幕出现用户界面,并显示两个升序数组。
单击标题为“合并”的命令按钮,系统执行相应的Click事件过程。
执行结果如图3.5.4所示。
单击标题为“结束”的命令按钮,结束程序的执行。
图3.5.4执行结果
5.从键盘上输入一个正整数,判别它是否为回文数。
所谓回文数是指正读和反读都一样的数。
例如,123321是回文数。
解答:
(1)界面设计和属性设置
在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3.5.5所示。
表3.5.5属性设置
控件名称
属性名
属性值
Form1
Caption
判别一个整数是否为回文数
Command1
Caption
开始
Command2
Caption
结束
(2)程序代码
PrivateSubCommand1_Click()
Cls
DimnumAsLong,nAsLong,i%,k%,f%,b%(10)
num=InputBox("请输入一个整数:
")
k=0:
n=num
Do
b(k)=nMod10'把num的各位数字存入数组b中
k=k+1
n=n\10
LoopWhilen<>0
f=1
Fori=0To(k-1)/2
Ifb(i)<>b(k-1-i)Thenf=0'num的第i位与第k-1-i位数字不相同时f置0
Nexti'说明num不是回文数
Print:
Print:
Print:
Print
IffThen
PrintTab(18);num;"是回文数!
"
Else
PrintTab(16);num;"不是回文数!
"
EndIf
EndSub
PrivateSubCommand2_Click()
End
EndSub
(3)运行情况
运行程序后,屏幕出现用户界面。
单击标题为“开始”的命令按钮,系统执行相应的Click事件过程。
在调用InputBox函数出现对话框时,输入一个整数,例如,1234321。
执行结果如图3.5.5所示。
单击标题为“结束”的命令按钮,结束程序的执行。
图3.5.5执行结果
6.编一程序,把一个m行n列矩阵中的元素存放到一个二维数组中,并求出该数组的平均值、最大值和最小值。
解答:
(1)界面设计和属性设置
在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3-5-6所示。
表3-5-6第6题的属性设置
控件名称
属性名
属性值
Form1
Caption
求矩阵的平均值、最小值和最大值
Command1
Caption
开始
Command2
Caption
结束
(2)程序代码
PrivateSubCommand1_Click()
Dimi%,j%,m%,n%,sum!
ave!
max!
min!
Dima()AsSingle
m=InputBox("请输入矩阵的行数:
")
n=InputBox("请输入矩阵的列数:
")
ReDima(1Tom,1Ton)
Print
PrintTab
(2);"输入的矩阵为:
"
Fori=1Tom
PrintTab(15);
Forj=1Ton
a(i,j)=InputBox("输入第"&Str(i)&"行"&"第"&Str(j)&"列元素:
")
Printa(i,j);
Nextj
Print
Nexti
sum=0
Fori=1Tom
Forj=1Ton
sum=sum+a(i,j)'求和
Nextj
Nexti
ave=sum/(m*n)'求平均值
max=a(1,1)
Fori=1Tom
Forj=1Ton
Ifa(i,j)>maxThenmax=a(i,j)'求最大值
Nextj
Nexti
min=a(1,1)
Fori=1Tom
Forj=1Ton
Ifa(i,j)Nextj
Nexti
Print
PrintTab
(2);"平均值为:
";ave
PrintTab
(2);"最大值为:
";max
PrintTab
(2);"最小值为:
";min
EndSub
PrivateSubCommand2_Click()
End
EndSub
(3)运行情况
运行程序后,需多次调用InputBox函数。
在调用InputBox函数出现对话框时,输入矩阵的行数、矩阵的列数和数组元素的值。
例如,输入矩阵的行数3、矩阵的列数3和数组元素的值1、2、3、4、5、6、7、8、9。
执行结果如图所示。
7.某城市三个百货公司某个季度销售电视机的情况和价格由如下表格表示,求各个百货公司的电视机营业额。
牌子
公司
康佳
TCL
长虹
第一百货商店
300
250
150
第二百货商店
200
240
200
第三百货商店
280
210
180
牌子
价格
康佳
3500
TCL
3300
长虹
3800
解答:
(1)界面设计和属性设置
在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3.5.7所示。
表3.5.7属性设置
控件名称
属性名
属性值
Form1
Caption
计算电视机销售额
Command1
Caption
开始
Command2
Caption
结束
(2)程序代码
OptionExplicit
PrivateSubCommand1_Click()
Cls
Dimi%,j%,sum!
Dima%(1To3,1To3),p!
(3)
PrintTab(23);"各百货公司的销售量"
PrintTab(20);"康佳";Tab(30);"TCL";Tab(40);"长虹"
Fori=1To3
PrintTab(5);"第"&Str(i)&"百货公司";
Forj=1To3
a(i,j)=InputBox("输入第"&Str(i)&"百货公司"&"第"&Str(j)&"种牌子销售量:
")
PrintTab(j*10+10);a(i,j);
Nextj
Print
Nexti
PrintTab(25);"各种牌子价格"
PrintTab(20);"康佳";Tab(30);"TCL";Tab(40);"长虹"
Fori=1To3
p(i)=InputBox("输入第"&Str(i)&"种牌号价格:
")
PrintTab(i*10+10);p(i);
Nexti
Print:
Print
Fori=1To3
sum=0
Forj=1To3
sum=sum+a(i,j)*p(j)
Nextj
PrintTab(10);"第"&Str(i)&"百货公司的销售额为:
";sum;"元"
Nexti
EndSub
PrivateSubCommand2_Click()
End
EndSub
(3)运行情况
运行程序后,屏幕出现用户界面。
单击标题为“开始”的命令按钮,系统执行相应的Click事件过程。
在执行的过程中,需多次调用InputBox函数。
在调用InputBox函数出现对话框时,按表格中的数据输入每个百货公司销售电视机的数量和各种牌子的价格。
执行结果如图3.5.7所示。
单击标题为“结束”的命令按钮,结束程序的执行。
图3.5.7执行结果