0VB复习总结.docx
《0VB复习总结.docx》由会员分享,可在线阅读,更多相关《0VB复习总结.docx(22页珍藏版)》请在冰豆网上搜索。
0VB复习总结
复习要点2
一、选择结构语句的应用2
【典型例程1】(不同区间的判别,进入各分支定义不同的公式,if的嵌套)2
【典型例程2】(根据变量不同取值,进入多分支语句的不同分支处理)3
【典型例程3】(使用if语句对是否满足某条件进行判断)4
二、循环语句的应用4
【典型例程4】(利用循环语句进行累加或累乘)4
【典型例程5】(利用循环语句计算具有变化规律的公式)5
【典型例程6】(利用循环语句对某指定范围内的数进行逐一处理,找出符合条件的数)5
【典型例程7】(利用多重循环进行多个数据各种可能组合的搜索,找出满足条件的数)5
三、数组的定义和使用6
【典型例程8】(数组元素生成和存放数列元素,数组下标和数列元素编号对应)6
【典型例程9】(对多个数据进行统计,使用数组(计数、求和、求平均、求最大最小值))6
【典型例程10】(数组元素的排序,过程调用)6
四、过程和函数的定义和使用7
【典型例程11】(过程和函数的定义和调用,比较)7
【典型例程12】(函数的返回值,调用方式)7
五、文件的读写8
【典型例程13】(顺序文件和随机文件的读写)8
典型题例11
一、数据逐位的处理11
【典型例程14】(整除、取余,分离每位数字)11
【典型例程15】(分离数字,两两比较,标志位的使用)11
二、字符串的处理12
【典型例程16】(取子串MID,转换函数CHR和ASC逐一取出每个字符,字母转换加密)12
【典型例程17】(不同类型字符的判断:
数字、大写字母、小写字母、其他字符)12
【典型例程18】(统计各字母出现的次数,数组的使用)13
【典型例程19】(实际应用)13
三、特殊数的判断14
【典型例程20】(素数判断、函数调用)14
【典型例程21】(形成各种组合按条件判断)14
四、数列公式的计算15
【典型例程22】(数列的计算)15
【典型例程23】(数列的计算)15
复习要点
一、选择结构语句的应用
If<条件表达式>Then
<程序段1>
[Else
<程序段2>]
EndIf
SelectCase<数值|字符串表达式>
Case<值的列表1>
[<程序段1>]
Case<值的列表2>
[<程序段2>]
……
[Case<值的列表n>
[<程序段n>]]
[CaseElse
<程序段n+1>]
EndSelect
【典型例程1】(不同区间的判别,进入各分支定义不同的公式,if的嵌套)
输入一个一元二次方程ax2+bx+c=0的3个系数,求方程的两个根。
PrivateSubForm_Click()
Dima,b,c,d,x1,x2,p,qAsSingle
a=Val(InputBox("a="))
b=Val(InputBox("b="))
c=Val(InputBox("c="))
d=b*b-4*a*c
Ifd>=0Then
Ifd>0Then
x1=(-b+Sqr(d))/2*a
x2=(-b-Sqr(d))/2*a
Print"方程有两个不同的实根:
"
Print"x1=";x1
Print"x2=";x2
Else
x1=(-b)/2*a
Print"方程有两个相同的实根:
"
Print"x1=x2=";x1
EndIf
Else
p=(-b)/2*a
q=Sqr(-d)/2*a
Print"方程有两个不同的虚根:
"
Print"x1=";p;"+";q;"i"
Print"x2=";p;"-";q;"i"
EndIf
EndSub
【典型例程2】(根据变量不同取值,进入多分支语句的不同分支处理)
(select语句)任意输入10个百分制成绩,输出每个分数分数对应的级别。
PrivateSubCommand1_Click()
Dimscore,iAsInteger
Fori=1To10
score=InputBox("score=","input")
SelectCasescore
Case0To60
MsgBox("不及格")
Case60To69
MsgBox("差")
Case70To79
MsgBox("中")
Case80To89
MsgBox("良")
Case90To100
MsgBox("优")
CaseElse
MsgBox("输入有误")
EndSelect
Nexti
EndSub
(if的多分支语句)一企业员工的奖金根据利润额计算。
计算规则为:
利润低于或等于20万元时,奖金可提10%;利润在20万到40万元之间时,高于20万元的部分,可提成8%;40万到60万之间时,高于40万元的部分,可提成5%;60万到100万之间时,高于60万元的部分,可提成3%;高于100万元时,超过100万元的部分按1%提成。
提示用户输入利润额,编程计算并显示应发奖金总数。
PrivateSubCommand1_Click()
DimincomeAsSingle,profitAsSingle
income=Val(Text1.Text)
Ifincome<=0Then
MsgBox"输入有误!
"
ElseIfincome<=20Then
profit=income*0.1
ElseIfincome<=40Then
profit=(income-20)*0.08+20*0.1
ElseIfincome<=60Then
profit=(income-40)*0.05+20*0.08+20*0.1
ElseIfincome<=100Then
profit=(income-60)*0.03+20*0.05+20*0.08+20*0.1
Else
profit=(income-100)*0.01+40*0.03+20*0.05+20*0.08+20*0.1
EndIf
Label3.Caption=profit
EndSub
【典型例程3】(使用if语句对是否满足某条件进行判断)
任意输入一个年份和月份,输出该月份对应的天数。
PrivateSubCommand1_Click()
Dimyear,month,dayAsInteger
year=Val(InputBox("输入年份:
",,""))
month=Val(InputBox("输入月份:
",,""))
SelectCasemonth
Case1,3,5,7,8,10,12
day=31
Case4,6,9,11
day=30
Case2:
IfyearMod400=0OryearMod4=0AndyearMod100<>0Then
day=28
Else
day=29
EndIf
CaseElse
Print"输入有误!
"
EndSelect
MsgBoxStr(year)+"年"+Str(month)+"月有"+Str(day)+"天!
"
EndSub
二、循环语句的应用
For<循环变量>=<初值>To<终值>[Step<步长>]
<循环体>
Next[<循环变量>]
While<条件表达式>
<语句序列>
Wend
Do[While|Until<条件表达式>]
<语句序列>
Loop
【典型例程4】(利用循环语句进行累加或累乘)
计算阶乘和:
1!
+2!
+3!
+。
。
。
+n!
PrivateSubCommand1_Click()
Dimi,fact,nAsInteger
n=InputBox("n=","input")
i=1
s=0
fact=1
Whilei<=n
fact=fact*i
s=s+fact
i=i+1
Wend
MsgBox("1!
+2!
+...+"+Trim(Str(n))+"!
="+Str(s))
EndSub
【典型例程5】(利用循环语句计算具有变化规律的公式)
计算下列公式的值,K值由用户输入决定。
PrivateSubForm_Click()
DimnAsInteger
n=InputBox("n=")
s=1
Fork=1Ton
s=s*(2*k)*(2*k)/(2*k-1)/(2*k+1)
Nextk
Prints
EndSub
【典型例程6】(利用循环语句对某指定范围内的数进行逐一处理,找出符合条件的数)
编写完数程序,输出1000之内的所有完数。
完数是指一个数恰好等于它的因子之和,如6的因子为1、2、3而6=1+2+3,因而6就是完数。
PrivateSubForm_Click()
n=1
DoWhilen<=1000
s=0's用来存放因子之和
Fori=1Ton-1'用数n除1到n-1
IfnModi=0Then'若i是n的因子,则将s加上该因子
s=s+i
EndIf
Next
Ifs=nThenPrintn
n=n+1
Loop
EndSub
【典型例程7】(利用多重循环进行多个数据各种可能组合的搜索,找出满足条件的数)
变化的鸡兔同笼的问题:
提示用户输入鸡、兔和袋鼠的总只数和总脚数(默认袋鼠有3条腿),编程计算并显示出所有可能的鸡、兔和袋鼠数量组合?
PrivateSubform_Click()
DimhAsInteger,fAsInteger
DimxAsInteger,yAsInteger,zAsInteger
h=Val(InputBox("鸡、兔、袋鼠的总只数","请输入","0"))
f=Val(InputBox("鸡、兔、袋鼠的总脚数","请输入","0"))
Form1.Cls
Print"鸡兔袋鼠"
Forx=1ToInt(f/2)
Fory=1ToInt(f/4)
z=h-x-y
If2*x+4*y+3*z=fThen
Printx,y,z
EndIf
Nextz
Nexty
Nextx
EndSub
三、数组的定义和使用
【典型例程8】(数组元素生成和存放数列元素,数组下标和数列元素编号对应)
打印输出Fibonacci数列的前20项。
Fabonacci数列的特点是:
1n=1
Fib(n)1n=2
fib(n-2)+fib(n-1)n>=3
PrivateSubForm_Click()
DimiAsInteger,fib(1To20)AsInteger
fib
(1)=1:
fib
(2)=1
Fori=3To20
fib(i)=fib(i-1)+fib(i-2)
Next
Fori=1To20
Printfib(i),
IfiMod4=0ThenPrint'打印换行
Next
EndSub
【典型例程9】(对多个数据进行统计,使用数组(计数、求和、求平均、求最大最小值))
编写一个用来统计某班级英语成绩平均值的程序。
PrivateSubCommand1_Click()
Dimscore(1To15)'定义数组
Fori=1To5
score(i)=Val(InputBox("请输入第"&i&"位同学成绩","成绩录入",0))
Sum=Sum+score(i)
Next
Avg=Sum/5'求平均成绩
Print"平均成绩是:
",Avg
EndSub
【典型例程10】(数组元素的排序,过程调用)
随机生成20个100以内的整数,将20个数中大的10个数和小的10个数分成两组,先按从大到小的顺序输出大的10个数,再按从小到大的顺序输出小的10个数。
要求排序过程调用过程sort完成。
PrivateSubCommand1_Click()
Dims(1To20)AsInteger
Randomize
Fori=1To20
s(i)=Int(Rnd*100+1)
Label1.Caption=Label1.Caption+Str(s(i))
Next
Callsort(s,20)
Fori=1To10
Label2.Caption=Label2.Caption+Str(s(i))
Nexti
Fori=20To11Step-1
Label3.Caption=Label3.Caption+Str(s(i))
Nexti
EndSub
PrivateSubsort(s()AsInteger,nAsInteger)
Fori=1Ton-1
k=i
Forj=i+1Ton
Ifs(k)
k=j
EndIf
Nextj
Ifk<>iThen
temp=s(i):
s(i)=s(k):
s(k)=temp
EndIf
Nexti
EndSub
四、过程和函数的定义和使用
【典型例程11】(过程和函数的定义和调用,比较)
计算矩形面积。
SubArea1(length,width)
Dims
s=length*width
MsgBox"矩形面积为:
"&s
EndSub
functionArea2(length,width)asinteger
area2=length*width
Endfunction
PrivateSubForm_Click()
Dima,b
a=Val(InputBox("请输入矩形长:
"))
b=Val(InputBox("请输入矩形宽:
"))
callarea1(a,b)
print"矩形面积为:
";area2(a,b)
EndSub
【典型例程12】(函数的返回值,调用方式)
要求用函数过程判断素数。
Functionprime(nAsInteger)
Fori=2Tosqr(n)
IfnModi=0ThenExitFor
Next
Ifi>sqr(n)Thenprime=1Elseprime=0
EndFunction
PrivateSubForm_Click()
DimaAsInteger
a=InputBox("请输入一个整数","判断素数",1)
b=prime(a)
Ifb=1ThenPrint"素数"ElsePrint"合数"
EndSub
五、文件的读写
【典型例程13】(顺序文件和随机文件的读写)
顺序文件的读写:
PrivateSubCommand1_Click()
'显示文件
Picture1.Cls
Openmypath+"\student.txt"ForInputAs#1
Picture1.Print"学号";Tab(6);"姓名";Tab(16);"性别";Tab(22);"成绩"
DoUntilEOF
(1)
LineInput#1,NewLine
Picture1.PrintNewLine+vbCrLf
Loop
Close#1
EndSub
PrivateSubCommand2_Click()
'追加记录
id=Val(Text1.Text)
nam=Text2.Text
score=Val(Text3.Text)
sex=IIf(Option1.Value,"男","女")
Openmypath+"\student.txt"ForAppendAs#1
Print#1,id;Tab(6);nam;Tab(16);sex;Tab(22);score
Picture1.Printid;Tab(6);nam;Tab(16);sex;Tab(22);score
Close#1
Text1.Text=""
Text2.Text=""
Text3.Text=""
Option1.Value=True
Text1.SetFocus
EndSub
随机文件的读写:
PrivateTypestudtype
idAsInteger
nameAsString*8
sexAsString*2
scoreAsSingle
EndType
DimstudentAsstudtype
DimmypathAsString
PrivateSubForm_Load()
mypath=CurDir("D")
EndSub
PrivateSubCommand2_Click()
'追加记录
student.id=Val(Text1.Text)
student.name=Text2.Text
student.score=Val(Text3.Text)
student.sex=IIf(Option1.Value,"男","女")
Openmypath+"\student.txt"ForRandomAs#1Len=Len(student)
Put#1,LOF
(1)/Len(student)+1,student
Picture1.PrintStr(student.id);Tab(6);student.name;Tab(16);student.sex;Tab(22);Str(student.score)
Close#1
Text1.Text=""
Text2.Text=""
Text3.Text=""
Option1.Value=True
Text1.SetFocus
EndSub
PrivateSubCommand1_Click()
'显示文件
Picture1.Cls
Openmypath+"\student.txt"ForRandomAs#1Len=Len(student)
Picture1.Print"学号";Tab(6);"姓名";Tab(16);"性别";Tab(22);"成绩"
DoUntilEOF
(1)
Get#1,,student
Ifstudent.id<>0Then
Picture1.PrintStr(student.id);Tab(6);student.name;Tab(16);student.sex;Tab(22);Str(student.score)
EndIf
Loop
Close#1
EndSub
PrivateSubCommand3_Click()
'读取记录
Openmypath+"\student.txt"ForRandomAs#1Len=Len(student)
Get#1,Val(Text4.Text),student
Text1.Text=student.id
Text2.Text=student.name
Text3.Text=student.score
Ifstudent.sex="男"Then
Option1.Value=True
Else
Option2.Value=True
EndIf
Close#1
EndSub
典型题例
一、数据逐位的处理
【典型例程14】(整除、取余,分离每位数字)
任意输入一个位数为十位以内的整数,将各位数字逆序排列,输出新形成的整数。
PrivateSubCommand1_Click()
DimnAsLong,mAsLong
DimtAsLong,kAsLong
n=InputBox("n=","input")
t=n
Whilet<>0
k=tMod10
t=t\10
m=m*10+k
Wend
Printn,"逆序输出结果为:
",m
EndSub
【典型例程15】(分离数字,两两比较,标志位的使用)
编写程序,输出指定位数的数中所有符合条件的数。
条件:
该数是完全平方数,并且至少有两位数字是相同的。
PrivateSubCommand1_Click()
Dims(1To10)AsInteger
m=InputBox("m=")
a=10^(m-1)
b=10^m-1
Forn=aTob
IfSqr(n)=Int(Sqr(n))Then
num=n
Fori=1Tom
s(i)=numMod10
num=num\10
Nexti
flag=0
Fori=1Tom-1
Forj=i+1Tom
Ifs(i)=s(j)Then
flag=1
ExitFor
EndIf
Nextj
Ifflag=1ThenExitFor
Nexti
Ifflag