中国海洋大学VB上级考试完美无缺答案.docx
- 文档编号:18016193
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:34
- 大小:53.51KB
中国海洋大学VB上级考试完美无缺答案.docx
《中国海洋大学VB上级考试完美无缺答案.docx》由会员分享,可在线阅读,更多相关《中国海洋大学VB上级考试完美无缺答案.docx(34页珍藏版)》请在冰点文库上搜索。
中国海洋大学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
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
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
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
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国海洋 大学 VB 上级 考试 完美无缺 答案