VB二级.docx

上传人:b****5 文档编号:5025720 上传时间:2022-12-12 格式:DOCX 页数:48 大小:31.29KB
下载 相关 举报
VB二级.docx_第1页
第1页 / 共48页
VB二级.docx_第2页
第2页 / 共48页
VB二级.docx_第3页
第3页 / 共48页
VB二级.docx_第4页
第4页 / 共48页
VB二级.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

VB二级.docx

《VB二级.docx》由会员分享,可在线阅读,更多相关《VB二级.docx(48页珍藏版)》请在冰豆网上搜索。

VB二级.docx

VB二级

[题1]aboveave过程是产生30个1--100之间的随机整数,计算这30个数的平均值然后,找出30个数中数值大于平均值的数据,并统计出这些数据的个数

OptionExplicit

PublicSubaboveave()

Dimx(30)AsInteger

DimsumAsInteger,aveAsInteger'平均值取整数

DimiAsInteger

DimcountAsInteger'在平均值之上的数据个数

Randomize

Fori=1To30

x(i)=Int(Rnd*100)+1

Nexti

sum=0

Fori=1To30

sum=---------1---------

Nexti

ave=--------2---------

'5个一行打印出原始数据,打印平均值

Fori=1To30

Form1.Printx(i);Space

(2);

IfiMod5=0ThenForm1.Print

Nexti

Form1.Print"平均值:

";ave

'找出并5个一行打印在平均值之上的数据,打印统计的个数

Form1.Print"在平均值之上的数据是:

"

Fori=1To30

Ifx(i)>aveThen

---------3---------

Form1.Printx(i);Space

(2);

If------4--------ThenForm1.Print

EndIf

Nexti

Form1.Print

Form1.Print"共有";count;"个在平均值之上."

EndSub

[题2]rn过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"今年是润年",否则,打印"今年不是闰年"。

OptionExplicit

PublicSubrn()

Constyear=2023

If----1----Then

Form1.Print"今年是闰年"

Else

Form1.Print"今年不是闰年"

EndIf

EndSub

FunctionisLeapYear(yAsInteger)AsBoolean

If----2----Or(----3----And----4----)Then

isLeapYear=False

Else

isLeapYear=True

EndIf

EndFunction

[题3]ComMulti过程是求任意两个正整数的最小公倍数,求最小公倍数的一种方法是先求出两个数的最大公约数,两个数的乘积除以最大公约数的商即为最小公倍数。

OptionExplicit

PublicSubComMulti()

DimmAsInteger,nAsInteger'任意两个正整数

DimiAsInteger

DimmultiAsInteger'最小公倍数

'输入两个正整数,要求m与n都必须大于零

Do

m=Val(InputBox("m="))

n=Val(InputBox("n="))

LoopWhile------------1----------

multi=---------2-----------

Form1.Printm;"和";n;"的最小公倍数是:

";multi

EndSub

'Div函数过程求任意两个正整数m和n的最大公约数

PublicFunctionDiv(mAsInteger,nAsInteger)AsInteger

'该函数过程用于求任意两个正整数的最大公约数。

DimiAsInteger

'先将两个整数中的较小数假设为最大公约数,再依次往下

'寻找能同时除尽m和n的数即为最大公约数

----------3------------

Ifn

Div=n

EndIf

DoWhilemModDiv<>0OrnModDiv<>0

-----------4----------

Loop

EndFunction

[题4]find过程是用于从1到10000中找出这样的数,该数各个位的数字的阶乘相加之和等于该数,并将结果输出。

OptionExplicit

PublicSubfind()

Dimk,a,n,i

DimpAsInteger

Fork=1To10000

a=LTrim(Str(k))

n=0

Fori=----1-----

p=Val(Mid(a,i,1))

n=-----2----

Nexti

Ifn=kThenform1.Printk

Nextk

EndSub

Functionfact(xAsInteger)AsLong

'该函数用于计算阶乘

DimyAsLong

Dimi%

y=1

Fori%=1Tox

y=y*i%

Nexti%

----3----

EndFunction

[题5]ComDiv过程是求任意两个正整数的最大公约数。

OptionExplicit

PublicSubComDiv()

DimmAsInteger,nAsInteger'任意两个正整数

DimiAsInteger

DimdivAsInteger'最大公约数

'输入两个正整数,要求m与n都必须大于零

Do

m=Val(InputBox("m="))

n=Val(InputBox("n="))

LoopWhile----1----

'先将两个整数中的较小数假设为最大公约数,再依次往下

'寻找能同时除尽m和n的数即为最大公约数

-----2-----

Ifn

div=n

EndIf

DoWhilemModdiv<>0OrnModdiv<>0

----3-----

Loop

Form1.Printm;"和";n;"的最大公约数是:

";div

EndSub

[题6]该过程是用于计算e的值并将结果输出,要求精确到0.000000000000001,

e的计算公式为:

e=1+1/1!

+1/2!

+…+1/n!

OptionExplicit

PublicSube()

Dimn,term,t

n=0:

term=1:

t=1

Do

n=n+1

t=---1---

term=---2-----

LoopWhilet>0.000000000000001

form1.print"e="&---3----

EndSub

[题7]该过程是用于计算一元二次方程的根,并将结果输出来。

OptionExplicit

PublicSubgetanswer()

Dimdalt!

a#,b#,c#

a=InputBox("输入系数a")

b=InputBox("输入系数b")

c=InputBox("输入系数c")

dalt=b*b-4*a*c

if----1----then

dalt=Sqr(dalt)

MsgBoxFormat((-b+dalt)/2/a),"0.00"+Chr(13)+Chr(10)+Format((-b-dalt)/2/a,"0.00")

elseif---2----then

MsgBoxFormat(-b/2/a,"0.00")+Chr(13)+Chr(10)+Format(-b/2/a,"0.00")

Else

dalt=---3----

MsgBoxFormat((-b+dalt)/2/a,"0.00")+"+i"+Chr(13)+Chr(10)+Format((-b-dalt)/2/a,"0.00")+"-i"

EndIf

EndSub

[题8]该过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。

OptionExplicit

PublicSubfind()

DimcountN%,n%

countN=0

n=1

Do

n=----1----

if-----2----then

Form1.Printn

countN=countN+1

EndIf

Loop----3-----

EndSub

[题9]p过程是用于整理数组a,使其中小于零的元素移到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组的中间。

PublicSubp(a%())

Dimi%,low%,high%,t%

low=0

i=0

high=UBound(a)

doWhile----1----

Ifa(i)<0Then

t=a(i)

a(i)=a(low)

a(low)=t

----2----

i=i+1

ElseIfa(i)>0Then

t=a(i)

a(i)=a(high)

a(high)=t

-----3-----

Else

----4----

EndIf

Loop

EndSub

[题10]MoveStr过程是把字符数组移动m个位置,当Tag为True左移,则前m个字符移到字符数组尾。

PublicSubMoveStr(a$(),m%,TagAsBoolean)

Dimi%,j%,t$

Dimc

IfTagThen

Fori=1Tom

c=a(0)

forj=0to----1----

a(j)=a(j+1)

Nextj

-----2-----

Nexti

Else

Fori=1Tom

------3------

forj=Ubound(A)-----4------

a(j)=a(j-1)

Nextj

a(0)=c

Nexti

EndIf

EndSub

[题11]Modify.bas模块中的Transfer过程用于将一个十六进制整数转换为十进制整数;number函数过程用于将一个十六进制符号转换为数值。

PublicSubTransfer()

DimHexAsString'十六进制数

DimDecAsDouble'十进制数

DimtempAsString

DimiAsInteger

DimnAsInteger

Hex=InputBox("输入一个十六进制整数")

'******错误1*******

n=Val(Hex)

i=0

Do

'******错误2*******

temp=Mid(Hex,i,1)

'******错误3*******

Dec=Dec+number*16^i

i=i+1

LoopWhilei

'******错误4******

Form1.Printstr(Hex)&"转换为十进制数为"&str(Dec)

EndSub

PublicFunctionnumber(strAsString)AsInteger

SelectCasestr

Case"a","A"

number=10

Case"b","B"

number=11

Case"c","C"

number=12

Case"d","D"

number=13

Case"e","E"

number=14

Case"f","F"

number=15

CaseElse

number=Val(str)

EndSelect

EndFunction

[题12]Modify.bas模块中的BubbleSort过程是选择排序法;GenerateData过程产生个[1,20]之间互不相同的随机整数;Swap过程交换两个变量的数值。

PrivateConstn=10

Privatea(1Ton)AsInteger

'BubbleSort过程是排序

'Swap过程交换两个变量数值

'GenerateData过程产生10个[1,20]之间互不相同的随机整数

PublicSubBubbleSort()

DimiAsInteger,jAsInteger

i=1

Do

Forj=i+1Ton

Ifa(j)>a(i)Then

'*******1*********

Swap(a(j),a(i))

EndIf

Nextj

i=i+1

'*******2*******

LoopWhilei=n

Form1.Print"排序结果"

Fori=1Ton

Form1.Printa(i);

Nexti

EndSub

PublicSubGenerateData()

DimiAsInteger

DimjAsInteger

DimbAsBoolean

Fori=1Ton

b=False

DoWhileNotb

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

b=True

'******3******

Forj=1Toi

Ifa(i)=a(j)Then

b=False

ExitFor

EndIf

Nextj

Loop

Form1.Printa(i)

Nexti

EndSub

'********4********

PublicSubSwap(ByValaAsInteger,ByValbAsInteger)

DimtempAsInteger

temp=a

a=b

b=temp

EndSub

[题13]Modify.bas模块中的wrap过程用于判断一个字符串是否“回文”。

所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。

PublicSubWrap()

DimlengthAsInteger

Dimstr1AsString

DimstrleftAsString

DimstrrightAsString

DimkAsInteger

str1=InputBox("请输入任意的字符串")'输入任意字符串

'****错误1*****

length=Val(str1)

k=1

Do

'****错误2*****

strleft=Left(str1,k)'从左边起逐个取出一个字符

'****错误3*****

strright=Right(str1,k)'从右边起逐个取出一个字符

'****错误4****

Ifstrleft=strrightThen

ExitDo

EndIf

k=k+1

LoopWhilek<=length/2

Ifk>length/2Then

Form1.Printstr1&"是回文"

Else

Form1.Printstr1&"不是回文"

EndIf

EndSub

[题14]Modify.bas模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。

Modify.bas模块中的DataProduce过程用于产生原始数据;Average过程用于计算各行的平均值;PrintArraay过程用于打印二维数组和行平均值。

Dima(1To5,1To4)AsInteger

Dimave(1To5)AsInteger

PublicSubMaxLine()

DimiAsInteger

DimjAsInteger

DimtempAsInteger

DimLine_noAsInteger'最大平均值的行号

'找出最大平均值所在行

Line_no=1

Fori=2To5

'******错误1*******

Ifave(Line_no)>=ave(i)Then

'******错误2*******

Line_no=ave(i)

EndIf

Nexti

'交换第一行与最大平均值所在行

Forj=1To4

temp=a(1,j)

'******错误3******

a(Line_no,j)=a(1,j)

a(Line_no,j)=temp

Nextj

'交换对应行的平均值

temp=ave

(1)

ave

(1)=ave(Line_no)

ave(Line_no)=temp

'打印交换后的数据

Form1.Print"交换后的数据和平均值"

PrintArray

EndSub

PublicSubDataProduce()

DimiAsInteger

DimjAsInteger

'产生5*4数组

Fori=1To5

Forj=1To4

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

Nextj

Nexti

EndSub

PublicSubAverage()

DimiAsInteger

DimjAsInteger

DimsumAsInteger

'计算各行平均值

Fori=1To5

sum=0

Forj=1To4

'******错误4******

sum=a(i,j)

Nextj

ave(i)=sum/4

Nexti

'将数组和平均值打印出来

Form1.Print"原始数据和平均值"

PrintArray

EndSub

PublicSubPrintArray()

DimiAsInteger

DimjAsInteger

Fori=1To5

Forj=1To4

Form1.Printa(i,j);Spc(3);

Nextj

Form1.Print"平均值=";ave(i)

Nexti

EndSub

[题15]Modify.bas模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来,但不完整,请在横线上填入必要的内容,使其完整。

Modify.bas模块中的SCSJ过程是产生数据,数据的取值范围为-10~10之间的随机数。

PrivateConstn=10

Privatea(1Ton)AsInteger

'TJ过程是将一批数据中小于零的数及它们的积打印出来

'数据由SCSJ过程产生,数据的取值范围为-10~10之间的随机整数数

PublicSubTJ()

DimiAsInteger

DimtAsSingle

--------1--------

Fori=1To10

If--------2--------Then

t=t*a(i)

EndIf

Nexti

Form1.Print"T=";t

EndSub

PublicSubSCSJ()

Randomize

Form1.Print"原始数据"

DimiAsInteger

DimjAsInteger

Fori=1Ton

'随机产生0或1,为0时取负,为1时取正

j=Int(Rnd*2)

If------3-----ThenJ=-1

a(i)=j*Int(Rnd*(n+1))

Form1.Printa(i);

Nexti

Form1.Print

EndSub

[题16]Modify.bas模块中的calculate过程是产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来.

Publicsubcalculate()

Dima(1to100)asinteger

Dimx(1to10)asinteger

DimIasinteger,pasinteger

‘产生100个[0,99]范围内的随机整数

‘每行10个打印出来

forI=1to100

‘**********1**********

a(i)=rnd*100

ifa(i)<10then

form1.printspace

(2);a(i)

else

form1.printspace

(1);a(i);

endif

ifImod10=0thenform1.print

nextI

‘统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数

‘并将统计结果保存在数组x

(1),x

(2),……,x(10)中,将统计结果打印出来

forI=1to100

‘**********2**********

p=int(a(i)/10)‘求个位上的数字

ifp=0thenp=10

‘**********3**********

x(p)=x(p)-1

nextI

form1.print“统计结果”

forI=1to10

p=I

ifI=10thenp=0

‘**********4**********

form1.print“个位数为”+str(p)+”共 “+str(x(p))+”个”

nextI

endsub

[题17]Modify

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

当前位置:首页 > 高等教育 > 军事

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

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