vb课后习题答案(红色参考书)_第1页
vb课后习题答案(红色参考书)_第2页
vb课后习题答案(红色参考书)_第3页
vb课后习题答案(红色参考书)_第4页
vb课后习题答案(红色参考书)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

第一章VB开发环境与VB概述习题答案

习题一、选择题

1.B2.A3.A4.B5.D6.B7A.8.A9.C10.B11.C12.D13.A14.D

第二章常用控件与界面设计习题答案

习题一、选择题

1.C2,B3.C4.A5.A6.B7.B8.B9.C10.Cll.B12.B13.D14.A15.B16.B17.B18.C19.C20.D

21.B22.B23.B24.C25.C26.C27.A28.B29.B30.C31.B32.C33.B34.B35.D36.B37.D38.D39JB40.A41.B

42.A43.B44.B45.D46.A47.A48.B49.D50.C51.1)52.D53.C54.D55.D56.C57.A58.C59.C60.B61.B

第三章实验与习题

实验实验3」,算术运算

PrivateSubCommandl_Click()

ConstaAsSingle=3,bAsSingle=2,cAsSingle=-1,dAsSingle=6

DimxAsSingle,yAsSingle,zAsSingle,mAsSingle

x=2:y=l:z=l:m=l

Listl.Clear

Listl.Addltema/(b+c/b)

Listl.Addltem(x+Sqr(xA2+1))A(1/3)

Listl.Addltem((2*y)/(a*x+b*y)*(a*x-b*y))

ListLAddlteml+l/(l+l/m)

ListLAddltem1/2*(d/3)A(2*x)

Listl.AddltemLog(y+Cos(x)A2)

Listl.AddltemAbs((Exp(x)+Sin(x)A3)/(x+y))

Listl.AddltemLog((Exp(x*y)+Abs(l/Tan(z)+Cos(x)A3))/(x+y-z))

Listl.AddltemSin(45*3.1415/180)+(Exp(10)+Log(10))/Sqr(x+y+1)

Listl.AddltemLog(a)/Log(b)

EndSub

'关系运算

PrivateSubCommand2_Click()

Listl.Clear

Listl.AddltemMid(nVisualBasic",1,12)=Right(nLanguageVisualBasic”,12)

ListLAddltem'ABCRG">=MabcdeM

Listl.AddltemInt(134.69)>=CInt(134.9)

ListLAddltem78.9/32.77<=97.5/43.87And-45.4>-4,98

Listl.AddltemStr(32345)=CStr(32.345)

EndSub'逻辑运算

PrivateSubConimand3_Click()

DimxAsInteger,yAsInteger

DimClAsInteger,C2AsInteger,C3AsInteger

Cl=70:C2=80:C3=90

x=9:y=-2

Listl.Clear

Listl.Addltemx+y<10Andx-y>0

Listl.Addltem(x%>=0Andy%>=0)Or(x%<0Andy%<0)

Listl.Addltemx=0Xory=0

ListLAddltemCl+C2+C3>=255OrCl>90AndC2>90AndC3>80

EndSub

实验3_2略实验3_3略实验3_4,零售结算

PrivateSubCommandl_Click()

DinidjAsSingle,siAsSingle,jeAsSingle,nAsInteger

Labell.Caption="金额:'*

dj=InputBox(“请榆入商品的单价:",“单价框")

si=InputBox(“请输入商品的数量:“,”数量框”,1)

je=dj*si

n=MsgBox("共计金•额="&jc,vbOKCancel+vblnformation,"结果")

Ifn=vbOKThenLabell.Caption="金额:"&Str(je)&"元”

EndSub

'产生随机数

PrivateSubCommand2_Click()

DimmAsInteger,nAsInteger

DimxlAsInteger,x2AsInteger,x3AsInteger

m=Val(Textl.Text):n=Text2.Text

Randomize

xl=Int(Rnd*(n-m+1)+m)

x2=Int(Rnd*(n-m+1)+m)

x3=Int(Rnd*(n-m+1)+m)

Label4.Caption="结果为:“&Str(xl)&Str(x2)&Str(x3)

EndSub

,求逆序数

PrivateSubCommand3_Click()

DimaAsInteger,hAsInteger,tAsInteger,nAsInteger

Randomize

a=Int(Rnd*(999-100+1)+100)

h=Mid(CStr(a),l,l)

t=Mid(CStr(a),2,1)

n=Right(CStr(a),1)

LabelS.Caption=a&&Format(n*100+t*10+h,“000”)

EndSub

实验3_5略

习题选择题

LD2.B3.B4.D5.B6.D7.D8.B9.C10.A11.D12.D13.D14.C15.D16.D17B18.A19.D20.B

21.D22.C23.D24.A25.A26.B27.A28.A29.C30.A31.B32.C33.A34.D35.A36.B37.B

38.B39.C40.D41.B42.C43.B44.D45.C46.C47.A48.D49.B50.A51.C52.B53.D54.D55.D

56.DA7.B58.A59.A60.A61.B62.B63.C64.A65.B66.B67.D68.A69.A70.A71.C72.B73.B74.D

75.D76.C77.B78.D79.A80.D81.C82.B83.D84.B85.B86.B87.A88.D89.C

填空题

1、2-32768〜327672、整型长整型单精度双精度3、0False

4、Chr(Int(Rnd*(Asc(“L”)-Asc(uCf))+Asc(“C")))

x>0Andy>0Orx<0Andy<0

c>=''a"Andcv="z"Orc>="A”Andcv='Z'

x>=10Andx<20

x<zXory<z

5、False2TYueFalseTYueTYueTrueTrue

656876554

7、a=lb=l

a=2b=l

a=3b=l

a=4b=l

8、YMod4=0AndYModlOOoOOrYMod400=0

9、HeSaid,“Goodmorning”.10、EDEF

11、(A>0AndAoInt(A))And(B<0AndBoInt(B))

12、a+b+c+d(a+b+c+d)/4sumaver

13、(f-2*h)/2(4*h-f)/2

简答题1、略

2、PrivateSubForni_Ciick()

Constg=9.8

DimV0AsSingle,tAsSingle

DimSAsSingle

V0=InputBox("请输入V0的值:”)

t=InputBox(”请输入时间t的值:*')

S=(l/2)*g*tA2+V0*t

MsgBox("位移量为:n&S)

EndSub

3、PrivateSubCommandl_Click()

Dim1AsSingle,wAsSingle,hAsSingle

DimsAsSingle

1=Textl.Text

w=Textl.Text

h=Text3.Text

s=(1*w+1*h+w*h)*2

[>abell.Caption=s

EndSub

第四章选择分支与循环

实验答案实验4-1方法一:x<=5;y方法二:Isv=2;CaseElse

实验'4-2Shapel.BackColor=vbRed;Inter=15;Inter=Inter-l;Inter

实验4-3b<cb=aa=k

实验4-4方法二:s*n;t/s<10A-5

实验4-5方法一:m>=10A-4;(-l)A(n+l)*ni

实险"4-6x2=x3;<10A-6实验4-7

实验4-8i+2*j+5*k=10;n

实验4-9题目'-*:a)5b)i=16p=12n=5c)i=9p=8n=l

题目二:12010

实验4-10N=1;S=N&"*3"&'+l”

实验4-11Len(st);Ch=Lcase(ch);CaseElse;Mid(CharJ,l)&St

实验4-12ii\100;(iMod100)\10

习题一、选择题

l.C2.C3.A4.D5.A6.B7.B8.D9.B

二、填空题

1.Is=0;lTolO;Is>102.93.3;4154.thisisabook;ThisIsABook

5.3;3;356.3207.48.151

9.1;401;10410.123;13;111.(3)

12.202413.101414.BAABCCBAABC

15.XModP=0;X=X+1;Find=False16.abs⑴<10人(-7);s+t

17.Mid(n,14)=Mid(n,2J)AndMid(n,3,D=Mid(n,4,l)S=S+1

18.Mid(n,i,l)>Mid(n,i+l,l)19•”输入nH;N/I=0;PrintI

第五章数组实验

5_1Int(90*Rnd)+10a(i)=a(21-i)a(21-i)=t

5_2k=xMod10i=i+l

5_3s

5_4max<a(i,j)row=Icol=j

5_51ReDimPreserveprime(m)prime(j)

5_6dMod2

5_7ExitFora(j+l)=a(j)

5_8N-IA(j)=A(j+l)

5_9A(i,1)JMin=MaxNotFlag

5_10ch>="0"Andch<=H9MP=P&chReDimPreserveC(k)

5_11PrivateSubForni_Click()

DimxAsInteger,iAsInteger,kAsInteger,jAsInteger

Dima()AsInteger

x=InputBox「输入正整数x=")

i=2

Printx;”的质因子为:";

DoWhilex>=i

IfxModi=0Then

k=k+l

ReDimPreservea(k)

a(k)=i

x=x\i

Else

i=i+l

EndIf

Loop

Forj=1ToUBound(a)

Printa(j);

Nextj

EndSub

习题

一选择题

1.A2.C3.D4.C5.B6.D7.D8.B9.D10.B1LB12.D

二填空题

1.Variant2.RcDimA(N)A(l)IfM<A(I)ThenM=A(I)

3.Int(26*Rnd)+65Chr(t)i+1To10A⑴>A(j)

4.InStr(s,M,H)Right(s,Len(s)-n)s

5.456654321

6.T-l1+1

7.k=6-i-jmax=m8・j=aj=j・3

9.i+1i=i+l10.237

三编程题

1.OptionExplicit

OptionBase1

PrivateSubCommandl_Click()

Dima(10)AsInteger

DimiAsInteger,maxAsInteger

Fori=1To10

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

Printa(i);

Nexti

Print

i=l

max=0

DoWhilei<=10

Ifa(i)Mod3=0Then

Ifa(i)>maxThen

max=a(i)

EndIf

EndIf

i=i+l

Loop

Ifmax=0Then

Print”无要找的数”

Else

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

EndIf

EndSub

2.OptionExplicit

OptionBase1

PrivateSubCommandl_Click()

DimA()AsInteger

DimIAsInteger,mAsInteger

DimKAsInteger

ReDimA(10)

ForI=1To10

A(I)=I

PrintA(I);

NextI

Print

m=InputBox("6?4?m")

K=9+m

ReDimPreserveA(K)

ForI=11ToK

八⑴二人。」。)

NextI

ForI=1To10

A(I)=A(I+m-1)

NextI

ForI=1To10

PrintA(I);

NextI

Print

EndSub

3.OptionExplicit

PrivateSubCommandl_Click()

DimIAsInteger,JAsInteger,KAsInteger

Dima()AsInteger,nAsInteger,pAsInteger

DimsAsString,FlagAsBoolean

P=1

ForK=10To100

1=1

DoWhileI<=10AndNotFlag

J=1

DoWhileJ<=10AndNotFlag

n=IA2+JA2

Ifn=KThen

Flag=True

ReDimPreservea(p)

a(p)=K

P=P+1

s=I&Str(J)&Str(K)

Listl.Addltems

EndIf

J=J+1

Loop

Loop

Flag=False

NextK

EndSub

4.OptionExplicit

PrivateSubCommandl_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=lToI-l

IfX=A(J)ThenExitFor

NextJ

IfJ=1Then

A(I)=X

S=S&•'"&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&"

ExitDo

EndIf

Loop

NextI

Text2.Text=S

S=n"

ForI=1To10

ForJ=lTolO

IfA(I)=B(J)Then

S=S&nH&A(I)

EndIf

NextJ

NextI

Text3.Text=S

EndSub

PrivateSubCommand2_C)ick()

Textl.Text=,,H

Text2.Text=,,M

Text3.Text=MH

Textl.SetFocus

EndSub

5.

OptionExplicit

PrivateSubCommandl_Click()

DimIAsInteger,JAsInteger

Dima()AsInteger,KAsInteger,SumAsInteger

K=Val(Textl.Text)

1=1

Do

J=KMod10

ReDimPreservea(I)

a⑴=J

Sum=Sum+J

K=K\10

1=1+1

LoopUntilK=0

Text2.Text=Sum

EndSub

6.

OptionExplicit

PrivateSubCommandl_Click()

Dima(100,2)AsInteger,KAsInteger

DimIAsInteger,JAsInteger

DimMAsInteger,NAsInteger

K=1

ForI=1To99

ForJ=lTo99

IfI>JThen

M=I-J

N=I+J

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

ListLAddltemI&Hn&J

a(K,l)=I

a(K,2)=J

K=K+1

EndIf

EndIf

NextJ

NextI

EndSub

第六章参考答案

实验实验6・1

1、ExitDo2、Y(X)3、X>=-1

实验6・2【题目二】42、26、8

实验6-31、si,key2、sAsString3、ch>="a"Andch<="zM

4、Mid(s,i,1)=Chr(Asc(ch)+k-26)

思考:解密函数

PrivateSubdec(sAsString,kAsInteger)'解密过程

DimiAsInteger,chAsString*1

Fori=1ToLen(s)

ch=Mid(s,i,1)

If"A"<=chAndch<=HZHThen

IfAsc(ch)-k<Asc("A")Then

Mid(s,i,l)=Chr(Asc(ch)-k+26)'小于A的ASCII值则加上26

Else

Mid(s,i,1)=Chr(Asc(ch)-k)

EndIf

Elselfch>=*,aMAndch<=HznThen,多分支格式,ch介于小写a与z之间

IfAsc(ch)-k<Asc(”a”)Then

Mid®i,l)=Chr(Asc(ch)-k+26)**b于a的ASCII值则加上26

Else

Mid(s,i,l)=Chr(Asc(ch)-k)

EndIf

EndIf

Nexti

EndSub

实验6-4

1、b()AsInteger,stAsString

2、L<=R

3、ReDimPreserveb(R)

4、L=L+1

辍转相除法求最大公约数函数

PrivateFunctionGcd(ByValpAsInteger,ByVaiqAsInteger)AsInteger

DimrAsInteger

r=pModq

DoWhiler<>0

p=q

q=r

r=pModq

Loop

Ged=q

EndFunction

实验6・5【题目-1age=age(n-1)-3

【题目二】1、(Left+Right)/22、Left=Mid+1

实验6/1、3-12.743、3-14、70

实脸6-7【题目一】1、Sqr(2+1)2、Abs(a-1)<eps

【题目二】1、DimXAsInteger2、HS(H&I&”4”&SOO

3、(j*i+l)

习题参考答案

-选择题.

l.B2.D3.C4.C5.C6.B7.B8.B9.A10.Dll.D12.A13.A14.A15.B16.B17.D

18.C19.D20.B21.C22.C23.B24.A25.D26.D27.A28.B

二、填空

1(1)形式、(2)实在

2(1)按地址传递、(2)ByVai

3(1)窗体模块、(2)标准模块、(3)类模块

4(1)65(1)420101

6(1)626、(2)-298

7(1)106、(2)5-5

8(1)65、(2)87

9(1)11,(2)7

10(1)Fun(i)、(2)Fun=p

11(1)4、(2)20.7

12(1)29、(2)28.7

13(1)k=j、(2)b()AsInteger

14(1)gee、(2)ge、(3)3

15(1)pl=TrueAndp2=True或plAndp2、(2)pl=p2-2、

(3)Isp=I¥ue、(4)inModi=0

16(1)Convert(st)、(2)Len(s)、

(3)"A"To"F"、(4)k=k+p*h

17(1)isualVi.(2)sualVisu

18(1)s+a、(2)n+1、

(3)xAsSingle,nAsInteger、(4)p*(x+i)/((2*i-1)*i*x)

三、改错题

1、OptionBase1

PrivateSubCommandl_Click()

DimA()AsInteger,IAsInteger,JAsInteger,LogicAsBoolean

DimKAsInteger

ReDimA(l)

A(l)=50

--------------------K=1

ForI=51To149

K=1'位置错

Logic=False

CallSubl(A,I,Logic)

IfLogicThen

K=K+1

ReDimA(K)ReDimPreserveA(K)

A(K)=I

EndIf

NextI

ForI=1ToUBound(A)

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

IfIMod5=0ThenTextl=Textl&vbCrLf

NextI

EndSub

PrivateSubSubl(A()AsInteger,NAsInteger,FAsBoolean)

DimIAsInteger,JAsInteger,UbAsInteger

Ub=UBound(A)

ForI=1ToUb

ForJ=2ToA(I)

IfA(I)ModJ=0AndNModJ=0Then

ExitFor'ExitSub

EndIf

NextJ

F=l¥ue

NextI

EndSub

2、

OptionExplicit

OptionBase1

PrivateSubCommandl_Click()

DimIAsInteger,FigAsBoolean,SIAsInteger,S2AsInteger

DimJAsInteger,KAsInteger,P()AsInteger

ReDimP(l)

P(D=2

ForI=3To150Step2

ForJ=2ToSqr(I)

IfIModJ=0ThenExitFor

NextJ

IfJ>Sqr(I)Then

ReDimPreserveP(UBound(P)+1)

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

EndIf

NextI

ForI=80To125

Iffun(I,P,S1,S2)Then'Iffun(I,P,SI,S2)

Textl=Textl&Str$(I)&M="&Str(Sl)&&Str$(S2)&vbCrLf

EndIf

NextI

EndSub

PrivateFunctionfun(NAsInteger,P()AsInteger,SIAsInteger,S2AsInteger)AsBoolean

DimIAsInteger,JAsInteger

ForI=1ToUBound(P)

ForJ=lToUBound(P)-l

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

SI=P(I)

S2=P(J)

Tun=True

ExitFunction

fun=l¥ue,位置错

EndIf

NextJ

NextI

EndFunction

3、

OptionExplicit

PrivateSubGet_Chess(Chess()AsInteger,idxAsInteger,OverAsInteger)1ByVaiidxAsInteger

DimUbAsInteger,CounterAsInteger,KAsInteger

Ub=UBound(Chess)

Chess(idx)=0

Counter=1

K=0,位置错

DoUntilCounter=Ub-1

DoUntilK=2

idx=idx+1

Ifidx>UbThenidx=1

K=K+Chess(idx)

Loop

Chess(idx)=0

Counter=Counter+1

Loop

ForOver=1ToUb

IfChess(Over)<>0ThenExitFor

NextOver

EndSub

PrivateSubCommandl_Click()

DimChess(32)AsInteger,IAsInteger,JAsInteger

DimKAsInteger,idxAsInteger

ForI=1To32

ForJ=1To32

Chess(J)=1

NextJ

CallGet_Chess(Chess,I,K)

IfK=23Then

Textl="从第"&St帚I)&”号棋子开始取”

ExitFor

EndIf

NextI

EndSub

5、OptionExplicit

PrivateSubForm_Click()

DimSAsString,FigAsBoolean

Do

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

IfS=OrNotIsNumeric(S)Then

MsgBox”请重新输入”,48+vbOKOnly

Else

ExitDo

EndIf

Loop

judge(S,Fig)'Calljudge(S,Fig)或judgeS,Fig

IfFigThen

Prints;”是回文数”

Else

PrintS;”不是回文数”

EndIf

EndSub

PrivateSubjudge(ChAsString,FAsBoolean)

DimLAsInteger,IAsInteger

L=Len(Ch)

F=TYue*F=False

ForI=1ToL

IfMid$(Ch,1,1)<>Mid$(Ch,L+l-1,1)ThenExitSub

NextI

F=False'F=TYue

EndSub

四、编程题

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

PrivateFunctionPrime(aAsInteger)AsBoolean

DimiAsInteger

Fori=2ToSqr(a)

IfaModi=0ThenExitFunction

Nexti

Prime=True

EndFunction

,方法一

PrivateSubCommandl_Click()

DimmAsInteger,iAsInteger

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

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

IfPrime(2)AndPrime(m-2)Then

Printm&M=2+"&m-2

Else

Do

i=i+1

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

Printm&"=H&2*i+1&&m-(2*i+l)

ExitDo

EndIf

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

EndIf

EndSub

'方法二

PrivateSubConimand2_Click()

DimmAsInteger,iAsInteger,p()AsInteger;nAsInteger

DimflgAsBoolean

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

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

ReDimp(l)

p⑴=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

2、求组合数(n>=m),程序中必须包含一个求阶乘的通用过程。

PrivateFunctionFact(aAsInteger)AsLong

Ifa=0Ora=1Then

Fact=1

Else

Fact=a*Fact(a-1)

EndIf

EndFunction

PrivateSubCommandl_Click()

DimnAsInteger,mAsInteger,resultAsSingle

n=Val(Textl.Text)

m=Val(Text2.Text)

Ifn>=mThen

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

Text3.Text=result

Else

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

Textl.Text=HH

Text2.Text=,M,

Textl.SetFocus

EndIf

EndSub

PrivateSubCommand2_Click()

Textl.Text=HH

Text2.Text=HH

Text3.Text=,,H

Textl.SetFocus

EndSub

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

过程Istgs,若一个数出现在自己平方数的右端,则此数为同构数。如5在52=25的右端,25在252=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=10lb300

IfIstgs(n)ThenListl.Addltemn&,,A2n&&nA2

Nextn

EndSub

PrivateSubCommand2_Click()

End

EndSub

4、编写程序,随机生成一个由三位正整数组成的3行4列的数组,求数组每一行的最大元素及其所在列

号,程序中必须包含一个求一行中最大元素及其所在列号的通用过程.(若一行中有多个最大元素则取其

中之一即可)

PrivateSubCmdDisp_Click()

Dima(3,4)AsInteger,iAsInteger,jAsInteger

DinimAsInteger,mjAsInteger

Randomize

Fori=1To3

Forj=lTo4

a(i,j)=Int(900*Rnd+100)

Printa(i,j);

Nextj

Print

Nexti

Fori=1To3

m=0

Callmax(a,i,m,mj)

Print"第“&i&”行最大值为“&m&”海第“&mj&”列“

Nexti

EndSub

PrivateSubmax(a()AsInteger,iAsInteger;mAsInteger,maxjAsInteger)

DimjAsInteger

m=a(i,1):maxj=1

Forj=2ToUBound(a,2)

Ifa(i,j)>mThen

m=a(i,j)

maxj=j

EndIf

Nextj

EndSub

PrivateSubCmdEnd_Click()

End

EndSub

5、一个整数N的因子和(不包括N)等于N,则N被成为完全数.例如,28=1+2+4+7+14,28是完全数。

编写程序验证:介于10到10000之间的完全数,把它们的各位数字加起来得到一个数,再把这个数的各

位数字加起来又得到一个数,一直做下去,直到得到一个一位数,这个数是1,程序中必须包含一个判定

某数是否是完全数的过程.例如,28的各位数字加起来得到一个数10,再把10这个数的各位数字加起来

又得到一个数是1.

PrivateFunctionIsWqs(nAsInteger)AsBoolean

DimsumAsInteger,iAsInteger

Fori=1Ton/2

IfnModi=0Thensum=sum+i

Nexti

Ifsum=nThenIsWqs=True

EndFunction

PrivateSubCommandl_Click()

DimnAsInteger

DimsumAsInteger

Forn=10To10000

IfIsVVqs(n)Then

t=n

Printt;n=>H;

Do

sum=0

Fori=1ToLen(t)-1

sum=sum+Mid(CStr(t),i,1)

PrintMid(CStr(t),i,1);“+”;

Nexti

sum=sum+Mid(CStr(t),i,1)

Ifsum<>1Then

PrintMid(CStr(t),i,1);”=";sum;H,H;sum;"=>n;

Else

PrintMid(CStr(t),i,1);n=";sum;

EndIf

t=sum

LoopUntilsum=1

Print

EndIf

Nextn

EndSub

PrivateSubCommand2_Click()

End

EndSub

6、找出500以内的超完全数,程序中必须包含一个判定某数是否是超完全数的过程.设符号G(N)表示

N的所有因子的和(包括N在内),若①(①(N))=2N,则N就是一个超完全数。例如,16的因子和为

1+2+4+8+16=31,而31的因子为1+31=32,32=2*16,故16是一个超完全数。

PrivateFunctionJudgefnAsInteger)AsBoolean

DimsumAsInteger

sum=yz(n)

Ifyz(sum)=2*nThenJudge=True

EndFunction

PrivateFunctionyz(nAsInteger)AsInteger

DimiAsInteger

Fori=1Ton

IfnModi=0Thenyz=yz+i

Nexti

EndFunction

PrivateSubCommandl_Click()

DimnAsInteger

Forn=1To500

IfJudge(n)ThenPrintn

Nextn

EndSub

7、编写程序,通过调用通用过程找出100以内的所有不可表示成两个平方数之和的数.

PrivateFunctionpfh(nAsInteger)AsBoolean

DimiAsInteger,tAsSingle

Fori=1ToInt(Sqr(n))

t=n-iA2

IfSqr(t)=Int(Sqr(t))Thenpfh=TYue

Nexti

EndFunction

PrivateSubCommandl_Click()

DininAsInteger,tAsInteger

Forn=1To100

Ifpfh(n)=FalseThen

t=t+1

Printn;

IftMod10=0ThenPrint

EndIf

Nextn

EndSub

8、编写程序,通过调用通用过程找出30以内所有的无平方因子数。若一个数不能被大于1的数的平方

整除,则该数就是一个无平方因子数。

PrivateSubCommandl_Click()

DimnAsInteger,jAsInteger,figAsBoolean

Forn=2To30

fig=False

Forj=2Ton

Ifpfs(j)AndnModj=0Then

fig=True

ExitFor

EndIf

Nextj

Iffig=FalseThenPrintn;

Nextn

EndSub

PrivateFunctionpfs(nAsInteger)AsBoolean

IfSqr(n)=Int(Sqr(n))Thenpfs=True

EndFunction

9、编写程序,通过调用通用过程验证下列命题:任意一个正整数和其反序数相加,得到一个新的正整数,

再对这个新整数重复上述步骤,最终一定可以得到一个回文数(例如,正整数351,其反序数为153,

351+153=504,504+405=909,909是回文数).

,求反序数

PrivateFunctionfxs(nAsLong)AsLong

DimiAsInteger,sAsString

Fori=1ToLen(CStr(n))

s=Mid(CStr(n),i,l)&s

Nexti

fxs=s

EnclFunction

,判断某数是否为回文数

PrivateFunctionHws(nAsLong)AsBoolean

DimiAsInteger,$AsString,LAsInteger

s=CStr(n):L=Len(s)

Fori=1ToLen(s)/2

IfMid®i,1)<>Mid(s,L+l-i,1)ThenExitFunction

Nexti

Hws=True

EndFunction

PrivateSubCommandl_Click()

DimxAsLong,tAsLong

x=lnputBox(”请输■入一个正整数:*')

t=x

DoWhileHws(t)=False

Printt;•'+•';fxs(t);”=";t+fxs(t)

t=t+fxs(t)

Loop

EndSub

10、找出1000以内所有的奇妙平方数,程序中必须包含一个判定某事是否是奇妙平方数的过称。所谓奇

妙平方数,是指此数的平方与它的逆序数的平方互为逆序数。例如,122=144,212=441,12与21互逆,

144与441互逆,12就是奇妙平方数。

求反序数

PrivateFunctionfxs(nAsLong)AsLong

DimiAsInteger,sAsString

Fori=1ToLen(CStr(n))

s=Mid(CStr(n),i,1)&s

Nexti

fxs=s

EndFunction

PrivateSubCommand1_Click()

DimnAsLong,tAsLong

Forn=1To999

t=fxs(n)

IftA2=fxs(nA2)AndnMod10<>0Andn<tThen

ListLAddltemn&""&t

List2.AddItemn&,,A2n&&nA2&MH&t&,,A2"&"=H&tA2

EndIf

Nextn

EndSub

11.编写程序,查找介于300~2000之间的所有只有两个数字相同的完全平方数,程序中必须包含一个判定

某数是否是只有两个数字相同的完全平方数的过程.所谓完全平方数是指其平方根为整数的数.例如676、

900、1521等都是介于300~2000之间符合条件的数.

PrivateFunctionJudge(nAsInteger)AsBoolean

DiniiAsInteger,LAsInteger,a(9)AsInteger,tAsInteger

IfSqr(n)=Int(Sqr(n))Then

L=Len(CStr(n))

Fori=1ToL

t=Mid(CStr(n),i,1)

a(t)=1

Nexti

Fori=0To9

Sum=Sum+a(i)

Nexti

IfSum=L-1ThenJudge=TYue

EndIf

EndFunction

PrivateSubCommandl_Click()

DimaAsInteger

Fora=300To2000

IfJudge(a)ThenListl.Addltema

Nexta

EndSub

12、编写程序,通机生成8个不相等的三位正整数,将他们显示在列表框1中,并在列表框2中显示其

中的奇偶间隔数,程序中必须包含一个判定某数是否是就间隔数的过程。所谓奇偶间隔数是指:该数据的

各位与百位为奇数,十位为偶数。例如14

温馨提示

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

评论

0/150

提交评论