vb课后习题答案.docx

上传人:b****5 文档编号:7714779 上传时间:2023-01-25 格式:DOCX 页数:44 大小:23.82KB
下载 相关 举报
vb课后习题答案.docx_第1页
第1页 / 共44页
vb课后习题答案.docx_第2页
第2页 / 共44页
vb课后习题答案.docx_第3页
第3页 / 共44页
vb课后习题答案.docx_第4页
第4页 / 共44页
vb课后习题答案.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

vb课后习题答案.docx

《vb课后习题答案.docx》由会员分享,可在线阅读,更多相关《vb课后习题答案.docx(44页珍藏版)》请在冰豆网上搜索。

vb课后习题答案.docx

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

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1