Visual Basic程序设计上机考试试题及答案.docx
- 文档编号:711755
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:17
- 大小:18KB
Visual Basic程序设计上机考试试题及答案.docx
《Visual Basic程序设计上机考试试题及答案.docx》由会员分享,可在线阅读,更多相关《Visual Basic程序设计上机考试试题及答案.docx(17页珍藏版)》请在冰点文库上搜索。
VisualBasic程序设计上机考试试题及答案
1.某数组有20个元素,其值为随机产生的两位整数。
现要求将前10个元素与后10个元素对换。
即第1个元素与第20个元素互换,第2个数与第19个元素互换,…,第10个元素与第11个元素互换。
在窗体上输出数组原来各元素的值与对换后各元素的值。
OptionExplicit
Dima(1To20)AsInteger,iAsInteger,jAsInteger,tAsInteger
PrivateSubForm_Load()
Show
Print"原始数组是:
"
Randomize
Fori=1To20
a(i)=Int(Rnd*90)+10
Printa(i);
Nexti
Print"现在数组是:
"
Fori=1To10
j=21-i
t=a(i):
a(i)=a(j):
a(j)=t
Nexti
Fori=1To20
Printa(i);
Nexti
EndSub
2.从数组中删除一个数。
先定义一个一维数组,大小、数组的值自定。
从键盘上输入一个数,若这个数在数组当中,就把它删除;若这个数不在数组中,提示“该数不在数组中”
注意:
1)如果数组中存在多个与该数相同的元素,每一个都能删除;
2)能实现多次删除
OptionExplicit
Dima()AsInteger,iAsInteger,jAsInteger,nAsInteger,kAsInteger,mAsInteger
DimfAsBoolean
PrivateSubCommand1_Click()
n=InputBox("查找的数是:
","请输入")
i=0:
f=False
Do
Ifa(i)=nThen
j=i:
f=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))
Iff=FalseThen
MsgBoxn&"不在该数组中"
Else
Print"删除"&n&"后的数组是:
"
Fori=0ToUBound(a)
Printa(i);
Nexti
EndIf
EndSub
PrivateSubForm_Load()
Show
ReDima(9)AsInteger
m=1
Print"原来数组为:
"
Fori=0To9
a(i)=InputBox("请输入第"&m&"个数:
")
Printa(i);
m=m+1
Nexti
EndSub
3.数组a中存放着升序排列的数据,使用array赋值,将inputbox输入的新数插入到数组中,插入后数组仍有序。
注意:
要求利用动态数组,能够实现多次插入
OptionExplicit
Dima()AsVariant,iAsInteger,nAsInteger,jAsInteger,bAsInteger,cAsInteger
PrivateSubCommand1_Click()
ReDimPreservea(c+1)
n=InputBox("插入的数是","请输入")
Fori=0Toc
b=n-a(i)
Ifb<=0Then
Forj=c+1Toi+1Step-1
a(j)=a(j-1)
Nextj
a(i)=n
ExitFor
EndIf
Nexti
Ifi=c+1Thena(c+1)=n
Fori=0Toc+1
Printa(i);
Nexti
c=UBound(a)
EndSub
PrivateSubForm_Load()
Show
ReDima(9)
a=Array(3,6,9,11,15,19,33,44,56,67)
c=UBound(a)
Fori=0Toc
Printa(i);
Nexti
EndSub
4.6个评委为4位歌手打分,分数介于1-100之间。
去掉一个最高分,一个最低分,求出每位选手的最后得分。
将4位歌手得分从高到低排列输出,同时输出该选手的编号。
如:
歌手395分
歌手187分
歌手480分
歌手270分
OptionExplicit
Dima(4)AsInteger,m(4)AsInteger,iAsInteger,jAsInteger,tAsInteger,minAsInteger,maxAsInteger,pAsInteger
Dims(4)AsInteger
PrivateSubForm_Load()
Show
Fori=1To4
s(i)=0
min=100:
max=1
Forj=1To6
a(i)=InputBox("第"&j&"个评委给"&i&"打分1-100")
s(i)=s(i)+a(i)
Ifa(i)>maxThenmax=a(i)
Ifa(i) Nextj a(i)=(s(i)-min-max)/4 m(i)=a(i) Nexti Fori=1To3 p=i Forj=i+1To4 Ifa(j)>a(p)Thenp=j Nextj t=a(i): a(i)=a(p): a(p)=t Nexti Fori=1To4 Forj=1To4 Ifa(i)=m(j)Then Print"歌手"&j&""&a(i)&"分" ExitFor EndIf Nextj Nexti EndSub 5.把文本框1、文本框2指定的范围内的所有素数添加到列表框中,并选中列表框数据中最后一位是9的所有数据(设定selected属性),把它们的和值输出。 OptionExplicit DimaAsLong,bAsLong,iAsInteger,jAsInteger,kAsInteger,sAsInteger PrivateSubCommand1_Click() a=Text1.Text: b=Text2.Text Fori=aTob Forj=2Toi-1 IfiModj=0ThenExitFor Nextj Ifj=iThen List1.AddItemi IfRight(i,1)=9ThenList1.Selected(k)=True: s=s+i k=k+1 EndIf Nexti Label3.Caption="列表框数据中最后一位是9的所有数据和为: "&s EndSub 6.任意输入一组字符,统计出大写字母(65-90)多少个,小写字母(97-122)多少个,数字(48-57)多少个? 要求用过程实现。 OptionExplicit DimaAsString,mAsInteger,jAsInteger,nAsInteger,iAsInteger,bAsString PrivateSubCommand1_Click() zf Label1.Caption="大写字母"&m&"个"&"小写字母"&n&"个"&"数字"&j&"个" EndSub PrivateFunctionzf() a=Text1.Text Fori=1ToLen(a) b=Asc(Mid(a,i,1)) Ifb>=48Andb<=57Thenj=j+1 Ifb>=65Andb<=90Thenm=m+1 Ifb>=97Andb<=122Thenn=n+1 Nexti EndFunction PrivateSubForm_Load() EndSub 7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。 OptionExplicit OptionBase1 Dima(5,5)AsInteger,iAsInteger,jAsInteger,sAsInteger PrivateSubForm_Load() Show Randomize Fori=1To5 Forj=1To5 a(i,j)=Int(Rnd*100+1) Ifi=1Andj=1Thena(i,j)=1 Ifi=1Andj=5Thena(i,j)=1 Ifi=5Andj=1Thena(i,j)=1 Ifi=5Andj=5Thena(i,j)=1 Printa(i,j); Nextj Print: Print Nexti Fori=1To5 s=s+a(1,i)+a(5,i) Nexti Fori=2To4 s=s+a(i,1)+a(5,i) Nexti List1.AddItems EndSub 8.编写一个函数,能将字母按下列规律译成密码: A<-->Za<-->z B<-->Yb<-->y 即第1个字母与第26个字母互换,第i个字母与第(26-i+1)个字母互换。 在文任意输入一个字符串,调用该函数将密码显示在另一个文本框中。 OptionExplicit DimaAsString,iAsInteger,bAsInteger PrivateSubCommand1_Click() yima EndSub PrivateFunctionyima() a=Text1.Text Fori=1ToLen(a) b=Asc(Mid(a,i,1)) Ifb<=90ThenText2=Text2+Chr(155-b) Ifb>=97ThenText2=Text2+Chr(219-b) Nexti EndFunction PrivateSubForm_Load() EndSub 9.编写2个函数,分别求两个正整数的最大公约数和最小公倍数,用户任意输入两个数,采用函数嵌套调用,该函数将它们在窗体显示。 PrivateFunctiongy() a=Val(Text1.Text): b=Val(Text2.Text) Ifa c=a: a=b: b=c EndIf Do IfaModb=0ThenExitDo c=b b=aModb a=c Loop gy=b EndFunction PrivateFunctiongb() a=Val(Text1.Text): b=Val(Text2.Text) gb=a*b/gy EndFunction PrivateSubCommand2_Click() PrintText1.Text&"和"&Text2.Text&"的最小公倍数为: "&gb EndSub PrivateSubForm_Load() EndSub 10.编写计算阶乘的Function过程,利用ex的下列公式计算e(直到最后一项小于10-6为止)的近似值。 OptionExplicit DimjAsInteger,bAsLong,iAsInteger PrivateSubCommand1_Click() Label1.Caption="e的近似值为: "&jc+1 EndSub PublicFunctionjc() i=1 b=1 Do Forj=1Toi b=b*j Nextj jc=jc+1/b i=i+1 LoopUntil1/b<10^(-6) EndFunction PrivateSubForm_Load() EndSub 11.输入整数N,显示具有N行的杨辉三角形,要求按正三角形的形式在图片框中显示。 OptionExplicit DimiAsInteger,jAsInteger,kAsInteger,nAsInteger,mAsInteger PrivateSubCommand1_Click() tu EndSub PrivateSubForm_Load() n=InputBox("请输入一个奇数>=3","请输入") IfnMod2=0Then MsgBox"输入不正确" n=InputBox("请输入一个奇数>=3","请输入") EndIf EndSub PrivateSubtu() m=1 Fori=1TonStep2 PrintTab((n+1)/2-m+1); Forj=1Toi PrintChr(65+k); Nextj k=k+1 m=m+1 Print Nexti Fori=n-2To1Step-2 PrintTab((n+1)/2-m+3); Forj=1Toi PrintChr(65+k-2); Nextj k=k-1 m=m-1 Print Nexti EndSub 12.编写一个过程,输出以下菱形图形: A BBB CCCCC DDDDDDD CCCCC BBB A 主程序输入一个奇数(>=3),调用过程在窗体上输入图形 OptionExplicit PrivateSubForm_Load() WindowState=2 Show Dima()AsInteger,nAsInteger,iAsInteger,jAsInteger,gAsInteger,eAsInteger n=InputBox("请输入杨辉三角的行数: ","请输入") ReDima(n,n) e=80 Fori=1Ton e=e-5: g=e Forj=1Ton Ifj>iThen a(i,j)=0 Else Ifi=jThen a(i,j)=1 Else a(i,j)=a(i-1,j)+a(i-1,j-1) EndIf EndIf Ifa(i,j)=0Then ExitFor Else Picture1.PrintTab(g-10);a(i,j); g=g+10 EndIf Nextj Picture1.Print Nexti EndSub PrivateSubPicture1_Click() EndSub 13..编写一个将十进制转换为二进制字符串输出的函数。 调用函数计算用户输入一个十进制数,在文本框中输出二进制值 OptionExplicit DimmAsInteger,nAsInteger,rAsInteger,aAsString,kAsInteger PrivateSubCommand1_Click() a=zh Ifk<0Then Print"-"&StrReverse(a) Else PrintStrReverse(a) EndIf EndSub PrivateSubForm_Load() n=InputBox("请输入一个十进制数","请输入") k=n EndSub PrivateFunctionzh() Ifn<0Thenn=-n m=n DoWhilem>0 n=n\2 r=mMod2 zh=zh&r m=n Loop EndFunction 14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。 将排序前后的数据显示出来。 OptionExplicit OptionBase1 Dima()AsVariant,nAsInteger,iAsInteger,pAsInteger,tAsInteger,jAsInteger PrivateSubCommand1_Click() Print Print"排序后的数据: " Fori=1Ton-1 p=i Forj=i+1Ton
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual Basic程序设计上机考试试题及答案 Basic 程序设计 上机 考试 试题 答案