VB复习要点.docx
《VB复习要点.docx》由会员分享,可在线阅读,更多相关《VB复习要点.docx(22页珍藏版)》请在冰豆网上搜索。
VB复习要点
复习要点
1.赋值语句和Print语句
1.1交换两个变量的内容
Cup=A
A=B
B=Cup
1.2输入内容
1.2.1文本框输入到变量中
A=Val(Text1.Text)
1.2.2InputBox函数输入到变量中
A=Val(InputBox(“inputA”))
1.3输出内容
1.3.1文本框输出显示信息
Text1.Text=A
1.3.2标签输出显示信息
Label1.Caption=A
1.3.3MsgBox函数输出显示信息
R=MsgBox(“a=”&A)
1.4四舍五入
1.4.1把X四舍五入保留2位小数,结果赋值给Y
Y=Int(X*100+0.5)/100
Y=Round(X*100)/100
1.5Print方法
1.5.1输出项在同行的显示技术
在前一个输出项的后面加上逗号或者分号,下一个输出项在同行显示,逗号表示分区显示格式,分号表示紧凑格式。
1.5.2输出项的换行显示技术
在输出项的最后没有加上逗号或者分号,表示输出完本语句的输出项内容后,换行到下一行,光标在下一行的第一个列位置。
2.分支选择语句
2.1判断奇偶数
IfAMod2=0Then
Print“AisEven”
Else
Print“AisOdd”
EndIf
2.2判断X是否是3的倍数
IfXMod3=0Then
Print“Xismultipleof3.”
Else
Print“Xisnotmultipleof3.”
EndIf
2.3判断X是否是正整数
IfX>0AndX=Int(X)Then
Print“XispositiveInteger.”
Else
Print“XisnotpositiveInteger.”
EndIf
2.4根据X的取值范围,分段求出Y的值
IF语句实现
OptionExplicit
PrivateSubForm_Click()
Dimx#,y#
x=Val(InputBox("inputx"))
Ifx>100Then
y=2*x^3+3*x^2+5
ElseIfx>15Andx<30Then
y=5*x*x-12
Else
y=x+1
EndIf
Printy
EndSub
SelectCase语句实现
OptionExplicit
PrivateSubForm_Click()
Dimx#,y#
x=Val(InputBox("inputx"))
SelectCaseTrue
Casex>100
y=2*x^3+3*x^2+5
Casex>15Andx<30
y=5*x*x-12
CaseElse
y=x+1
EndSelect
Printy
EndSub
2.5水仙花数问题
◆把三位数X中的个位、十位、百位数字分离出来,方法如下:
个位数字=XMOD10
十位数字=(X\10)MOD10
百位数字=X\100
◆判断:
个位数字的立方+十位数字的立方+百位数字的立方是否等于X?
相等则X是水仙花数
不相等则X是水仙花数
OptionExplicit
PrivateSubForm_Click()
DimX%,a%,b%,c%
X=Val(InputBox("inputx"))
a=X\100
b=(XMod100)\10
c=XMod10
IfX=a^3+b^3+c^3Then
PrintX;"是水仙花数"
Else
PrintX;"不是水仙花数"
EndIf
EndSub
3.循环语句
3.1累加累乘问题
求1+2+3+……+100
OptionExplicit
PrivateSubForm_Click()
Dimi%,s&
Fori=1To100
s=s+i
Nexti
Prints
EndSub
求12的阶乘问题
OptionExplicit
PrivateSubForm_Click()
Dimi%,s&
s=1
Fori=1To100
s=s*i
Nexti
Prints
EndSub
3.2统计数量问题
找出100到999间所有是7的倍数的整数的个数
OptionExplicit
PrivateSubForm_Click()
Dimi%,c%
Fori=100To999
IfiMod7=0Thenc=c+1
Nexti
Printc
EndSub
3.3判断素数问题
OptionExplicit
PrivateSubForm_Click()
DimN%,i%,assumeAsBoolean
N=Val(InputBox("inputN"))
assume=True
Fori=2ToN-1
IfNModi=0Then
assume=False
ExitFor
EndIf
Nexti
IfassumeThen
PrintN;"isprime"
Else
PrintN;"isnotprime"
EndIf
EndSub
3.3打印”*”图形
PrivateSubForm_Click()
Dimi%,j%
Fori=1To9
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubForm_Click()
Dimi%,j%
Fori=1To9
PrintTab(20-i);
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubForm_Click()
Me.FontName="宋体"
Dimi%,j%
Fori=9To1Step-1
PrintTab(20-2*i);
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubForm_Click()
Me.FontName="宋体"
Dimi%,j%
Fori=9To1Step-1
PrintTab(20-i);
Forj=1To2*i-1
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubForm_Click()
Me.FontName="宋体"
Dimi%,j%
Fori=1To9
PrintTab(i);
Forj=1To8
Print"*";
Nextj
Print
Nexti
EndSub
PrivateSubForm_Click()
Me.FontName="宋体"
Dimi%,j%
Fori=1To9
PrintTab(20-i);
Forj=1To2*i-1
Ifj=1Orj=2*i-1Ori=9Then
Print"*";
Else
Print"";
EndIf
Nextj
Print
Nexti
EndSub
3.4最大公约数
OptionExplicit
PrivateSubForm_Click()
Dimm%,n%,tmp%,r%
m=Val(InputBox("inputM"))
n=Val(InputBox("inputN"))
Ifmtmp=n:
n=m:
m=tmp
EndIf
r=mModn
Whiler<>0
m=n
n=r
r=mModn
Wend
Printn
EndSub
3.5水仙花数
所谓水仙花数是1个三位数,其个位数字、十位数字和百位数字的立方之和等于此数本身。
编写程序找出三位数中所有的水仙花数。
OptionExplicit
PrivateSubForm_Click()
Dimi%,a%,b%,c%
Fori=100To999
a=i\100
b=(iMod100)\10
c=iMod10
Ifa^3+b^3+c^3=iThen
Printi
EndIf
Nexti
EndSub
3.6打印出Faibonacci数列的前40个数,每行打印5个数。
OptionExplicit
PrivateSubForm_Click()
DimF1#,F2#,F3#,i%
F1=1:
F2=1
PrintF1,F2,
Fori=3To40
F3=F2+F1
PrintF3,
IfiMod5=0ThenPrint
F1=F2
F2=F3
Nexti
EndSub
3.7打印出九九乘法表
OptionExplicit
PrivateSubForm_Click()
Dimi%,j%,s%
Fori=0To9
Forj=0To9
s=i*j
Printi;"*";j;"=";s;Tab(12*(j+1));
Nextj
Print
Nexti
Print:
Me.FontSize=20
PrintTab(20);"九九乘法表"
EndSub
4数组
4.1输入10个数组元素,找出其中的最大数。
PrivateSubForm_Click()
Dimx%(1To10),i%,Max%,loc%
Fori=1To10
x(i)=Val(InputBox(""))
Printx(i);
Nexti
Print
Max=x
(1):
loc=1
Fori=2To10
IfMaxMax=x(i):
loc=i
EndIf
Nexti
Print"themaximumis:
x(";loc;")=";x(loc)
EndSub
4.2随机产生10个两位整数放于数组中,找出其中的最小数。
OptionExplicit
PrivateSubForm_Click()
Dimx%(1To10),i%,Min%,loc%
Fori=1To10
x(i)=Int(Rnd*90)+10
Printx(i);
Nexti
Print
Min=x
(1):
loc=1
Fori=2To10
IfMin>x(i)Then
Min=x(i):
loc=i
EndIf
Nexti
Print"theminimumis:
x(";loc;")=";x(loc)
EndSub
4.3随机产生10个两位整数放于数组中,然后任意输入一个数,查找数组中是否有此数。
PrivateSubForm_Click()
Dimx%(1To10),i%,N%,TAsBoolean
Fori=1To10
x(i)=Int(Rnd*90)+10
Printx(i);
Nexti
Print
N=Val(InputBox("inputN"))
Fori=1To10
IfN=x(i)Then
T=True
EndIf
Nexti
IfTThen
PrintN;"isfoundinthearray"
Else
PrintN;"isnotfoundinthearray"
EndIf
EndSub
4.4随机产生10个两位整数放于数组中,用选择法排序,按从小到大排列。
PrivateSubForm_Click()
Dimx%(1To10),i%,j%,Min%,Tmp%,loc%
Fori=1To10
x(i)=Int(Rnd*90)+10
Printx(i);
Nexti
Print
Fori=1To9
Min=x(i):
loc=i
Forj=i+1To10
IfMin>x(j)Then
Min=x(j):
loc=j
EndIf
Nextj
Tmp=x(i):
x(i)=x(loc):
x(loc)=Tmp
Nexti
Fori=1To10
Printx(i);
Nexti
EndSub
4.5随机产生10个两位整数放于数组中,用冒泡法排序,按从大到小排列。
PrivateSubForm_Click()
Dimx%(1To10),i%,j%,Min%,Tmp%,loc%
Fori=1To10
x(i)=Int(Rnd*90)+10
Printx(i);
Nexti
Print
Fori=1To9
Forj=1To10-i
Ifx(j)Tmp=x(j):
x(j)=x(j+1):
x(j+1)=Tmp
EndIf
Nextj
Nexti
Fori=1To10
Printx(i);
Nexti
EndSub
4.6Faibonacci数列的前40个数存于数组中,打印出来,每行打印5个数。
OptionExplicit
PrivateSubForm_Click()
DimF#(1To40),i%
F
(1)=1:
F
(2)=1
PrintF
(1),F
(2),
Fori=3To40
F(i)=F(i-1)+F(i-2)
PrintF(i),
IfiMod5=0ThenPrint
Nexti
EndSub
4.7二维数组
OptionExplicit
PrivateSubForm_Click()
DimX%(1To5,1To5),i%,j%
Fori=1To5
Forj=1To5
Ifi+j=6Ori=jThen
X(i,j)=0
Else
X(i,j)=1
EndIf
PrintX(i,j);
Nextj
Print
Nexti
EndSub
5.过程和函数
5.1求两个正整数的最小公倍数
OptionExplicit
PrivateSubForm_Click()
DimM%,N%,tmp%
Do
M=Val(InputBox("inputM"))
LoopUntilM>0AndInt(M)=M
Do
N=Val(InputBox("inputN"))
LoopUntilN>0AndInt(N)=N
IfMM=N:
N=tmp
Print"最小公倍数是:
";M*N/gys(M,N)
EndSub
Functiongys%(ByValx%,ByValy%)
Dimr%
r=xMody
DoWhiler<>0
x=y
y=r
r=xMody
Loop
gys=y
EndFunction
5.2统计1000-9999间素数的个数
OptionExplicit
PrivateSubForm_Click()
Dimi%,c%
i=9999
DoWhilei>=1000
IfisPrime(i)Thenc=c+1
i=i-1
Loop
Print"theprimenumberfrom1000to9999is:
";c
EndSub
FunctionisPrime(ByValN%)AsBoolean
DimtmpAsBoolean,i%
tmp=True
Fori=2ToN-1
IfNModi=0Thentmp=False:
ExitFor
Nexti
IftmpThenisPrime=TrueElseisPrime=False
EndFunction
5.3计算1!
+2!
+……+12!
OptionExplicit
PrivateSubForm_Click()
Dimi%,sum&
i=1
DoUntili>12
sum=sum+factorial(i)
i=i+1
Loop
Printsum
EndSub
Functionfactorial&(ByValN%)
Dimi%,s&
s=1
Fori=2ToN-2
s=s*i
Nexti
factorial=s
EndFunction
6图形图像处理
6.1把窗口的坐标原点移动到窗口的中央,以坐标原点为圆心画出5个同心圆。
OptionExplicit
PrivateSubForm_Click()
Dimx#,y#,i%
x=Me.ScaleWidth
y=Me.ScaleHeight
Me.ScaleLeft=-x/2
Me.ScaleTop=-y/2
Me.Line(-x,0)-(x,0)
Me.Line(0,-y)-(0,y)
Me.CurrentX=0
Me.CurrentY=-y/2+100
Print"Y"
Me.CurrentX=x/2-100
Me.CurrentY=0
Print"X"
Fori=1To6
Me.Circle(0,0),200+i*200
Nexti
EndSub
6.2改变窗口坐标系统的刻度单位,把坐标原点移动到窗口的中央,画出-2*PI到2*PI的正弦函数曲线。
OptionExplicit
PrivateSubForm_Click()
Dimx#,y#
ConstPI#=3.14159265358979
Me.ScaleWidth=4*PI
Me.ScaleHeight=-3
Me.ScaleLeft=-2*PI
Me.ScaleTop=1.5
Me.Line(-2*PI,0)-(2*PI,0)
Me.Line(0,-1.5)-(0,1.5)
Me.CurrentX=0
Me.CurrentY=1.3
Print"Y"
Me.CurrentX=2*PI-0.4
Me.CurrentY=0
Print"X"
Forx=-2*PITo2*PIStep0.01
y=Sin(x)
Me.PSet(x,y)
Nextx
EndSub