VB 常考编程题型Word格式.docx
《VB 常考编程题型Word格式.docx》由会员分享,可在线阅读,更多相关《VB 常考编程题型Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
n=r
LoopUntilr=0
最大公约数是:
"
;
m
方法二:
DimnAsInteger,mAsInteger,rAsInteger,iAsInteger
请输入第一个数"
请输入第二个数"
r=IIf(n<
m,n,m)
Fori=rTo1Step-1
IfnModi=0AndmModi=0Then
Printn&
"
m&
这两个数的最大公约是"
i
ExitFor
EndIf
这两个数的最小公倍数是"
n*m/i
EndSub
3判断一个数是否为素数,假定概数是n
方法一:
如果是不素数提前结束循环,是素数,退出循环是循环变量的值不满足终止
PrivateSubForm_Click()
Dimn%,i%
请输入一个数"
Fori=2Ton-1
IfnModi=0Then
不是素数"
Ifi=nThen
是素数"
不管这个数是否为素数,假定它是素数,用一个变量(一般用flag)记住它是素数的状态(flag=1),否则反之flag=0
Dimn%,i%,flag%
flag=1
flag=0
Ifflag=1Then
Else
EndSub
4找出100到300之间的所有素数,并且5个一行输出
n=0
Forj=100To300
Fori=2Toj-1
IfjModi=0Then
Printj;
n=n+1
IfnMod5=0ThenPrint
Nextj
5求
DimiAsInteger,fzAsInteger,fmAsInteger
DimsumAsSingle
DimtAsSingle
fz=1
t=1
i=1
sum=0
DoWhile1/t>
=0.000001
sum=sum+fz/t
i=i+1
t=t*(2*i)*(2*i+1)
fz=-fz
Loop
Form1.Print"
其和为"
Format(sum,"
0.0000000"
6求1+3+5+7+……+100的和
PrivateSubForm_Click()
Dimi%,sum%
Fori=1To100Step2
sum=sum+i
1+3+....+100="
sum
7求1!
+2!
+3!
+…..10!
之和
Dimi%,sum!
f!
‘注意这里定义为单精度,否则产生错误
f=1
Fori=1To10
f=f*i
sum=sum+f
1!
+....+10!
="
8打印九九乘法表
Dimi%,j%
Fori=1To9
Forj=1To9
se=i&
×
j&
i*j
PrintTab((j-1)*9+1);
se;
Nextj
Print'
每输入完一行,打印换行,继续输出下一行
Nexti
打印下三角九九乘法表
Forj=1Toi
打印上三角九九乘法表
Forj=iTo9
9猴子吃桃子。
小猴在某天摘桃若干个,当天吃掉一半,觉得还不过瘾,又多吃了一个;
第二天吃了剩下的桃子的一半多一个;
以后每天都这样吃下去,直到第7天要吃时只剩下一个,问小猴子第一天共摘下了多少个桃子?
Dimn%,i%
x=1'
第7天的桃子
Print"
第7天的桃子数为:
1只"
Fori=6To1Step-1
x=(x+1)*2
第"
i;
天的桃子数为:
x;
只"
10Fibonacci序列,序列为1,1,2,3,5,8……..输入该序列的前30项,并且五个一行输出
Dimi%,f1!
f2!
f3!
f1=1'
给第一项赋值
f2=1'
给第二项赋值
Printf1;
Space(3);
f2;
Fori=3To20Step1
f3=f1+f2
Printf3;
Space(5);
IfiMod5=0ThenPrint
f1=f2
f2=f3
1用户输入华氏温度F,将其转换为摄氏温度C。
转换公式:
C=5÷
9×
(F-32)
PrivateSubCommand1_Click()
DimFAsLong,CAsLong
F=InputBox("
请输入华氏温度:
"
例[4-6]华氏温度转换为摄氏温度"
C=5/9*(F-32)
Text1.Text=F
Text2.Text=C
PrivateSubCommand2_Click()
End
2输入时间(小时,分和秒),然后使用输出消息框输出总计多少秒。
使用文本框输入数据,使用消息框输出计算结果,
DimnAsSingle
n=Text1.Text*3600+Text2.Text*60+Text3
i=MsgBox(Text1.Text&
小时"
Text2.Text&
分"
Text3.Text&
秒"
Chr(13)&
总计"
n&
,"
输出结果"
3用INPUTBOX函数从键盘输入三个数,输出其中的最大值。
DimaAsSingle,bAsSingle,cAsSingle,maxAsSingle
a=Val(InputBox("
请输入第一个数:
))
b=Val(InputBox("
请输入第二个数:
c=Val(InputBox("
请输入第三个数:
max=a
Ifb>
maxThenmax=b
Ifc>
maxThenmax=c
Printa;
、"
b;
c;
最大的数是:
max
4用INPUTBOX函数从键盘输入一个学生的成绩,然后用MSGBOX输出该生的等级
DimgradeAsSingle
grade=InputBox("
请输入成绩"
Ifgrade>
=90Then
MsgBox("
优秀"
ElseIfgrade>
=80Then
良好"
=70Then
中等"
=60Then
及格"
不及格"
DimgradeAsInteger
请输入学生成绩"
SelectCasegrade
Case90To100
MsgBox("
Case80To90
Case70To80
Case60To70
Case0To59
EndSelect
5编写账号和密码输入的检验程序,对输入的账号和密码规定如下:
1)账号不能超过6位数字,以tab键表示输入结束,当输入不正确时,如账号非非数字字符串,显示“账号必须为数字”
2)密码是4位数字,并且以*显示,初始密码假定为“1234”
IfText2<
>
1234Then
y=MsgBox("
密码错误"
5+64,"
警告"
Ify=4Then
Text2="
Text2.SetFocus
Else
End
EndIf
MsgBox"
成功登陆"
0+32,"
提醒"
PrivateSubText1_LostFocus()
IfNotIsNumeric(Text1)Then
X=MsgBox("
账号必须为数字"
0,"
IfX=4Then
Text1="
Text1.SetFocus
6编程实现简易模拟计算机,简易计算器界面如下:
Text3.Text=Val(Text1.Text)+Val(Text2.Text)
Label1.Caption=Command1.Caption
Text3.Text=Val(Text1.Text)-Val(Text2.Text)
Label1.Caption=Command2.Caption
PrivateSubCommand3_Click()
Text3.Text=Val(Text1.Text)*Val(Text2.Text)
Label1.Caption=Command3.Caption
PrivateSubCommand4_Click()
Text3.Text=Val(Text1.Text)/Val(Text2.Text)
Label1.Caption=Command4.Caption
PrivateSubCommand5_Click()
Text1.Text="
Text2.Text="
Text3.Text="
7运行界面如图,单击command1产生一个随即的三位数(利用随即函数RND),在文本框1中显示这个三位数,单击command2逆序显示该三位数,单击command3退出应用程序。
Text1.Text=Int(Rnd*900+100)
Text2.Text=Text1Mod10&
(Text1Mod100)\10&
Text1\100
8字符串替换,程序运行效果如图,模仿WORD字处理软件中的“替换”功能,用两种方法实现。
DimstAsString
DimnAsInteger
st=Text1
n=InStr(st,Text2)
Text4=Left(st,n-1)&
Text3&
Right(st,Len(st)-n)
Text4=Replace(st,Text2,Text3)
9编写程序,当单击窗体时,在窗体上的随机位置,随机输出一个大写字母。
提示:
窗体的随机位置通过设置当前坐标Currentx,Currenty属性来确定
PrivateSubForm_click()
CurrentX=Rnd*Form1.Width
CurrentY=Rnd*Form1.Height
Form1.ForeColor=QBColor(Rnd*15)
PrintChr(Int(Rnd*26+65))
数组常见法
1.算求10个数中的最大值及其下标
首先定义包含10个元素的一维数组,然后赋初值(两种方法,一是通过随机函数,二是用inputbox函数)
Dima(1To10)AsInteger,maxAsInteger,i%,p%'
max存放10个数中的最大值,p存放当前最大值的下标
这10个数分别是"
a(i)=Int(Rnd*91)+10'
给一维数组赋初值,为10到100之间的随机值
'
a(i)=InputBox("
请输入10个数"
Printa(i);
max=a
(1)
p=1
Fori=2To10
Ifa(i)>
maxThen
max=a(i)
p=i
这10个数中最大值和下标为:
Printmax,p
2.将包含10个元素的数组倒置(逆序),说明,即第一元素和最后一个元素交换,第二个元素和倒数第二个元素交换,一致类推,可以推导出两个要交换的数的下标之和为11(如果是n个数下标之和为n+1),如对10个数逆序输出交换的次数为5次,如果是n个数交换的次数为n/2次
Dima(1To10)AsInteger,i%,t%
交换前这10个数分别是"
Randomize
Fori=1To5
t=a(i)
a(i)=a(11-i)
a(11-i)=t
交换后这10个数分别是"
3.从键盘输入10个数,然后求其偶数之和与奇数之和
Dima(1To10)AsInteger,i%,sum1%,sum%
sum1=0'
存放偶数之和
sum2=0'
存放奇数之和
Ifa(i)Mod2=0Then
sum1=sum1+a(i)
sum2=sum2+a(i)
这10个数中偶数之和为:
sum1
这10个数中奇数之和为:
sum2
4排序问题
一是冒泡法:
Dima(1To10)AsInteger
DimiAsInteger
DimkAsInteger
DimtAsInteger
DimjAsInteger
这10个数为:
Fori=1To10Step1
a(i)=Int(Rnd*91)+10
Forj=i+1To9
Ifa(j)<
a(i)Then
t=a(i)
a(i)=a(j)
a(j)=t
从小到大排序后这10个数为:
Fori=1To10Step1
方法二选择法排序
k=i
a(k)Thenk=j
a(i)=a(k)
a(k)=t
5.Fibonacci序列,序列为1,1,2,3,5,8……..输入该序列的前30项,并且五个一行输出
Dima!
(1To30),i%
a
(1)=1
a
(2)=1
Printa
(1);
a
(2);
Fori=3To30Step1
a(i)=a(i-1)+a(i-2)
Printa(i);
6.二维数组元素求所有元素中最大值及其下标
Dima%(1To2,1To3),max%,i%,j%,r%,c%'
其中i和j分别控制行和列,r和c存放当前最大元素的行下标和列下标
Fori=1To2
Forj=1To3
a(i,j)=Int(Rnd*10)+90'
用随机函数给二维数组赋值
'
a(i,j)=InputBox("
请输入6个数"
)'
用inputbox给二维数组赋值
Printa(i,j);
r=1
c=1
max=a(1,1)
Ifa(i,j)>
max=a(i,j)
r=i
c=j
二维数组中最大的元素及其行下表和列下标为:
max,r,c