VB题.docx
《VB题.docx》由会员分享,可在线阅读,更多相关《VB题.docx(28页珍藏版)》请在冰豆网上搜索。
![VB题.docx](https://file1.bdocx.com/fileroot1/2023-1/21/a918a304-5aeb-4ffe-bf04-0088a1cdafd8/a918a304-5aeb-4ffe-bf04-0088a1cdafd81.gif)
VB题
编程题
1、求100以内的素数。
PrivateSubCommand1_Click()
DimiAsInteger,mAsInteger,tagAsBoolean
j=0
Form=2To100
tag=True:
Fori=2Tom-1
If(mModi)=0Thentag=False
Nexti
IftagThen
Printm;"";
j=j+1
Ifj=10Thenj=0:
Print
EndIf:
Nextm
EndSub
2、从键盘输入任意长度的字符串,要求将字符顺序倒置,例如,将输入的“ABCDEFG”变换成“GFEDCBA”。
PrivateSubCommand1_Click()
Dima$,I%,c$,d$,n%
a=InputBox("输入字符串")
n=Len(a)
ForI=1ToInt(n/2)
c=Mid(a,I,1)
Mid(a,I,1)=Mid(a,n-I+1,1)
Mid(a,n-I+1,1)=c
NextI
Printa
EndSub
3、计算0~200之间所有能被11或5整除的数之和
、PrivateSubForm_click()
Dimi%,sum%
Print
Fori=0To200
IfiMod5=0OriMod11=0Thensum=sum+i
Nexti
Print"0~200之间所有能被5或100整除的数之和为:
",sum
EndSub
4、输入一年份,判断它是否为闰年,并显示有关信息。
(判断闰年的条件是:
年份能被4整除但不能被100整除,或者能被400整除)
PrivateSubCommand2_Click()
Dimy%
y=Year(Now)
IfyMod4=0AndyMod100<>0OryMod400=0Then
MsgBox(y&"年是闰年")
Else:
MsgBox(y&"年是平年")
EndIf
EndSub
5.输入xyz三个数,按从大到小显示。
PrivateSubCommand1_Click()
Dimx!
y!
z!
x=InputBox("inputx")
y=InputBox("inputy")
z=InputBox("inputz")
Print"xyz"
Print"排序前";x;"";y;"";z
Ifxx=y:
y=t:
Ifxx=z:
z=t:
Ifyy=z:
z=t:
Print"排序后"&x&""&y&""&z
EndSub
6、求s=a+aa+aaa+...aaaaa(n个a),其中a和n的值随机产生,a的范围是[1,9]的整数,n的范围是[5,10]。
如a=3,n=6,则
s=3+33+333+3333+33333+333333。
编程确定n和a的值,并计算s。
PrivateSubCommand1_Click()
Dims!
t!
i!
a%,n%
a=Int(Rnd*9+1)
n=Int(Rnd*6+5)
t=0:
s=0
Print"a=";a,"n=";n
Fori=1Ton
t=t*10+a
s=s+t
Printt;
Nexti
Print
Print"s=";s
EndSub
9、找出被3、5、7除,余数为1的最小的5个正整数。
PrivateSubCommand1_Click()
Dimcountn%,n%
countn=0
n=1
Do
n=n+1
IfnMod3=0AndnMod5=0AndnMod7=0Then
Printn
countn=countn+1
EndIf
LoopUntilcountn=5'或whilecountn<5
EndSub
10、某次歌曲大奖赛,有7个评委。
如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。
PrivateSubCommand1_Click()
Dimmark!
aver!
i%,max1!
min1!
aver=0
Fori=1To7
mark=InputBox("输入第"&i&"位评为打得分")
Ifi=1Then
max1=mark:
min1=mark
Else
Ifmarkmin1=mark
ElseIfmark>max1Then
max1=mark
EndIf
EndIf
aver=aver+mark
Nexti
aver=(aver-mark1-min1)/5
Printaver
EndSub
11、编程显示100~500之间所有的水仙花数之和。
(水仙花数是3位数,其各位数之和等于该数本身)
程序:
PrivateSubCommand1_Click()
Dimi%,j%,k%,sxh,m!
m=0
Fori=1To4
Forj=1To9
Fork=0To9
sxh=i*100+j*10+k
Ifsxh=i^3+j^3+k^3Then
m=sxh+m
EndIf
Nextk
Nextj
Nexti
Print"m=";m
EndSub
13、从键盘输入三角形的三条边a,b,c的值,根据其数值,判断能否构成三角形。
PrivateSubCommand1_Click()
Dimx%,y%,z%
x=Val(InputBox("inputx"))
y=Val(InputBox("inputx"))
z=Val(InputBox("inputx"))
Ifx+y>zAndx+z>yAndz+y>xThen
MsgBox("能构成三角形")
Ifx=yAndy=zThen
MsgBox("是等边三角形")
ElseIfx=yOry=zOrz=xThen
MsgBox("是等腰三角形")
ElseIfSqr(x*x+y*y)=zOrSqr(y*y+z*z)=xOrSqr(x*x+z*z)=yThen
MsgBox("是直角三角形")
Else:
MsgBox("是其他三角形")
EndIf
Else:
MsgBox("不能构成三角形"):
EndIf
EndSub
14、已知数组a(),编程删除a中第5个元素。
数组a中的元素分别为{12,6,4,89,75,63,100,20,31}。
PrivateSubForm_Click()
Dima(),i%,n%
a=Array(12,6,4,89,75,63,100,20,31)
n=UBound(a)
Fori=0Ton
Printa(i);
Nexti
Print
Fori=5Ton
a(i-1)=a(i)
Nexti
n=n-1
ReDimPreservea(n)
Fori=0Ton
Printa(i);
Nexti
Print
End
21、随机产生10个[30,100]内的整数,求最大值、最小值和平均值
。
程序代码如下:
PrivateSubForm_Click()
Dima(1To10)AsInteger,i%,maxa%,mina%,avera!
Fori=1To10
a(i)=Int(Rnd*71+30)
Nexti
mina=a
(1)
maxa=a
(1)
avera=a
(1)
Fori=2To10
Ifa(i)>maxaThenmaxa=a(i)
Ifa(i)avera=avera+a(i)
Nexti
Fori=1To10
Printa(i);
Nexti
Print
Print"max=";maxa,"min=";mina,"aver=";avera/10
EndSub
22、定义三个4×4的二维数组A,B,C,A和B中的元素均随机生成,数组A的范围是1~20,数组B的范围是100~200,数组C是A和B相乘得到的。
请编程生成并输出A,B,C。
PrivateSubForm_Click()
Dima%(1To4,1To4),b%(1To4,1To4),c%(1To4,1To4)
Print"数组A"
Fori=1To4
Forj=1To4
a(i,j)=Int(Rnd*20+1)
PrintTab(j*4);a(i,j);
Nextj
Print
Nexti
Print"数组B"
Fori=1To4
Forj=1To4
b(i,j)=Int(Rnd*100+100)
PrintTab(j*6);b(i,j);
Nextj
Print
Nexti
'Print"数组C";
'Fori=1To4
'Forj=1To4
'c(i,j)=b(i,j)*a(i,j)
'PrintTab(j*4);c(i,j);
'Nextj
'Print
'Nexti
Print"数组C";
Fori=1To4
Forj=1To4
c(i,j)=b(i,j)+a(i,j)
PrintTab(j*6);c(i,j);
Nextj
Print
Nexti
EndSub
30、编程输出n行杨辉三角图形,n由键盘输入。
程序代码如下:
SubCommand1_Click()
Dimn%,i%,j%
n=Val(Text1)
Dima%(1To1000,1To1000)
Fori=1Ton
a(i,1)=1
Nexti
Fori=1Ton
a(i,i)=1
Nexti
Forj=2Toi-1
Fori=3Ton
a(i,j)=a(i-1,j-1)+a(i-1,j)
Nexti
Picture1.Print;
Nextj
Picture1.PrintTab(j*n);a(i,j)
Fori=1Ton
Forj=1Toi
Picture1.Printa(i,j);"";
Nextj
Picture1.Print
Nexti
EndSub
33、编写一个过程计算并输出区间[100,1000]内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。
调用该过程。
(提示:
只能被1和自身整除的自然数称为素数。
)
Functionsushu%(ByValx%)
Dimm%,TagAsBoolean,i%
m=Val(x)
Tag=True
Fori=2Tom-1
If(mModi)=0ThenTag=False
Nexti
IfTagThensushu=x
EndFunction
PrivateSubCommand1_Click()
Dimi%,k%
Fori=100To1000
Ifsushu(i)ThenList1.AddItemi
Nexti
Sum=0
Fork=0ToList1.ListCount-1
Sum=Sum+Val(List1.List(k))
Nextk
Label1="[100,1000]内所有素数和为:
"&Sum
EndSub
35、已知一维数组a()中的元素已排序,分别为{12,15,21,25,27,35,36,39,48,52},编程将30插入数组a,并使a依然有序。
程序代码如下:
PrivateSubForm_load()
Dima(),i%,k%,x%,n%
a=Array(1,4,7,9,12,14,23,56)
n=UBound(a)
Fori=0Ton
List1.AddItema(i)
Nexti
EndSub
PrivateSubcommand1_Click()
x=Val(Text1)
Fork=0ToList1.ListCount-1
IfxNextk
List1.AddItemx,k
EndSub
41、编一个冒泡排序法子过程,对已知的若干整数按递减次序排列。
提示:
子过程的形式为subsort1(a%())。
SubSort1(a())
DimiMin%,i%,j%,t%
Fori=0ToUBound(a)-1
Forj=0ToUBound(a)-1-i
Ifa(j)>a(j+1)Thent=a(j):
a(j)=a(j+1):
a(j+1)=t
Nextj
Nexti
Fori=0ToUBound(a)
Printa(i);
Nexti
Print
EndSub
PrivateSubForm_Click()
Dimb()
Print"排序前"
b=Array(56,32,79,21,5,69,98,14,3,15)
Fori=0ToUBound(b)
Printb(i);
Nexti
Print
Print"排序后"
CallSort1(b())
EndSub
42、编一个选择排序法子过程,对已知的若干整数按递减次序排列。
提示:
子过程的形式为subsort1(a%())。
SubSort1(a())
DimiMin%,i%,j%,t%
Fori=0ToUBound(a)-1
iMin=i
Forj=i+1ToUBound(a)
Ifa(j)Nextj
t=a(i):
a(i)=a(iMin):
a(iMin)=t
Nexti
Fori=0ToUBound(a)
Printa(i);
Nexti
Print
EndSub
PrivateSubForm_Click()
Dimb(),i%
Print"排序前"
b=Array(56,32,79,21,5,69,98,14,3,15)
Fori=0ToUBound(b)
Printb(i);
Nexti
Print
Print"排序后"
CallSort1(b())
EndSub
43、编一个选择排序法子过程,对已知的若干整数按递增次序排列。
提示:
子过程的形式为subsort1(a%())。
PrivateSubCommand1_Click()
DimiA(1To10)
n=6
iA
(1)=8:
iA
(2)=6:
iA(3)=9:
iA(4)=3:
iA(5)=2:
iA(6)=7
Fori=1Ton-1'进行n-1遍比较
iMin=i'对第i遍比较时,初始假定第i个元素最小
Forj=i+1Ton'在数组i~n个元素中选最小元素的下标
IfiA(j)Nextj
t=iA(i)'i~n个元素中选出的最小元素与第i个元素交换
iA(i)=iA(iMin)
iA(iMin)=t
Fork=1Ton
PrintiA(k);
Nextk
Print
Nexti
44、编一个冒泡排序法子过程,对已知的若干整数按递增次序排列。
提示:
子过程的形式为subsort1(a%())。
PrivateSubCommand1_Click()
DimiA(1To10)
n=6
iA
(1)=8:
iA
(2)=6:
iA(3)=9:
iA(4)=3:
iA(5)=2:
iA(6)=7
Print"冒泡法排序数据变化过程"
Print"8,6,9,3,2,7"
Print"-----------------------------"
Fori=1Ton-1'进行n-1遍比较
'对第i遍比较时,初始假定第i个元素最小
Forj=nToi+1Step-1'在数组i~n个元素中选最小元素的下标
IfiA(j)t=iA(j)
iA(j)=iA(j-1)
iA(j-1)=t
EndIf
Nextj
Print"i=";i;Spc(i*3-3);
Fork=iTon
PrintiA(k);
Nextk
Print
Nexti
EndSub
31、声明一个整型的二维数组a(1to4,1to4),用随机函数产生各元素,范围介于[1,20]之间,编程将第1行和第3行对应元素交换。
PrivateSubForm_Click()
Dima%(1To4,1To4),i%,j%
Print"排序前"
Fori=1To4
Forj=1To4
a(i,j)=Int(Rnd*20+1)
PrintTab(j*4);a(i,j);
Nextj
Print
Nexti
Print"排序后"
Forj=1To4
t=a(1,j):
a(1,j)=a(3,j):
a(3,j)=t
Nextj
Fori=1To4
Forj=1To4
PrintTab(j*4);a(i,j);
Nextj
Print
Nexti
EndSub
38、随机产生10个[30,100]内的整数,求最小值及所对应的下标。
21.随机产生30~100(包括30、100)中的十个正整数,求最大值、最小值、平均值,并显示整个数组的值和结果。
PrivateSubForm_Click()
Dima(1To10)AsInteger,i%,maxa%,mina%,avera!
Fori=1To10
a(i)=Int(Rnd*71+30)
Nexti
mina=a
(1)
maxa=a
(1)
avera=a
(1)
Fori=2To10
Ifa(i)>maxaThenmaxa=a(i)
Ifa(i)avera=avera+a(i)
Nexti
Fori=1To10
Printa(i);
Nexti
Print
Print"max=";maxa,"min=";mina,"aver=";avera/10
EndSub
15、随机生成一个整型的二维数组,范围在[10,20]之间,以上三角形式输出该数组。
28、随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形式输出该数组。
15、随机生成一个整型的二维数组,范围在[10,20]之间,以上三角形式输出该数组。
(下三角、全部元素)
Dima%(4,4),i%,j%
PrivateSubForm_load()
Fori=0To4
Forj=0To4
a(i,j)=Int(Rnd*11+10)
Nextj
Nexti
EndSub
PrivateSubCommand1_Click()
Picture1.Cls
Fori=0To4
Forj=0To4
Picture1.Printa(i,j);"";
Nextj
Picture1.Print
Nexti
EndSub
PrivateSubCommand2_Click()
Picture2.Cls
Fori=0To4
Forj=iTo4
Picture2.Printa(i,j);"";
Nextj
Picture2.Print
Nexti
EndSub
PrivateSubCommand3_Click()
Picture3.Cls
Fori=0To4
Forj=0Toi
Picture3.Printa(i,j);"";
Nextj
Picture3.Print
Nexti
EndSub
29、有10个评委对歌手进行打分(分数存放在A数组中)要求编程计算歌手平均得分(按去掉一个最高分和一个最低分的计算办法计算)。
a=Array(98,97,95,91,90,99,93,94,93,96)
10、某次歌曲大奖赛,有7个评委。
如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。
PrivateSubForm_Click()
Dima(6)As