中国海洋大学VB上级考试完美无缺答案.docx

上传人:b****2 文档编号:18016193 上传时间:2023-08-05 格式:DOCX 页数:34 大小:53.51KB
下载 相关 举报
中国海洋大学VB上级考试完美无缺答案.docx_第1页
第1页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第2页
第2页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第3页
第3页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第4页
第4页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第5页
第5页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第6页
第6页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第7页
第7页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第8页
第8页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第9页
第9页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第10页
第10页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第11页
第11页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第12页
第12页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第13页
第13页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第14页
第14页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第15页
第15页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第16页
第16页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第17页
第17页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第18页
第18页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第19页
第19页 / 共34页
中国海洋大学VB上级考试完美无缺答案.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

中国海洋大学VB上级考试完美无缺答案.docx

《中国海洋大学VB上级考试完美无缺答案.docx》由会员分享,可在线阅读,更多相关《中国海洋大学VB上级考试完美无缺答案.docx(34页珍藏版)》请在冰点文库上搜索。

中国海洋大学VB上级考试完美无缺答案.docx

中国海洋大学VB上级考试完美无缺答案

1.某数组有20个元素,其值为随机产生的两位整数。

现要求将前10个元素与后10个元素对换。

即第1个元素与第20个元素互换,第2个数与第19个元素互换,…,第10个元素与第11个元素互换。

在窗体上输出数组原来各元素的值与对换后各元素的值。

OptionExplicit:

OptionBase1

Dima(20)AsInteger,iAsInteger,tAsInteger

PrivateSubForm_Click()

Print"原始数组是:

"

Randomize

Fori=1To20

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

Printa(i);

IfiMod10=0ThenPrint

Nexti

Print"现在数组是:

"

Fori=1To10

t=a(i):

a(i)=a(21-i):

a(21-i)=t

Nexti

Fori=1To20

Printa(i);

IfiMod10=0ThenPrint

Nexti

EndSub

2.从数组中删除一个数。

先定义一个一维数组,大小、数组的值自定。

从键盘上输入一个数,若这个数在数组当中,就把它删除;若这个数不在数组中,提示“该数不在数组中”

注意:

1)如果数组中存在多个与该数相同的元素,每一个都能删除;

2)能实现多次删除

OptionExplicit

Dima()AsInteger

PrivateSubCommand1_Click()

DimiAsInteger

ReDima(9)AsInteger

Print"原来数组定为:

"

Randomize

Fori=0To9

a(i)=Int(Rnd*15)

Printa(i);

Nexti

Print

EndSub

PrivateSubCommand2_Click()

DimiAsInteger,jAsInteger,nAsInteger,kAsInteger,flagAsBoolean

n=InputBox("查找的数是:

")

flag=False

Do

Ifa(i)=nThen

j=i:

flag=True

Fork=jToUBound(a)-1

a(k)=a(k+1)

Nextk

ReDimPreservea(UBound(a)-1)

i=i-1

EndIf

i=i+1

LoopWhile(i<=UBound(a))

Ifflag=FalseThen

MsgBoxn&"不在该数组中"

Else

Print"删除"&n&"后的数组是:

"

Fori=0ToUBound(a)

Printa(i);

Nexti

Print

EndIf

EndSub

3.数组a中存放着升序排列的数据,使用array赋值,将inputbox输入的新数插入到数组中,插入后数组仍有序。

注意:

要求利用动态数组,能够实现多次插入

OptionExplicit:

OptionBase1

Dima()

PrivateSubCommand1_Click()

DimiAsInteger

a=Array(8,18,28,38,48,58,68,78,88,98)

Print"原始数组a(i)定为:

";

Fori=1To10

Printa(i);

Next

Print

EndSub

PrivateSubCommand2_Click()

DimXAsInteger,nAsInteger,iAsInteger

Randomize

X=Int(Val(InputBox("插入值X","输入",Int(Rnd*90+10))))

Print"插入";X;"后数组为:

";

n=UBound(a)

ReDimPreservea(n+1)

Fori=nTo1Step-1

Ifa(i)>XThen

a(i+1)=a(i)

Else

a(i+1)=X

ExitFor

EndIf

Next

Ifi=0Thena

(1)=X

Fori=1ToUBound(a)

Printa(i);

Next

Print

EndSub

4.6个评委为4位歌手打分,分数介于1-100之间。

去掉一个最高分,一个最低分,求出每位选手的最后得分。

将4位歌手得分从高到低排列输出,同时输出该选手的编号。

如:

歌手395分

歌手187分

歌手480分

歌手270分

OptionExplicit:

OptionBase1

Dima(4,6)

PublicTypecandidates

numberAsString*3

scoreAsString*3

EndType

PrivateSubCommand1_Click()

Dimb(4)Ascandidates,iAsInteger,jAsInteger,maxAsInteger,minAsInteger,sumAsInteger,tAscandidates

Fori=1To4

sum=0

max=a(i,1)

min=a(i,1)

Forj=1To6

Ifa(i,j)>maxThenmax=a(i,j)

Ifa(i,j)

sum=sum+a(i,j)

Nextj

sum=(sum-max-min)/(6-2)

b(i).number="歌手"&i:

b(i).score=sum&"分"

Nexti

Fori=1To3

Forj=i+1To4

Ifb(i).score

t=b(i):

b(i)=b(j):

b(j)=t

EndIf

Nextj

Nexti

Picture1.Print"选手的得分由高到低为:

"

Fori=1To4

Picture1.Printb(i).number,b(i).score

Nexti

EndSub

PrivateSubForm_Load()

DimiAsInteger,jAsInteger

Randomize

Fori=1To4

Forj=1To6

a(i,j)=Int(31*Rnd+70)

Nextj

Nexti

Command1.Caption="评委打分"

Picture1.FontSize=16

EndSub

5.编写函数求一元二次方程ax^2+bx+c=0的解。

注意:

要求考虑方程有两相等实根、两不等实根和两个虚根的情况。

OptionExplicit

PrivateSubCommand1_Click()

DimaAsSingle,bAsSingle,cAsSingle

a=Val(Text1.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

Printgetresult(a,b,c)

EndSub

PublicFunctiongetresult(ByValaAsSingle,ByValbAsSingle,ByValcAsSingle)AsString

DimxAsSingle,mAsSingle,yAsSingle

x=-b/(2*a)

m=b^2-4*a*c

y=Sqr(Abs(m))/2/a

SelectCasem

CaseIs>0

getresult="x1="&x+y&Chr(13)&"x2="&x-y

CaseIs=0

getresult="x1=x2="&x

CaseIs<0

getresult="x1="&x&"+"&y&"i"&Chr(13)&"x2="&x&"-"&y&"i"

EndSelect

EndFunction

PrivateSubForm_Load()

Text1.Text="":

Text2.Text="":

Text3.Text=""

EndSub

6.任意输入一组字符,统计出大写字母多少个,小写字母多少个,数字多少个?

要求用过程实现。

OptionExplicit

PrivateSubCommand1_Click()

DimSAsString

S=Text1.Text

Printstatistics(S)

EndSub

PublicFunctionstatistics(SAsString)AsString

DimiAsInteger,largeAsInteger,smallAsInteger,numAsInteger

Fori=1ToLen(S)

IfAsc(Mid(S,i,1))>=Asc("A")AndAsc(Mid(S,i,1))<=Asc("Z")Then

large=large+1

Else

IfAsc(Mid(S,i,1))>=Asc("a")AndAsc(Mid(S,i,1))<=Asc("z")Then

small=small+1

Else

IfAsc(Mid(S,i,1))>=48AndAsc(Mid(S,i,1))<=57Then

num=num+1

EndIf

EndIf

EndIf

Nexti

statistics="大写字母:

"&large&"个"&Chr(13)&"小写字母:

"&small&"个"&Chr(13)&"数字:

"&num&"个"

EndFunction

7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。

OptionExplicit:

OptionBase1

PrivateSubForm_Click()

DimA(5,5)AsInteger,iAsInteger,jAsInteger

DimsAsInteger,s1AsInteger,s2AsInteger,s3AsInteger,s4AsInteger

Randomize

Fori=1To5

Forj=1To5

Ifi=jOri+j=6Then

A(i,j)=1

Else

A(i,j)=Int(Rnd*8+2)

EndIf

Nextj

Nexti

Fori=1To5

Forj=1To5

PrintA(i,j);

Nextj

Print

Nexti

Print

Fori=1To5

s1=s1+A(i,1)

s2=s2+A(i,5)

Nexti

Forj=2To4

s3=s3+A(1,j)

s4=s4+A(5,j)

Nextj

s=s1+s2+s3+s4

Print"四周元素之和是:

"&s

EndSub

8.编写一个函数,能将字母按下列规律译成密码:

A<-->Za<-->z

B<-->Yb<-->y

即第1个字母与第26个字母互换,第i个字母与第(26-i+1)个字母互换。

在文本框中任意输入一个字符串,调用该函数将密码显示在另一个文本框中。

OptionExplicit

PrivateSubCommand1_Click()

DimSAsString

S=Text1.Text

Text2.Text=encrypt(S)

EndSub

PrivateFunctionencrypt(SAsString)AsString

DimiAsInteger,aAsString,bAsString

Fori=1ToLen(S)

a=Mid(S,i,1)

IfAsc(a)>=97AndAsc(a)<=122Then

b=Chr(219-Asc(a))

ElseIfAsc(a)>=65AndAsc(a)<=90Then

b=Chr(155-Asc(a))

EndIf

encrypt=encrypt&b

Nexti

EndFunction

9.编写2个函数,分别求两个正整数的最大公约数和最小公倍数,用户任意输入两个数,采用函数嵌套调用,该函数将它们在窗体显示。

PrivateSubForm_Click()

DimAAsInteger,BAsInteger

Do

A=InputBox("请输入第一个数:

")

IfA<=0ThenMsgBox"请输入正整数"

LoopUntilA>0

Do

B=InputBox("请输入第二个数:

")

IfB<=0ThenMsgBox"请输入正整数"

LoopUntilB>0

Print"两个数分别为:

";A;B

Print"最大公约数为:

";GCD(A,B)

Print"最小公倍数为:

";LCM(A,B)

EndSub

PrivateFunctionGCD(AAsInteger,BAsInteger)AsInteger

DimXAsInteger,YAsInteger,rAsInteger

X=IIf(A>=B,A,B)

Y=IIf(A<=B,A,B)

Do

r=XModY

Ifr=0ThenExitDo

X=Y:

Y=r

Loop

GCD=Y

EndFunction

PrivateFunctionLCM(AAsInteger,BAsInteger)AsInteger

LCM=A*B/GCD(A,B)

EndFunction

10.编写计算阶乘的Function过程,利用ex的下列公式计算e(直到最后一项小于10-6为止)的近似值。

ex≈1+x/1!

+x2/2!

+x3/3!

+…+xn/n!

OptionExplicit

PrivateSubForm_Click()

DimxAsInteger,nAsInteger,sAsDouble

x=InputBox("请输入一个0.5~1.5的数x:

")

Ifx>=1.5Orx<=0.5ThenMsgBox"数据溢出"

Do

s=s+(x^n)/(fact(n))

n=n+1

LoopUntilx^n/(fact(n))<10^(-6)

Prints

EndSub

PublicFunctionfact(nAsInteger)AsLong

DimiAsInteger,sAsLong

s=1

Fori=1Ton

s=s*i

Nexti

fact=s

EndFunction

11.输入整数N,显示具有N行的杨辉三角形,要求按正三角形的形式在图片框中显示。

OptionExplicit

PrivateSubForm_click()

Dima()AsInteger,b()AsString,iAsInteger,jAsInteger,nAsInteger,kAsInteger

n=InputBox("请输入图形行数")

ReDima(n+1,n+1),b(n+1,n+1)

k=6

Fori=1Ton

PrintString((n-i)*k/2+1,"");

Forj=1Toi

a(i,1)=1

a(i,i)=1

a(i+1,j+1)=a(i,j)+a(i,j+1)

b(i,j)=Trim(Str(a(i,j)))

Printb(i,j);String(k-Len(b(i,j)),"");

Nextj

Print

Nexti

EndSub

12.编写一个过程,输出以下菱形图形:

A

BBB

CCCCC

DDDDDDD

CCCCC

BBB

A

主程序输入一个奇数(>=3),调用过程在窗体上输入图形。

OptionExplicit

PrivateSubCommand1_Click()

DimnAsInteger

n=InputBox("请输入行数n")

IfnMod2=0Orn<2Then

MsgBox"请输入大于2的奇数"

Else

Calldiamond(n)

EndIf

EndSub

PrivateSubdiamond(xAsInteger)

DimiAsInteger,mAsInteger,tAsInteger

m=30

Fori=1To(x+1)/2

m=m-1

t=i

PrintTab(m);String(2*t-1,Chr(64+t))

Nexti

Fori=(x+1)/2+1Tox

m=m+1

t=x+1-i

PrintTab(m);String(2*t-1,Chr(64+t))

Nexti

EndSub

13.编写一个将十进制转换为二进制字符串输出的函数。

调用函数计算用户输入一个十进制数,在文本框中输出二进制值。

注意:

输入数据为负数,应该将符号位输出

如-13结果-1101

OptionExplicit

PrivateSubCommand1_Click()

Dimn%

n=Val(Text1.Text)

Text2.Text=Bid(n)

EndSub

PublicFunctionBid(xAsInteger)AsString

DimrAsInteger,mAsInteger

m=IIf(x>=0,x,-x)

r=mMod2

DoWhilem>=1

Bid=Str(r)&Bid

m=m\2

r=mMod2

Loop

Ifx<0ThenBid="-"&Bid

EndFunction

14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。

将排序前后的数据显示出来。

OptionExplicit:

OptionBase1

Dima()AsInteger,nAsInteger

PrivateSubCommand1_Click()

DimiAsInteger

n=InputBox("请输入正整数n")

ReDima(n)

Print"排序前:

"

Fori=1Ton

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

Printa(i);

Nexti

Print

EndSub

PrivateSubCommand2_Click()

DimiAsInteger,jAsInteger,tAsInteger

Print"用比较交换法排序:

"

Fori=1Ton-1

Forj=i+1Ton

Ifa(j)

t=a(i):

a(i)=a(j):

a(j)=t

EndIf

Nextj

Printa(i);

Nexti

Printa(n)

EndSub

PrivateSubCommand3_Click()

DimiAsInteger,jAsInteger,tAsInteger

Print"用冒泡法排序:

"

Fori=1Ton-1

Forj=1Ton-i

Ifa(j)>a(j+1)Then

t=a(j):

a(j)=a(j+1):

a(j+1)=t

EndIf

Nextj

Nexti

Fori=1Ton

Printa(i);

Nexti

EndSub

15.

编写程序,在窗体上输出3~100之间的所有素数。

要求每行显示4个数

OptionExplicit

PrivateSubCommand1_Click()

Print"3-100之间的所有素数为:

"

DimnAsInteger

Forn=3To100

Ifisprime(n)ThenCallprtprime(n)

Nextn

EndSub

PrivateFunctionisprime(aAsInteger)AsBoolean

DimiAsInteger

isprime=True

Fori=2ToCInt(Sqr(a))

IfaModi=0Then

isprime=False

ExitFor

EndIf

Nexti

EndFunction

PrivateSubprtprime(bAsInteger)

StaticcntAsInteger

Printb;

cnt=cnt+1

IfcntMod4=0ThenPrint

EndSub

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

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2