VB实验教材习题参考答案2018年_第1页
VB实验教材习题参考答案2018年_第2页
VB实验教材习题参考答案2018年_第3页
VB实验教材习题参考答案2018年_第4页
VB实验教材习题参考答案2018年_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章VB集成环境与VB概述

一、选择题

1.2.3.4.5.6.7.8.9.10.

BAABDBCADA

11.12.13.14.15.16.17.18.19.20.

CBCDADACAA

21.22.

DD

第2章常用控件与界面设计

一、选择题

1.2.3.4.5.6.7.8.9.10.

BBBCAABBCc

11.12.13.14.15.16.17.18.19.20.

ACABBBBCBD

21.22.23.24.25.26.27.28.29.30.

BBCCBABDAC

31.32.33.34.35.36.37.38.39.40.

DDDBCDCCCB

41.42.43.44.45.46.47.48.49.50.

CDBCAABDAC

51.52.53.54.55.56.57.58.59.60.

DCBCBBABBB

61.62.63.64.65.66.67.68.69.70.

BBDADDDDDB

71.72.73.74.75.76.77.78.79.80.

ABDBBABAAA

81.82.83.84.85.86.S7.88.89.90.

CCDCDDcccDCC

91.92.93.94.95.96.97.98.99.100.

CCBDBBADBc

101.102.103.104.105.106.107.108.109.110.

cCCAABBAAB

111.112.113.114.115.116.117.

ADAAC

第3章数据、表达式与简单程序设计

、选择题

1.2.3.4.5.6.7.8.9.10.

BDCDBDAAAA

11.12.13.14.15.16.17.18.19.20.

AAADDCDCAB

21.22.23.24.25.26.27.28.29.30.

CBBDBCADDA

31.32.33.34.35.36.37.38.39.40.

BBBCBDABCB

41.42.43.44.45.46.47.48.49.50.

CCBDDDCCAA

51.52.53.54.55.56.57.58.59.60.

ABCBBCBDAB

61.62.63.64.65.66.67.68.69.70.

CCCBBCBDCD

71.72.73.74.75.76.77.78.79.80.

CBBBACBDBD

81.82.83.84.85.86.87.88.89.90.

DCDDBCCDAA

91.92.93.94.95.96.97.98.99.100.

BABDACCCCA

101.102.103.104.105.106.107.108.109.

DACBDDDBA

二、填空题

1.(XModl0)*10+X\102.xMod5=0OrxMod9=0

3.False4.CDEF

5.UCase(s)>=AndUCase(s)>=uZn6.False

7.X<100AndX>=0AndX=Int(X)8.能

第4章选择分支与循环

一、选择题

1.2.3.4.5.6.7.8.9.10.

DADCAADDBc

11.12.13.14.15.16.17.18.19.20.

CDDBCBBCCA

21.22.23.24.25.26.27.28.29.30.

BCAADCCCCD

31.32.33.34.35.36.37.38.39.40.

ABACDCDCCB

41.42.

CD

二、填空题

1.72.220321422523

3.64.33

5.46.2

120

-24

7.Mid(a,n-i+1,1)8.17.5

Mid(a,n-i+1,1)=c14

9.13-1610.6

a

Print

11.32012.BAABC

CBAABC

13.1514.thisisabook.

1ThisIsABook.

15.116.1=1+2

401

104

17.XModP=018.Abs⑴<eps

X=X+1s+t

19.Mid(m,l,l)=Mid(m,2,l)AndMid(m,3J)=Mid(m,4J)

n=n+l

20.Mid(a,i,1)>Mid(a,i+1,1)21.nModi=0

i>k-lPrinti

三、编程题

1.编写程序,根据用户在文本框Textl中输入的字符串,统计其中的0〜9数字个数、英文

字母(不区分大、小写)个数、其它字符个数,并在窗体中输出这三个数。

OptionExplicit

PrivateSubCommand1_Click()

DimsAsString,iAsInteger,chAsString*1

DimaAsInteger,bAsInteger,cAsInteger

s=Textl.Text

Fori=1ToLen(s)

ch=Mid(s,i,1)

If(ch>=n0"Andch<="9H)Then

a=a+1

Elself(ch>="A"Andch<="Z")Or(ch>=ua"Andch<=nzn)Then

b=b+1

Else

c=c+1

EndIf

Next

Print”数字个数”;a

Print”字符个数”;b

Print”其他字符”;c

EndSub

2.编写程序,随机生成20个小于等于999的正整数,在窗体的一行上显示,并且要计算出

这20个数的和、最大数和最小数。

PrivateSubCommand1_Click()

DimmaxAsInteger,minAsInteger,sumAsInteger

x=Int(Rnd*999+1)

Printx;

max=x

min=x

sum=x

Fori=2To20

x=Int(Rnd*999+1)

Ifx>maxThenmax=x

Ifx<minThenmin=x

sum=sum+x

Printx;

Nexti

Print

Printmax,min,sum

EndSub

3.在Textl中输入正整数N,编程求最小的k,使Ixl+2x2+3x3+4x4+…+kxk>N

成立。

PrivateSubCommand1_Click()

DimnAsInteger,sAsInteger,kAsInteger

n=Textl.Text

s=0

k=0

DoUntils>n

k=k+1

s=s+k*k

Loop

Printk

EndSub

4.编程计算13+23+33+.・・+2。3的值。

OptionExplicit

PrivateSubCommandl_Click()

DimiAsInteger,iSumAsLong

Fori=1To20

iSum=iSum+iA3

Next

PrintiSum

EndSub

s.编程计算_的值。

1x22x33x44x520x21

PrivateSubCommand1_C1ick()

DimiAsInteger,sAsSingle

s=0

Fori=1To20

s=s+1/(i*(i+1))

Nexti

Prints

EndSub

6.已知e=l+,+,+,+…+,+…,编程计算e的值(丢弃小于0.000001的数据项)。

1!2!3!nl

OptionExplicit

PrivateSubCommand1_Click()

DimxAsSingle

DimtAsLong,nAsInteger

x=1

t=1

n=1

DoWhile1/t>=0.0001

x=x+1/t

n=n+1

t=t*n

Loop

Printx

EndSub

7.百钱买百鸡。公元前五世纪,我国数学家张丘建在《算经》中提出“百鸡问题”:鸡翁一

值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

PrivateSubCommandl_Click()

DimfAsInteger,mAsInteger,xAsInteger

Forf=1To20

Form=1To33

x=100-f-m

Iff*5+m*3+x/3=100Then

Printf,m,x

EndIf

Next

Next

EndSub

8・通过InputBox输入一个正整数k,编程求k的各位数字之和,并用MsgBox函数输出。

OptionExplicit

PrivateSubCommand1_Click()

DimkAsInteger,sumAsInteger,iAsInteger

k=InputBox("请输入一个正整数k「输入框”)

Fori=1ToLen(CStr(k))

sum=sum+Mid(k,i,1)

Nexti

MsgBoxk&”的各位数字之和”&sum

EndSub

9.已知x、y、z分别是0〜9中的一个数,求x、y、z的值,使得下列成立:xxz+yzz=532。

(其中xxz和yzz不表示乘积,而是由X、y^z组成的三位数)。

PrivateSubCommand1_Click()

DimxAsInteger,yAsInteger,zAsInteger

Forx=0To9

Fory=0To9

Forz=0To9

Ifx*100+x*10+z+y*100+z*10+z=532Then

Printx,y,z

EndIf

Next

Next

Next

EndSub

10.判断某一正整数是否是一回文数。所谓回文数是指左右数字完全对称的自然数。例如:

121、1232k484、555>2992等都是回文数。

PrivateSubCommand1_Click()

DimNAsLong,LAsInteger,kAsInteger

N=Text1.Text

L=Len(CStr(N))

Fori=1TOL\2

IfMid(N,i,1)<>Mid(N,L-i+1,1)ThenExitFor

Nexti

Ifi>L\2Then

Label1=N&”是回文数”

Else

Label1二N&”不是回文数”

EndIf

EndSub

第5章数组

一、选择题

1.2.3.4.5.6.7.8.9.10.

DCCBBBDDBA

11.12.13.14.15.16.17.18.19.20.

CBBCBDADAB

21.22.23.24.25.26.27.28.29.30.

CACAADDAAB

31.32.33.34.35.36.37.

CBDCBAD

二、填空题

1.arrl(l)

Min=arrl(i)

2.ReDimA(N)

A(l)

IfM<A(I)ThenM=A(I)

3.Print"S(u;I;1')=";S(I)

4.Int(Rnd*(90-65+1)+65)

Chr(t)

i+1To10

A(i)>AO

5.InStr(s,u,n)

Right(s,Len(s)-n)

s

6.T-l

1+1

7.J>I-1

三、编程题

1.随机产生10个数,查找其中最大的能被3整除的数,如果没有则显示“无要找的数”。例

如:37、70、42、44、72、58、91、52、42、11中72就是最大的能被3整除的数。

OptionExplicit

OptionBase1

PrivateSubCommand1_Click()

Dima(10)AsInteger

DimiAsInteger,maxAsInteger

Fori=1To10

a(i)=Int(90*Rnd)+10

Printa(i);

Nexti

Print

i=1

max=0

DoWhilei<=10

Ifa(i)Mod3=0Then

Ifa(i)>maxThen

max=a(i)

EndIf

EndIf

i=i+1

Loop

Ifmax=OThen

Print”无要找的数”

Else

Printmax&”是最大的能被3整除的数”

EndIf

EndSub

2.编写程序,生成两个均由两位随机整数组成的数组,每个数组中的10个元素互不相同,

找出存在于这两个数组中的相同的数并输出。

OptionExplicit

PrivateSubCommand1_Click()

DimA(10)AsInteger

DimB(10)AsInteger,SAsString

DimIAsInteger,JAsInteger,XAsInteger

A(l)=Int(90*Rnd)+10

S=A(1)

ForI=2To10

Do

X=Int(90*Rnd)+10

ForJ=1ToI-1

IfX=A(J)ThenExitFor

NextJ

IfJ=IThen

A(I)=X

S=S&"n&A(I)

ExitDo

EndIf

Loop

NextI

Text1.Text=S

B(l)=Int(90*Rnd)+10

S=B(1)

ForI=2To10

Do

X=Int(90*Rnd)+10

ForJ=1ToI-1

IfX=B(J)ThenExitFor

NextJ

IfJ=IThen

B(I)=X

S=S&"n&B(I)

ExitDo

EndIf

Loop

NextI

Text2.Text=S

S=,H,

ForI=1To10

ForJ=1To10

IfA(I)=B(J)Then

S=S&""&A(I)

EndIf

NextJ

NextI

IfS=H"Then

Text3.Text="没有重复”

Else

Text3.Text=S

EndIf

EndSub

PrivateSubCommand2_Click()

Textl.Text=,n,

Text2.Text=,,M

Text3.Text=心

Textl.SetFocus

EndSub

3.用户通过文本框输入任意一个正整数,编程将该数的各位数字放入一个数组中,并求该

数各位数字之和。

OptionExplicit

PrivateSubCommand1_Click()

DimIAsInteger,JAsInteger

Dima()AsInteger,KAsInteger,SumAsInteger

K=Val(Textl.Text)

1=1

Do

J=KMod10

ReDimPreservea(I)

a(I)=J

Sum=Sum+J

K=K\10

1=1+1

LoopUntilK=0

Text2.Text=Sum

EndSub

4.用一个二维数组记录下100以内的所有的自然数对。所谓自然数对,是指两个自然数的

和与差都是平方数。例如,17-8=9,17+8=25,那么17和8就是自然数对。

OptionExplicit

PrivateSubCommand1_Click()

Dima(100,2)AsInteger,KAsInteger

DimIAsInteger,JAsInteger

DimMAsInteger,NAsInteger

K=1

ForI=1To99

ForJ=1To99

Ifl>JThen

M=I-J

N=I+J

IfSqr(M)=Int(Sqr(M))AndSqr(N)=Int(Sqr(N))Then

Listl.AddItemI&""&J

a(K,1)=I

a(K,2)=J

K=K+1

EndIf

EndIf

NextJ

NextI

EndSub

5.编写程序,随机生成一个5x5的两位正整数数组a,找出a数组中每行的最大值及该值

在行中的次序(即列下标),并将所找到的结果分别保存到一维数组b、c中(例如,第一行

的最大值保存在b(l)中,最大值的列次序保存在c(l)中)。

OptionExplicit

OptionBase1

Dima(5,5)AsInteger

PrivateSubCommandl_Click()生成数组并显示

DimiAsInteger,jAsInteger

Picture1.Cis

Picture2.Cls

Picture3.Cls

Randomize

Fori=1To5

Forj=1TO5

a(i,j)=Int(90*Rnd)+10

Picture!.Printa(i,j);

Next

Picture1.Print

Next

EndSub

PrivateSubCommand2_Click()

DimiAsInteger,jAsInteger,maxAsInteger

Dimb(5)AsInteger,c(5)AsInteger

Fori=1To5

max=a(i,1)

Forj=1To5

Ifmax<a(i,j)Then

max=a(i,j)

EndIf

b(i)=max

Ifmax=a(i,j)Thenc(i)=j

Nextj

Nexti

Fori=1To5

Picture2.Printb(i)

Picture3.Printc(i)

Next

EndSub

6.统计组数中出现的数据的个数。

【要求】

(1)界面如图所示,单击“生成数据”按钮,随机生成20个一位数,每10个一行显示在

Textl中;

(2)单击“统计”按钮,统计出组数中出现的数据的个数并显示在列表框Listl中;

(3)单击“清空”按钮,文本框和列表框清空内容。

售13回区]

生成数组:

4214242463

7298267452

4出现次数:5生成|

2出现次数:6

1出现次数:1

6出现次数:2j统阳

3出现次数:1

7出现次数:2洁空|

OptionExplicit

Dima(20)AsInteger,iAsInteger

PrivateSubCommand1_Click()

Randomize

Fori=1To20

a(i)=Int(Rnd*9)+1

Text1=Textl&a(i)&M°

Ifi=10ThenTextl=Textl&vbCrLf

Next

EndSub

PrivateSubCommand2_Click()

DimjAsInteger,kAsInteger

Dimb(20)AsBoolean,用b(k)记录a(k)是否被统计过,统计过记为True

Fori=1To20

k=1

Ifb(i)=FalseThen如果b⑴=False,表示a(i)没有被统计过

Forj=i+1To20

Ifa(i)=a(j)Then

k=k+1

b(j)=True

EndIf

Nextj

List1.Additema(i)&”出现次数:“&k

EndIf

Next

EndSub

PrivateSubCommand3_Click()

Textl=,,n

List1.Clear

EndSub

第6章过程

一、选择题

1.2.3.4.5.6.7.8.9.10.

BCADABADDD

11.12.13.14.15.16.17.18.19.20.

AADDBBDAAC

21.22.23.24.25.26.27.28.29.30.

BACDBCCBBD

31.32.33.34.35.36.37.38.39.40.

CBABDDDCDD

41.42.43.44.45.46.47.48.49.50.

DDCBCBDADA

51.52.53.

CAB

二、填空题

1.Isp(i・2)

plAndp2

IsD=True

mModi=0

2.+Fun⑴

Fun二p

3.

PrivateFunctionMax(a()AsInteger)AsInteger

DimsAsInleger,fAsInteger,i%

s-LBound(a):f二UBound(a)

Max-a(s)

Fori=sTof

Ifa(i)>MaxThenMax=a(i)

Next

EndFunction

4.129

5.420101

6.第一行4、第二行20.7

7.第一行是29,第二行是28.7

8.第一行69,第三行1217,第四行217

9.第一行输出结果1513

10.]_______

n*fac(n-l)

11.第一行内容是_15_,第二行内容是_35一,第四行内容是-51

12.第一行是一bed,第二行是一cd,第四行是_2_____

13.第一行是.11,第二行是一7

14.H2D(Sl)

Len(S)

Ch

“A“To“Z”

15.第一行是isualVi,第二行是sualVisu

16.276

17.第一行内容是76,第二行内容是1616,第三行内容是45

18.Left(SJ)

Mid(S,i,1)=Mid(S,i-1J)

n=1

Left(c,Len(c)-1)

19.Ch

Temp

True

20.2

b()AsInleger

b(k-1)=b(k)

21.终A⑵2)的值是6,A(3.1)的值是一8,A(4,2)的值是_3__

22.Mid(s,i,i)

n&

prime=True

三、改错题

1.找出50到100之间的互质数(即这些数中任意两个数的最大公约数为1)。程序界面如

图所示。含有错误的源代码如下:

OptionBase1

PrivateSubCommand1_Click()

DimA%(),1%,J%,K%

□X

DimLogicAsBoolean

5051535961

ReDimA(l)6771737779

838997

A(l)=50

________________fK=l

法存;

ForI=51To100

K=1彳立置错

Logic=False

CallSubl(A,I,Logic)

IfLogicThen

K=K+1

ReDimA(K)'ReDimPreserveA(K)

A(K)=1

EndIf

NextI

ForI=1ToUBound(A)

Textl=Text1&Str$(A(I))

IfIMod5=0ThenTextl=Textl&vbCrLf

NextI

EndSub

PrivateSubSubl(A%(),N%,FAsBoolean)

Dim1%,J%,Ub%

Ub=UBound(A)

ForI=1ToUb

ForJ=2ToA(I)

IfA(I)ModJ=0AndNModJ=0Then

ExitForrExitSub

EndIf

NextJ

F=True'位置错

NextI

F=True

EndSub

2,找出80到100之间满足该数等于两个素数之积的所有整数。程序界面如图所示。含有错

误的源程序如下:

OptionBase1

□x

PrivateSubCommand1_Click()

82=2*41

DimP()AsInteger85=6*17

86=2*43

Dim1%,J%,SI%,S2%87=3*29

91=7*13

93=3*31

ReDimP⑴94=2*47

95=5*19

P(D=2

ForI=3To50Step21LJEI

ForJ=2ToSqr(I)

IfIModJ=0ThenExitSub””ExitFor

NextJ

IfJ>Sqr(I)Then

ReDimPreserveP(UBound(P)+1)

P(UBound(P)+1)=1P(UBound(P))=I

EndIf

NextI

ForI=80To100

Iffun(I,S1,S2)ThenIffun(I,P,S1,S2)

Listl.AdditemI&&S1&&S2

EndIf

NextI

EndSub

PrivateFunctionfun(N%,P%(),SI%,S2%)

DimIAsInteger,JAsInteger

fun=False

ForI=1ToUBound(P)

ForJ=1ToUBound(P)

IfN=P(I)*P(J)Then

S1=P(I)

S2=P(J)

fun=True

ExitFunction

,H,fun=True

EndIf

NextJ

NextI

EndFunction

3.本程序的功能是输入任一自然数后,屏幕上将显示“是回文数”或“不是回文数所谓回

文数是指左右数字完全对称的自然数,例如,121,12321,898,111均是回文数。程

序界面如图所示。含有错误的源程序如下:

OptionExplicit

PrivateSubForm_Click()

DimSAsString,FigAsBoolean

S=InpulBox("输入一个自然数”)

Judge(S,Fig)Calljudge(S,Fig)或judgeS,

Fig

IfFigThen

Prints;"是回文数"

Else

PrintS;”不是回文数”

EndIf

EndSub

PrivateSubJudge(ChAsString,FAsBoolean)

DimLAsInteger,IAsInteger

L=Len(Ch)

F=TrueF=False

ForI=1ToLFor1=1ToL\2

IfMid(Ch,I,1)<>Mid(Ch,L+1-1,1)Then

ExitSub

EndIf

NextI

F=FalseF=True

EndSub

四、编程题

1.编程验证任一大于2的偶数可以表示成两个素数之和。

PrivateFunctionPrime(aAsInteger)AsBoolean

DimiAsInteger

Fori=2ToSqr(a)

IfaModi=0ThenExitFunction

Nexti

Prime=True

EndFunction

方法一

PrivateSubCommand1_Click()

DimmAsInteger,iAsInteger

m=InpulBox("请输入一个大于2的偶数”)

Ifm<=2OrmMod2<>0ThenMsgBox”请输入大于2的偶数”:ExitSub

IfPrime(2)AndPrime(m-2)Then

Printm&"=2+H&m-2

Else

Do

i=i+1

IfPrime(2*i+1)AndPrime(m-(2*i+1))Then

Printm&&2*i+1&&m-(2*i+1)

ExitDo

EndIf

LoopWhile2*i+l<m-(2*i+1)

EndIf

EndSub

方法二

PrivateSubCommand2_Click()

DimmAsInteger,iAsInteger,p()AsInteger,nAsInteger

DimfigAsBoolean

m=InputBox(”请输入大于2的偶数”)

Ifm<=2OrmMod2<>0ThenMsgBox"请输入大于2的偶数”:ExitSub

ReDimp(l)

P(l)=2

n=1

Fori=3Tom-2Step2

IfPrime(i)Then

n=n+1

ReDimPreservep(n)

p(n)=i

EndIf

Nexti

Fori=1Ton

Forj=1Ton

Ifp(i)+p(j)=mThen

Printm&"士'&p(i)&&p(j)

fig=True

ExitFor

EndIf

Nextj

Iffig=TrueThenExitFor

Nexti

EndSub

nl

2.编写程序,求从“个不同元素中取出〃?个元素的组合数二(n>m),程

机!(〃一〃?)!

序中必须包含一个求阶乘的通用过程。

PrivateFunctionFact(aAsInteger)AsLong

Ifa=0Ora=1Then

Fact=1

Else

Fact=a*Fact(a-1)

EndIf

EndFunction

PrivateSubCommand1_Click()

DimnAsInteger,mAsInteger,resultAsSingle

n=Vai(Text1.Text)

m=Val(Text2.Text)

Ifn>=mThen

result=Fact(n)/Fact(m)/Fact(n-m)

Text3.Text=result

Else

MsgBox”要求n>=m,请重新输入”

Textl.Text=,n,

Text2.Text二””

Textl.SetFocus

EndIf

EndSub

3.编写一个查找10到300之间所有同构数的程序,程序中必须包含一个判定某数n是否是

同构数的Function过程Istgs(n)。若一个数出现自己平方数的右端,则称此数为同构数。如

5在52=25的右端,25在25?=625的右端,故5和25为同构数。

PrivateFunctionIstgs(nAsInteger)AsBoolean

DimsAsString,LAsInteger

L=Len(CStr(n))

s=CStr(nA2)

IfRight(s,L)=nThenIstgs=True

EndFunction

PrivateSubCommandl_Click()

DimnAsInteger

Forn=10To300

Iflstgs(n)ThenList1.Additemn&,,A2H&n="&nA2

Nextn

EndSub

PrivateSubCommand2_Click()

End

EndSub

4.找出500以内的超完全数。设S(N)为N的所有因子(包括N在内)的和,若S(S(N))=2N,

则N就是一个超完全数。例如,16的因子和为1+2+4+8+16=31,而31的因子和为1+31

=32,32=2x16,故16是一个超完全数。必须定义S(N)的函数求N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论