vb课后练习答案习题解答 5.docx
《vb课后练习答案习题解答 5.docx》由会员分享,可在线阅读,更多相关《vb课后练习答案习题解答 5.docx(14页珍藏版)》请在冰豆网上搜索。
![vb课后练习答案习题解答 5.docx](https://file1.bdocx.com/fileroot1/2022-11/27/6568e317-a124-4e72-8790-19a702f8b76a/6568e317-a124-4e72-8790-19a702f8b76a1.gif)
vb课后练习答案习题解答5
第5章数组与记录
5.1填空题
1.若要定义一个包含10个字符串元素,且下界为1的一维数组s,则数组说明语句为(。
答案:
Dims(1To10AsString
2.若要定义一个元素为整型数据的二维数组a,且第一维的下标从0到5,第二维下标从-3到6,则数组说明语句为(。
答案:
Dima(0To5,-3To6AsInteger
3.如果数组元素的下标值为实数,则VB系统会按(进行处理。
答案:
四舍五入原则
4.数组元素个数可以改变的数组称为(;数组元素可以存放不同类型数据的数组称为(。
答案:
可调数组、可变类型数组
5.数组刷新语句用于(。
若被刷新的数组是数值数组,则把所有元素置(;若被刷新的数组为字符串数组,则把所有元素置(。
答案:
清除指定数组内容、0、空字符串
10.控件数组是由一组类型和(相同的控件组成,共享(。
答案:
名字、同一个事件过程
11.控件数组中的每一个控件都有唯一的下标,下标值由(属性指定。
答案:
Index
12.建立控件数组有两种方法:
(和(。
答案:
在设计阶段通过相同Name属性值来建立、在程序代码中使用Load方法
5.2选择题
1.下列一维数组说明语句错误的是(。
aDimb(100ASDouble
bDimb(-5To0ASByte
cDimb(-10To–20ASInteger
dDimb(5To5ASString
答案:
c
2.若有数组说明语句为:
Dima(-3To8,则数组a包含元素的个数是(。
a5b8c11d12
答案:
d
3.设有数组说明语句:
Dimc(1To10,则下面表示数组c的元素选项中(是错误的。
ac(i-1bc(5+0.5cc(0dc(10
答案:
c
4.下列数组说明语句中正确的是(。
aDima(-1To5,8ASString
bDima(n,nASInteger
cDima(0To8,5To–1ASSingle
dDima(10,-10ASDouble
答案:
a
5.设有数组说明语句:
Dimb(-1To2,-2To2,则数组b中元素的个数是(。
a12b15c16d20
答案:
d
6.设有数组说明语句:
Dimc(-1To1,1To5,则下列表示数组c的元素选项中(是正确的。
ac(i+jbc(i(jcc(i+1,j-1dc(1,0
答案:
c
7.若有数组说明语句:
Dima(ASInteger,则a被定义为(。
a定长数组b可调数组c静态数组d可变类型数组
答案:
b
8.若有数组说明语句:
Dimt(1To10ASVariant,则t被定义为(。
a数值数组b可调数组c字符串数组d可变类型数组
答案:
d
9.下面选项中,错误的是(。
aDimsAsvariant:
s=Array("one","two","Three"
bDimb:
b=Array(1,2,3
cDimbAsInteger:
b=Array(1,2,3
dDimbAsvariant:
b=Array(1,2,3
答案:
c
10.若有以下说明语句
Typeemployee
numAsInteger
salaryAsSingle
EndType
DimprogrammerAsemployee
则下面表示记录变量programmer的成员Salary正确的是(。
aprogrammer→salaryb.salary
csalary.programmerdprogrammer.salary
答案:
d
11.已知有说明语句
Typedat
yearAsInteger
monthAsInteger
dayAsInteger
EndType
Typeemp
noAsInteger
nameAsString﹡10
sexAsString*1
birthdayAsdat
salaryAssingle
EndType
DimprogrammerAsemp
并假设变量programmer所表示职工的出生日期是“1978年10月1日”,则下列正确的赋值语句是(。
ayear=1978:
month=10:
day=1
bbirthday.Year=1978:
birthday.month=10:
birthday.day=1
cprogrammer.year=1978:
programmer.month=10:
programmer.day=1
dprogrammer.birthday.year=1978:
programmer.birthday.month=10:
programmer.birthday.day=1
答案:
d
12.假设有第11题的说明语句,则下列With语句正确的是(。
awithprogammer
no=1000:
name="张勇":
sex="男"
withbirthday
year=1978:
month=10:
day=1
Endwith
salary=2800
Endwith
bwithprogrammer
.no=1000:
.name="张勇":
.sex="男"
with.birthday
.year=1978:
.month=10:
.day=1
Endwith
.salary=2800
Endwith
cwithprogrammer
.no=1000:
.name="张勇":
.sex="男"
.birthday.year=1978:
.birthday.month=10:
.birthday.day=1
.salary=2800
Endwith
dwithprogrammer,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(10AsInteger
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
答案:
11
23
581321
345589
2.PrivateSubCommand1_Click(
Dims(1To6AsInteger
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(1To9AsInteger
Dimb(1To3,1To3AsInteger
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,1To5AsInteger,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
答案:
11111
21111
32111
43211
54321
5.5编程题
2.编一程序,使用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出该数组,然后求这组数中的最大值及最大值在数组中的位置。
解答:
(1界面设计和属性设置
在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3.5.2所示。
表3.5.2属性设置
(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(jThenGoTol
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属性设置
(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(jThen
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属性设置
(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-iThenf=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题的属性设置
最大值Command1Caption开始Command2Caption结束(2程序代码PrivateSubCommand1_Click(Dimi%,j%,m%,n%,sum!
ave!
max!
min!
Dima(AsSinglem=InputBox("请输入矩阵的行数:
"n=InputBox("请输入矩阵的列数:
"ReDima(1Tom,1TonPrintPrintTab(2;"输入的矩阵为:
"Fori=1TomPrintTab(15;Forj=1Tona(i,j=InputBox("输入第"&Str(i&"行"&"第"&Str(j&"列元素:
"Printa(i,j;NextjPrintNextisum=0Fori=1TomForj=1Tonsum=sum+a(i,j'求和NextjNextiave=sum/(m*nmax=a(1,1Fori=1TomForj=1TonIfa(i,j>maxThenmax=a(i,jNextjNextimin=a(1,1Fori=1TomForj=1TonIfa(i,j";avePrintTab(2;"最大值为:
";max'求最大值'求平均值
PrintTab(2;"最小值为:
";minEndSubPrivateSubCommand2_Click(EndEndSub(3)运行情况运行程序后,需多次调用InputBox函数。
在调用InputBox函数出现对话框时,输入矩阵的行数、矩阵的列数和数组元素的值。
例如,输入矩阵的行数3、矩阵的列数3和数组元素的值1、2、3、4、5、6、7、8、9。
执行结果如图3.5.6所示。
7.某城市三个百货公司某个季度销售电视机的情况和价格由如下表格表示,求各个百货公司的电视机营业额。
牌子公司第一百货商店第二百货商店第三百货商店康佳TCL长虹150200180300200280250240210牌子康佳TCL长虹解答:
(1界面设计和属性设置价格350033003800在窗体上建立两个命令按钮。
窗体和命令按钮的主要属性设置如表3.5.7所示。
表3.5.7控件名称属性设置属性值属性名
Form1Command1Command2CaptionCaptionCaption计算电视机销售额开始结束(2程序代码OptionExplicitPrivateSubCommand1_Click(ClsDimi%,j%,sum!
Dima%(1To3,1To3,p!
(3PrintTab(23;"各百货公司的销售量"PrintTab(20;"康佳";Tab(30;"TCL";Tab(40;"长虹"Fori=1To3PrintTab(5;"第"&Str(i&"百货公司";Forj=1To3a(i,j=InputBox("输入第"&Str(i&"百货公司"&"第"&Str(j&"种牌子销售量:
"PrintTab(j*10+10;a(i,j;NextjPrintNextiPrintTab(25;"各种牌子价格"PrintTab(20;"康佳";Tab(30;"TCL";Tab(40;"长虹"Fori=1To3p(i=InputBox("输入第"&Str(i&"种牌号价格:
"PrintTab(i*10+10;p(i;NextiPrint:
PrintFori=1To3sum=0Forj=1To3sum=sum+a(i,j*p(jNextjPrintTab(10;"第"&Str(i&"百货公司的销售额为:
";sum;"元"
NextiEndSubPrivateSubCommand2_Click(EndEndSub(3运行情况运行程序后,屏幕出现用户界面。
单击标题为“开始”的命令按钮,系统执行相应的Click事件过程。
在执行的过程中,需多次调用InputBox函数。
在调用InputBox函数出现对话框时,按表格中的数据输入每个百货公司销售电视机的数量和各种牌子的价格。
执行结果如图3.5.7所示。
单击标题为“结束”的命令按钮,结束程序的执行。
图3.5.7执行结果