vb课后习题答案.docx
《vb课后习题答案.docx》由会员分享,可在线阅读,更多相关《vb课后习题答案.docx(44页珍藏版)》请在冰豆网上搜索。
vb课后习题答案
第八章
1、动态数组的定义
Dimthis()AsString'在窗体层定义一个数组this
PrivateSubCommand1_Click()
ReDimthis(4)'动态数组的定义,注意数据类型要匹配
this
(2)="microsoft"'不能改变维数和类型
Printthis
(2)
ReDimthis(6)
this(5)="visualbasic"
Printthis(5)
EndSub
2、数组元素的输出
Dimstuname()AsString'定义一个数组stuname,类型为字符串
PrivateSubCommand2_Click()
ReDimstuname(4)AsString'重新定义数组,维数为4,类型为字符串
Fori=1To4
temp$=InputBox("entername")'从一开始循环,输入一个名字赋一个值
stuname(i)=temp$
Print"stuname(";i;")=";stuname(i)'在循环体中输出,i的左右加分号
Nexti'输入四个名字
EndSub
PrivateSubForm_Load()
FontSize=50
EndSub
3、多位数组元素的输出
PrivateSubCommand3_Click()
Dima(3,5)AsInteger'定义一个二维数组
Fori=1To3'控制第一维的循环变量放在最最外层循环
Forj=1To5
a(i,j)=i*j'下行中i、j必须用引号,注意是二维的
Print"a(";i;",";j;")=";a(i,j)'print放在循环体中
Nextj
Nexti
EndSub
4、数组元素的输出
OptionBase1‘下标从1开始
PrivateSubCommand1_Click()
Dima(4,4)AsInteger
Fori=1To4
Forj=1To4
a(i,j)=InputBox("enterdata")'放在循环体中
Printa(i,j);
Nextj
Nexti
EndSub
5、数组元素的复制
OptionBase1
Dimname1(),name2()'中间必须加逗号,定义空维数组,为万能类型
PrivateSubCommand2_Click()
ReDimname1(10),name2(10)'重新定义,是一维数组
Fori=1To10
msg$=InputBox$("entername")'name1(i)=InputBox$("entername")
name1(i)=msg$'跟上述语句是一样的效果,只是带换了一下
Printname1(i);"";'放在循环体中
Nexti
Print'换行,不能放在循环体中
Fori=1To10
name2(i)=name1(i)'把数组一的值赋给数组二,必须用循环体复制
Printname2(i);"";'输出
Nexti
EndSub
PrivateSubForm_Load()
FontSize=50'不能放在窗体层
EndSub
6、输出数组的上下界
PrivateSubCommand1_Click()
Dima(1To10,1To100,1To1000)
PrintLBound(a,1);UBound(a,1)'lboundandubound分别表示定义的变量的下界和上界
PrintLBound(a,2);UBound(a,2)
PrintLBound(a,3);UBound(a,3)
EndSub
7、定义默认数组
PrivateSubCommand2_Click()
Statica(5)
a
(1)=100
a
(2)=123.23
a(3)="zhanghaie"
a(4)="20"&Now
a(5)=&HAAF
Fori=1To5
Print"a(";i;")=";a(i)
Nexti
EndSub
8、求数组的和
PrivateSubCommand3_Click()
Dima
(2),b
(2),c
(2),i'定义为万能类型
a
(1)=1
b
(1)=1
a
(2)=1
b
(2)=1
Fori=0To1
c(i)=a(i)+b(i)
Print"c(";i;")=";c(i)
Nexti
EndSub
9、数组名在一个过程中不能重
PrivateSubForm_Click()
Dima(5)
Dimb
b=8'在同一个过程中,数组名和其他变量名不能一样
a
(2)=10
Printb,a
(2)
EndSub
10、erase语句的用法
StaticSubForm_Click()
FontSize=20
Dimtest(1To20)AsInteger'用static定义一个静态数组
Fori=1To20'循环,给数组赋值并输出
test(i)=i
Printtest(i);
Nexti
Erasetest'清空数组,还原值为0,释放空间
Print'换行
Print"Erasetest()"'输出字符串
Print"nowthetestarrayisfilledwithzeros..."'输出字符串
Fori=1To20
Printtest(i);'输出清空后的数组
Nexti
EndSub
11、冒泡排序法
PrivateSubCommand1_Click()
FontSize=50
Staticnumber(1To10)AsInteger
msg$="enternumberforsort"'$表示字符串,用msg$,msgtitle$只是为了代换
msgtitle$="sortdemo"
Fori%=1To10'%表示为整形
number(i%)=InputBox("msg$,msgtitle$")'也可直接输字符串
Nexti%
Fori%=10To2Step-1
Forj%=1Toi%-1
Ifnumber(j%)>number(j%+1)Then
t=number(j%+1)'number(j%+1),number(j%)交换数值
number(j%+1)=number(j%)
number(j%)=t
EndIf
Nextj%
Nexti%
Fori%=1To10
Printnumber(i%)
Nexti%
EndSub
12统计人数
OptionBase1
Dimscore()AsSingle
PrivateSubForm_Click()
n=InputBox("输入学生人数n")
ReDimscore(n)
Dimcount(11)AsInteger
Fori=1Ton
score(i)=InputBox("输入第"&i&"个学生成绩")
Printscore(i);
k=Int(score(i)/10)+1
count(k)=count(k)+1
Nexti
Print
Fori=1To10
Print(i-1)*10;"to";(i-1)*10+9,count(i)
Nexti
Print100;Spc(9);count(11)
EndSub
PrivateSubForm_Load()
FontSize=30
EndSub
13、作业题5
OptionBase1
Dimnam(),sex(),age(),culture(),addr()
PrivateSubForm_Click()
n=InputBox("enterpeoplenumber:
")
ReDimnam(n)
ReDimsex(n)
ReDimage(n)
ReDimculture(n)
ReDimaddr(n)
Fori=1Ton
nam(i)=InputBox("entername:
")
Printnam(i),
sex(i)=InputBox("entersex:
")
Printsex(i),
age(i)=InputBox("Enterage:
")
Printage(i),
culture(i)=InputBox("输入文化程度:
")
Printculture(i),
addr(i)=InputBox("输入籍贯:
")
Printaddr(i)
Next
100
findName=InputBox("输入要查询的姓名:
")
flag=0
Fori=1Ton
IffindName=nam(i)Then
Printnam(i),sex(i),age(i),culture(i),addr(i)
flag=1
EndIf
Next
Ifflag=0Then
Print"您要查询的人不存在!
!
"
EndIf
msg=MsgBox("您要继续查找吗?
",vbYesNo+vbDefaultButton1,"询问框")
Ifmsg=vbYesThen
GoTo100
Else
End
EndIf
EndSub
14、作业题
PrivateSubForm_Click()
FontSize=16
DimiAsInteger
DimjAsInteger
Dimarr(1To10,1To10)AsInteger
Fori=1To10
Forj=1To10
Ifi=jOri+j=11Then
arr(i,j)=1
Else
arr(i,j)=0
EndIf
Next
Next
Fori=1To10
Forj=1To10
Printarr(i,j);
Next
Print
Next
EndSub
15、作业题8
OptionExplicit
OptionBase1
Dima()AsInteger
Dimb()AsInteger
PrivateSubForm_Click()
FontSize=26
DimiAsInteger
DimjAsInteger
DimnAsInteger,mAsInteger
n=InputBox("请输入矩阵的行数:
")
m=InputBox("请输入矩阵的列数:
")
ReDima(n,m)AsInteger
ReDimb(m,n)AsInteger
Print"转置前的矩阵为:
"
Fori=1Ton
Forj=1Tom
a(i,j)=InputBox("输入数组A的元素值:
")
Printa(i,j);
Next
Print
Next
Fori=1Ton
Forj=1Tom
b(j,i)=a(i,j)
Next
Next
Print"转置后的矩阵为:
"
Fori=1Tom
Forj=1Ton
Printb(i,j);
Next
Print
Next
EndSub
16、作业题9
PrivateSubForm_Click()
FontSize=24
DimiAsInteger
DimjAsInteger
Dimarr(10,10)AsInteger
arr(0,0)=1
Fori=1To10
arr(i,0)=1
Forj=1Toi
Ifi=jThen
arr(i,j)=1
Else
arr(i,j)=arr(i-1,j-1)+arr(i-1,j)
EndIf
Next
Next
Fori=0To10
Forj=0Toi
PrintTab(6*j);arr(i,j);
Next
Print
Next
EndSub
17、作业题1、2
OptionExplicit
OptionBase1
Dima(1To10)AsSingle
PrivateSubCommand1_Click()
FontSize=24
DimiAsInteger
DimtAsSingle
Print"对换前的数组值依次为:
"
Fori=1To10
a(i)=InputBox("输入数值:
")
Printa(i);
Next
Fori=1To5
t=a(i)
a(i)=a(11-i)
a(11-i)=t
Next
Print
Print"对换后的数组值依次为:
"
Fori=1To10
Printa(i);
Next
EndSub
PrivateSubCommand2_Click()
DimarrAAsVariant
DimarrB
DimarrSum(8)AsVariant
DimiAsInteger
Cls
arrA=Array(2,8,7,6,4,28,70,25)
arrB=Array(79,27,32,41,57,66,78,80)
Fori=1To8
PrintarrA(i);"";
Next
Print
Fori=1To8
PrintarrB(i);"";
Next
Print
Fori=1To8
arrSum(i)=arrA(i)+arrB(i)
PrintarrSum(i);"";
Next
EndSub
PrivateSubCommand3_Click()
FontSize=24
DimiAsInteger
DimtAsSingle
Dimb(10)AsInteger
Print"对换前的数组值依次为:
"
Fori=1To10
a(i)=InputBox("输入数值:
")
Printa(i);
Next
Fori=1To10
b(i)=a(11-i)
Next
Print
Print"对换后的数组值依次为:
"
Fori=1To10
Printb(i);
Next
EndSub
18、第3题
OptionExplicit
OptionBase1
Dimarr()AsInteger
DimnAsInteger
DimmAsInteger
PrivateSubCommand1_Click()
DimiAsInteger,jAsInteger
DimmaxAsInteger
DimrowAsInteger,colAsInteger
n=InputBox("输入数组的行数:
")
m=InputBox("输入数组的列数:
")
ReDimarr(n,m)
Fori=1Ton
Forj=1Tom
arr(i,j)=InputBox("输入数组的元素值:
")
Printarr(i,j);
Next
Print
Next
max=arr(1,1)
row=1:
col=1
Fori=1Ton
Forj=1Tom
Ifmaxmax=arr(i,j)
row=i:
col=j
EndIf
Next
Next
Print
Print"最大值的行号:
";row,"列号:
";col
Print"最大值是:
";max
EndSub
19、第四题
OptionExplicit
OptionBase1
Dimarr(4,4)AsInteger
DimarrB(4,4)AsInteger
DimiAsInteger,jAsInteger
DimRowSum(4)AsInteger,ColSum(4)AsInteger
DimtempAsInteger
PrivateSubCommand1_Click()
Cls
Print"输出矩阵两个对角线上的数:
"
Fori=1To4
Forj=1To4
Ifi=jThen
Printarr(i,j);
Else
Ifi+j=5ThenPrintarr(i,j);
EndIf
Next
Next
Print
EndSub
PrivateSubCommand2_Click()
Cls
Print"分别输出各行各列的的和:
"
Fori=1To4
Forj=1To4
RowSum(i)=RowSum(i)+arr(i,j)
ColSum(j)=ColSum(j)+arr(i,j)
Next
Next
Fori=1To4
Print"第";i;"行之和为:
",RowSum(i)
Next
Print
Fori=1To4
Print"第";i;"列之和为:
",ColSum(i)
Next
EndSub
PrivateSubCommand3_Click()
Cls
Print
Print"交换第一行和第三行的位置:
"
Fori=1To4
Forj=1To4
arrB(i,j)=arr(i,j)
Next
Next
Forj=1To4
temp=arrB(1,j)
arrB(1,j)=arrB(3,j)
arrB(3,j)=temp
Next
Fori=1To4
Forj=1To4
PrintarrB(i,j);
Next
Print
Next
Print
EndSub
PrivateSubCommand4_Click()
Cls
Print"交换第二列和第四列的位置:
"
Fori=1To4
temp=arr(i,2)
arr(i,2)=arr(i,4)
arr(i,4)=temp
Next
Fori=1To4
Forj=1To4
Printarr(i,j);
Next
Print
Next
Print
EndSub
PrivateSubForm_Click()
Fori=1To4
Forj=1To4
arr(i,j)=InputBox("输入数组的数据:
")
Printarr(i,j);
Next
Print
Next
Print
EndSub
20、第六题
OptionExplicit
OptionBase1
Dimnum,score,order
PrivateSubForm_Click()
FontSize=26
DimiAsInteger
DimjAsInteger
Dimtemp,tem
num=Array("207","077","156","231","453","276","096","122","339","302")
score=Array(14.5,15.1,14.2,14.7,15.2,13.9,15.7,13.7,14.9,14.5)
Fori=1To9
Forj=1To10-i
Ifscore(j)>score(j+1)Then
temp=score(j):
score(j)=score(j+1):
score(j+1)=temp
tem=num(j):
num(j)=num(j+1):
num(j+1)=tem
EndIf
Next
Next
Print"名次","运动员号","成绩"
Fori=1To10
Printi,num(i),score(i)
Next
EndSub
21、第十题
PrivateSubForm_Click()
FontSize=20
Print"*"
Fork=1To4
PrintTab(k*6);3*k;
Nextk
Fori=15To18
Print
Printi;
Fork=1To4
PrintTab(k*6);i*3*k;
Nextk
Nexti
EndSub
22、九九乘法表
PrivateSubCommand1_Click()
FontSize=13
PrintTab(65);"九九乘法表"
Print
Fori=1To9
Forj=1Toi
PrintTab(j*15);j;"*";i;"=";i*j;
Nextj
Print
Nexti
EndSub
第七章
1、求3和7的倍数的数
PrivateSubCom