vb课后习题答案.docx
- 文档编号:7714779
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:44
- 大小:23.82KB
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
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
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
Next
Fori=1Ton
Forj=1Tom
b(j,i)=a(i,j)
Next
Next
Print"转置后的矩阵为:
"
Fori=1Tom
Forj=1Ton
Printb(i,j);
Next
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
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"对换后的数组值依次为:
"
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
Fori=1To8
PrintarrB(i);"";
Next
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"对换后的数组值依次为:
"
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
Next
max=arr(1,1)
row=1:
col=1
Fori=1Ton
Forj=1Tom
Ifmax max=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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 课后 习题 答案