VB编程题完整版.docx
《VB编程题完整版.docx》由会员分享,可在线阅读,更多相关《VB编程题完整版.docx(16页珍藏版)》请在冰豆网上搜索。
VB编程题完整版
(1)选择结构
(2)循环结构(3)数组(4)过程
1.输入3个数,输出最大的数
2.有一元二次方程:
aX2+bX+c=0,依次输入a,b,c,判断此方程是否有实根
3.输入一个百分制的成绩,若大于等于60,则用消息框弹出,显示“恭喜!
成绩通过!
”,若小于60,则弹出消息框,显示“抱歉!
成绩没有通过!
”
4.输入一年份,判断它是否为闰年,并显示有关信息。
(判断闰年的条件是:
年份能被4整除但不能被100整除,或者能被400整除)
5.输入学生的百分制成绩,转换输出为五级制成绩,90~100分转换为优秀,80~89转换为良好,70~79转换为中等,60~69转换为及格,0~60转换为不及格。
6.随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。
例如,产生246,输出是642。
7.输入两个整数,求它们的最大公约数。
8.编程求200--400范围内5的倍数或7的倍数之和。
(一个数如果同时是7和5的倍数,则只能加一次。
。
9.计算100~300之间所有能被3和7整除的数之和
10.分别统计1-100中,满足3的倍数、7的倍数的数各有多少。
11.某次歌曲大奖赛,有7个评委。
如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。
12.输入一串字符,统计其中字母A(不区分大小写)出现的次数。
13.我国目前有13亿人口,按人口年增长率%计算,多少年后我国人口将超过26亿。
14.小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少
15.求100以内的素数
16.百元买百鸡问题。
假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。
17.编程求斐波那契数列前11项。
(斐波那契数列:
F(0)=f
(1)=1,F(n)=F(n-1)+F(n-2)n>=2)
18.将输入的字符串以反序显示。
例如:
输入“ASDFGT”,显示“TGFDSA”
19.随机产生10个[30,100]内的整数,求最大值及所对应的下标
20.随机产生10个[30,100]内的整数,求最大值、最小值和平均值。
21.随机产生10个[30,100]内的整数,求最小值及所对应的下标。
22.随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形式输出该数组。
23.随机产生10个1~100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。
24.利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出该矩阵所有数据之和
25.已知有序数组a(),编程插入x(x的值为14)。
数组a中的元素分别为{12,6,4,89,75,63,100,20,31}。
26.编写一函数,计算Double类型一维数组所有元素的平均值。
27.用函数过程求表达式1+1/2+1/3+1/4+…+1/n的和.
28.编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。
29.编一个函数,求一维数组a中的最大值,函数的形参自己确定。
30.编写一个过程计算并输出区间[100,1000]内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。
调用该过程。
(提示:
只能被1和自身整除的自然数称为素数。
)
1.输入3个数,输出最大的数
PrivateSubCommand1_Click()
x=InputBox("键入第一个数")
y=InputBox("键入第二个数")
z=InputBox("键入第三个数")
Max=x
IfMaxIfMaxPrint"最大值";Max
EndSub
2.有一元二次方程:
aX2+bX+c=0,依次输入a,b,c,判断此方程是否有实根
PrivateSubCommand1_Click()
Dima,b,c,n
a=Text1
b=Text2
c=Text3
n=b*b-4*a*c
Ifn>=0Then
Label1="方程有根"
Else
Label1="方程无根"
EndIf
EndSub
3.输入一个百分制的成绩,若大于等于60,则用消息框弹出,显示“恭喜!
成绩通过!
”,若小于60,则弹出消息框,显示“抱歉!
成绩没有通过!
”
PrivateSubForm_Load()
Text1=""
EndSub
PrivateSubCommand1_Click()
Dimn
n=Text1
Ifn>60Then
Val(MsgBox("恭喜!
成绩通过!
"))
Else
Val(MsgBox("抱歉!
成绩没有通过!
"))
EndIf
EndSub
4.4输入一年份,判断它是否为闰年,并显示有关信息。
(判断闰年的条件是:
年份能被4整除但不能被100整除,或者能被400整除)
PrivateSubCommand1_Click()
Dimy%
y=Val(Text1)
IfyMod4=0AndyMod100<>0OryMod400=0Then
MsgBox(y&"年是闰年")
Else
MsgBox(y&"年不是闰年")
EndIf
EndSub
5.输入学生的百分制成绩,转换输出为五级制成绩,90~100分转换为优秀,80~89转换为良好,70~79转换为中等,60~69转换为及格,0~60转换为不及格。
PrivateSubCommand1_Click()
a=Val(InputBox("请输入成绩"))
Ifa>100ThenPrint"超出范围"
Ifa>=90Anda<=100ThenPrint"优秀"
Ifa>=80Anda<90ThenPrint"良好"
Ifa>=70Anda<80ThenPrint"中等"
Ifa>=60Anda<70ThenPrint"及格"
Ifa<60ThenPrint"不及格"
EndSub
6.随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。
例如,产生246,输出是642。
PrivateSubCommand1_Click()
Dimx%,x1%,x2%,x3%
Text1=Int(Rnd*900+100)
x=Val(Text1)
x1=xMod10
x2=(xMod100)\10
x3=x\100
Text2=x1*100+x2*10+x3
EndSub
7.输入两个整数,求它们的最大公约数
privateSubCommand1_Click()
n1=InputBox("输入n")
m1=InputBox("输入m")
Ifm1>n1Then
m=m1:
n=n1
Else
m=n1:
n=m1
EndIf
r=mModn
DoWhiler<>0
m=n
n=r
r=mModn
Loop
Print"mn的最大公约数是:
";n
EndSub
8.编程求200--400范围内5的倍数或7的倍数之和。
(一个数如果同时是7和5的倍数,则只能加一次。
。
PrivateSubCommand1_Click()
Dims1%,s2%,s3%,i%
s1=0
s2=0
Fori=200To400
IfiMod5=0OriMod7=0Then
s1=s1+i
EndIf
Nexti
Fori=200To400
IfiMod5=0AndiMod7=0Then
s2=s2+i
EndIf
Nexti
s3=s1-s2
Prints3
EndSub
9、计算100~300之间所有能被3和7整除的数之和
PrivateSubCommand1_Click()
Dimi
Sum=0
Fori=100To300
IfiMod3=0AndiMod7=0Then
Sum=Sum+i
EndIf
Nexti
PrintSum
EndSub
10、分别统计1-100中,满足3的倍数、7的倍数的数各有多少。
PrivateSubCommand1_Click()
Dimi,s3,s7
s3=0
s7=0
Fori=1To100
IfiMod3=0Then
s3=s3+1
EndIf
Nexti
Fori=1To100
IfiMod7=0Then
s7=s7+1
EndIf
Nexti
Print"3的倍数";s3
Print"7的倍数";s7
EndSub
11、某次歌曲大奖赛,有7个评委。
如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。
PrivateSubCommand1_Click()
Dimmax,a(1To7),min,s
Fori=1To7
a(i)=Val(InputBox("输入第"&i&"个数"))
Nexti
max=a
(1)
min=a
(1)
s=a
(1)
Fori=2To7
Ifa(i)>maxThenmax=a(i)
Ifa(i)s=s+a(i)
Nexti
s=s-min-max
s=s/5
Print"平均分";s
EndSub
12、输入一串字符,统计其中字母A(不区分大小写)出现的次数。
PrivateSubCommand1_Click()
DimcAsString,aAsInteger
b=InputBox("请输入字符")
Fori=1ToLen(b)
c=UCase(Mid(b,i,1))
Ifc="A"Then
a=a+1
EndIf
Nexti
Print"a出现的次数:
";a
EndSub
13、我国目前有13亿人口,按人口年增长率%计算,多少年后我国人口将超过26亿。
PrivateSubCommand1_Click()
Dima,i
a=13
i=0
DoWhilea<26
a=a*
i=i+1
Loop
Printi
EndSub
14、小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少
PrivateSubCommand1_Click()
Dima,i
a=1
Fori=1To6
a=2*(a+1)
Nexti
Print"小猴原有桃";a;”只”
EndSub
15、求100以内的素数
PrivateSubCommand1_Click()
Dimi,j
Fori=2To100
Forj=2Toi-1
IfiModj=0ThenExitFor
Nextj
Ifj=iThenPrinti
Nexti
EndSub
16、百元买百鸡问题。
假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。
PrivateSubCommand1_Click()
Print"小鸡";"";"母鸡";"";"公鸡"
Print""
Forx=1To100
Fory=1To100
Forz=1To100
If*x+2*y+3*z=100Then
Print"";x;"";y;"";z
EndIf
Nextz
Nexty
Nextx
EndSub
17、编程求斐波那契数列前11项。
(斐波那契数列:
F(0)=f
(1)=1,F(n)=F(n-1)+F(n-2)n>=2)
PrivateSubCommand1_Click()
DimF(11),iAsLong
F(0)=1
F
(1)=1
Fori=2To10
F(i)=F(i-1)+F(i-2)
Nexti
Fori=0To11
PrintF(i);
Nexti
EndSub
18、将输入的字符串以反序显示。
例如:
输入“ASDFGT”,显示“TGFDSA”
PrivateSubCommand1_Click()
Dima,b,c,d,n
a=InputBox("输入字符串")
n=Len(a)
Forb=1ToInt(n\2)
c=Mid(a,b,1)
Mid(a,b,1)=Mid(a,n-b+1,1)
Mid(a,n-b+1,1)=c
Nextb
Printa
EndSub
19、随机产生10个[30,100]内的整数,求最大值及所对应的下标
PrivateSubCommand1_Click()
Dima(1To10),m
Randomize
ForI=1To10
a(I)=Int(Rnd*71)+30
Printa(I)
NextI
Max=a
(1)
ForI=2To10
Ifa(I)>MaxThenMax=a(I):
m=I
NextI
Print"max=";Max
Print"max的下标为";m
EndSub
20、随机产生10个[30,100]内的整数,求最大值、最小值和平均值。
PrivateSubCommand1_Click()
Dima(1To10)
Randomize
Fori=1To10
a(i)=Int(Rnd*71)+30
Printa(i)
Nexti
Max=a
(1)
Min=a
(1)
Avg=a
(1)
Fori=2To10
Ifa(i)>MaxThenMax=a(i)
Ifa(i)Avg=Avg+a(i)
Nexti
Avg=Avg/10
Print"max=";Max
Print"min=";Min
Print"avg=";Avg
EndSub
21、随机产生10个[30,100]内的整数,求最小值及所对应的下标。
PrivateSubCommand1_Click()
Dima(1To10),m
Randomize
ForI=1To10
a(I)=Int(Rnd*71)+30
Printa(I)
NextI
Min=a
(1)
ForI=2To10
Ifa(I)m=I
NextI
Print"min=";Min
Print"min的下标为";m
EndSub
22、随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形式输出该数组。
PrivateSubCommand1_Click()
Fori=0To4
Forj=0Toi
Printa(i,j);"";
Nextj
Print
Nexti
EndSub
PrivateSubForm_Activate()
Dima%(4,4),i%,j%
Fori=0To4
Forj=0To4
a(i,j)=Int(Rnd*11+10)
Printa(i,j);"";
Nextj
Print
Nexti
EndSub
23、随机产生10个1~100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。
PrivateSubForm_Click()
Dima(1To10)AsInteger,i%,maxa%,mina%,suma%
Fori=1To10
a(i)=Int(Rnd*99+1)
Printa(i);
Nexti
mina=a
(1)
maxa=a
(1)
suma=a
(1)
Fori=2To10
Ifa(i)>maxaThenmaxa=a(i)
Ifa(i) suma=suma+a(i)
Nexti
Print
Print"max=";maxa,"min=";mina,"aver=";suma/10
EndSub
24、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出该矩阵所有数据之和
PrivateSubForm_Click()
Dima(3,3),sum%
Fori=0To3
Forj=0To3
a(i,j)=Int(Rnd*31+20)
Nextj
Nexti
Fori=0To3
Forj=0To3
Printa(i,j);
Nextj
Print
Nexti
Fori=0To3
Forj=0To3
sum=sum+a(i,j)
Nextj
Nexti
Print"sum=";sum
EndSub
25、已知有序数组a(),编程插入x(x的值为14)。
数组a中的元素分别为{12,6,4,89,75,63,100,20,31}。
1.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
EndSub
26、编写一函数,计算Double类型一维数组所有元素的平均值。
subfunctionxx(arrasdouble)asdouble
dimheasdouble
dimiasinteger
fori=lbound(arr)toubound(arr)
he=he+arr(i)
next
xx=he/(ubound(arr)-lbound(arr)+1)
endfunction
27、用函数过程求表达式1+1/2+1/3+1/4+…+1/n的和.
functionsumfs(iasinteger)asdouble
dimsumsasdouble,jasinteger
forj=1toi
sums=sums+1/j
nexti
sumfs=sums
endfunction
28、编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。
PrivateSubCommand1_Click()
Dimi%,n%
Dima(10)AsInteger
Randomize
Fori=1To10
a(i)=Int(Rnd*101+400)
Print"a("&i&;")="&a(i)
Nexti
ProcMina()
EndSub
SubProcMin(b()AsInteger)
Dimi%,min%
min=b(LBound(b))
Fori=LBound(b)+1ToUBound(b)
Ifb(i)Nexti
Print"数组中最小值为:
"&min
EndSub
29、编一个函数,求一维数组a中的最大值,函数的形参自己确定。
PrivateSubCommand1_Click()
Dima(1To10)AsInteger
DimI,bAsInteger
Randomize
ForI=1To10
a(I)=Format((Rnd*100+100),"000")
Printa(I)
b=max(Val(a(I)),b)
NextI
Print
Printb
EndSub
Functionmax(xAsInteger,yAsInteger)AsInteger
Ifx>yTheny=x
max=y
EndFunction
30、编写一个过程计算并输出区间[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)Theni
Nexti
Sum=0
Fork=0To-1