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