09秋理科VB考前辅导2.docx
《09秋理科VB考前辅导2.docx》由会员分享,可在线阅读,更多相关《09秋理科VB考前辅导2.docx(14页珍藏版)》请在冰豆网上搜索。
09秋理科VB考前辅导2
Select语句格式:
Selectcase<测试表达式>
Case<情况表达式1>
语句块1
Case<情况表达式2>
语句块2
caseelse
语句块3
endselect
要点:
1)语句执行机制
例如:
设输入的数据分别为14,3,125,21时,标签框Label1.Caption的值分别是多少?
PrivateSubForm_Click()
DimaAsInteger
a=Val(InputBox(“请输入数据”))
SelectCaseaMod5
CaseIs<4
w=a+10
CaseIs<2
w=a*2
CaseElse
w=a-10
EndSelect
Label1.Caption=“w=”&w
EndSub
实例讲解:
将P83练习2用SelectCase语句来实现
2)注意情况表达式的写法
情况表达式的三种表示方式
Ø单值法
Ø关系比较要用IS来代替测试表达式
Ø区间表达法
注意:
不能使用or或and等逻辑运算符,只能使用“,”符号。
实例讲解:
电脑随机产生1到99的数
一等奖:
88
二等奖:
小于5或大于95
三等奖:
45到55
安慰奖:
其它数字
OnErrorGoTo语句
应用实例:
PrivatesubForm_Click()
OnErrorGoToL1
N=val(text1.text)
Print1/n
Exitsub
L1:
MsgBox“除数不为零!
”
Endsub
实例讲解:
privatesubform_click()
OnErrorGotoErr1
Pic1.picture=loadPicture(file1.path+file1.fileName)
Exitsub
Err1:
Pic1.picture=loadPicture(file1.path+”\”+file1.fileName)
endsub
循环控制结构之FOR/NEXT语句:
for<控制变量>=<初值>to<终值>[step<步长>]
<循环体>
next<控制变量>
例如:
Fork=1to10
s=s+k
Nextk
Prints,k
s=0
fork=10to1-1
s=s+k
nextk
prints,k
s=0
fork=4to1
s=s+k
nextk
prints,k
应用举例1:
输入一个正整数n,求n阶乘.
程序调试07
OptionExplicit
PublicSubeat()
'该过程是用于计算猴子共摘了多少个桃子。
'(小猴在一天摘了若干个桃子,当天吃掉了一半多一个;
'第二天吃了剩下的一半多一个;
'以后每天都吃尚存的一半零一个,到第7天早上要吃时只剩下一个了),
'并将结果输出来。
Dimn%,i%,x%
x=1
fori=6to---1----step----2----
-----3----
Nexti
Form1.Print"共有";x;"个桃子"
EndSub
应用举例2:
y=1+x/2+x^2/3+x^3/4….x^12/13(另:
p83练习4)
多项式相加问题(已知多少项的问题)
关键操作:
<和变量>=<和变量>+<单项>
程序调试06
PublicSubsum()
'该过程是用于计算并输出f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20)。
DimfAsSingle
DimiAsInteger
DimsignAsInteger
-----1------
f=1
-----2------
f=f+sign/(i*(i+1))
------3-------
Nexti
Form1.Print"f=";f
EndSub
EXITFOR子句的使用:
例如:
s=0
fork=1to10
s=s+k
’ifk>5thenexitfor
nextk
prints,k
应用举例1:
判断一个数n是不是质数
应用举例2:
找出100到200之间所有的质数
循环控制结构之While/Wend语句:
While<条件>
<循环体>
Wend
x=1:
s=0
whilex<5
s=s+x:
x=x+1
WEND
printx,s
循环控制结构之do/loop语句:
Do{while|until}<条件>
<循环体>
loop
例1:
X=1:
s=0
dowhilex<5
s=s+x:
x=x+1
loop
printx,s
例2:
X=1:
s=0
dountilx<5
s=s+x:
x=x+1
loop
printx,s
Do
<循环体>
loop{while|until}<条件>
例1:
X=1:
s=0
do
s=s+x:
x=x+1
loopwhilex<5
printx,s
例2:
X=1:
s=0
do
s=s+x:
x=x+1
loopuntilx>5
printx,s
应用举例:
未知多少项求和问题(P63例3-12)
程序调试10
注:
此题题目和第41`题相同,但算法不一样。
OptionExplicit
PublicSubComDiv()
'该过程是求任意两个正整数的最大公约数
DimmAsInteger,nAsInteger'任意两个正整数
DimiAsInteger
DimdivAsInteger'最大公约数
'输入两个正整数,要求m与n都必须大于零
Do
m=Val(InputBox("m="))
n=Val(InputBox("n="))
LoopWhile----1----
'先将两个整数中的较小数假设为最大公约数,再依次往下
'寻找能同时除尽m和n的数即为最大公约数
-----2-----
Ifndiv=n
EndIf
DoWhilemModdiv<>0OrnModdiv<>0
----3-----
Loop
Form1.Printm;"和";n;"的最大公约数是:
";div
EndSub
程序调试12
OptionExplicit
PublicSubDToB()
'该过程是将一个十进制正整数转换成为一个二进制数。
'采用连除2取余数的方法,将一个十进制数转换为二进制数。
DimDecAsInteger
DimBinAsString
DimresAsInteger
DimiAsInteger
Dec=Val(InputBox("x="))'输入一个十进制数
Form1.Print"十进制数:
";Dec
Do
res=-----1------'求出除以2的余数
Bin=Trim(Str(res))&-----2------
Dec=-----3------
LoopWhile----4------
Form1.Print"转换为二进制数为:
";Bin
EndSub
试题讲解2:
do
n=val(inputbox(“pleaseinputn”))
loopuntiln<10andn>0
printn
上述do/loop循环语句的作用是什么?
下面的代码用于确保用户输入的m,n满足如下关系:
m>n>0
do
m=inputbox(“m=”)
n=inputbox(“n=”)
loop_____
A:
untilm>n>0
B:
whilem>nandn>0
C:
whilem<=norn<=0
D:
untilm>norn>0
exitdo子句的作用:
如何将for/next循环改写为do/loop循环?
fork=2toint(sqr(n))
ifnmodk=0thenexitfor
nextk
ifk>int(sqr(n))then
printn;“是质数”
else
printn;“不是质数”
endif
程序调试20
PublicSubprime()
'该过程是输出100到200之间所有的素数,并统计素数的个数
DimiAsInteger:
DimjAsInteger:
DimkAsInteger
DimtAsInteger'统计素数的个数
DimbAsBoolean
Fori=100To200
b=True
k=------1-------
j=Int(Sqr(i))
DoWhilek<=jAndb
IfiModk=0Then
------2------
EndIf
------3------
Loop
if------4-------then
t=t+1
Form1.Printi
EndIf
Nexti
Form1.Print"t=";t
EndSub
多重循环:
三角图形打印
写出点击按钮command1后,显示在窗体上的内容。
privatesubcommand1_click()
dimkasinteger,jasinteger
fork=1to5
printspace(5-k);
forj=1to2*k-1
printchr(asc(“C”)+j);
nextj
print
nextk
endsub
穷举法(求x2+y2+z2=1000的所有整数解)
程序调试18
PublicSubprt()
'该过程是输出由数字组成的如下所示金字塔图案
'9
'888
'77777
'6666666
'555555555
'44444444444
'3333333333333
'222222222222222
'111111*********11
DimiAsInteger,jAsInteger
'********错误1********
Fori=9To1
Form1.PrintSpace(i);
Forj=1To19-2*i
'*********错误2********
Form1.Printi
Nextj
Form1.Print
Nexti
'*********错误3********
EndFunction
程序阅读题训练:
程序1:
(教材79程序阅读题1)
PrivatesubForm_Click()
dimaasinteger,sasinteger
a=5:
s=0
dowhilea<=0
s=s+a:
a=a-1
loop
prints;a
endsub
程序2:
privatesubcommand1_click()
dimsasstring
s=inputbox(“x=”)
n=len(s)
ifnmod2=1thenc=mid(s,n\2+1,1)
fork=1tolen(s)\2
c=mid(s,len(s)+1-k,1)+c+mid(s,k,1)
nextk
printc
endsub
单击command1后输入“abc”,窗体上显示的内容是什么?
单击command1后输入“abcd”,窗体上显示的内容是什么?
程序3:
PrivateSubform_click()
DimSAsString
DimkAsInteger,nAsInteger
S="ABCDE"
n=Len(S)
fork=nTo1Step-1
S=S+Mid(S,k,1)
PrintTab(n-k+1);
PrintMid(S,n-k+1,1)
Nextk
PrintRight(S,n)
EndSub
程序4:
(2006秋试题)
PrivatesubForm_Click()
n=inputbox(“n=”)
k=10:
j=1
fori=1ton
printspace(k);string(j,trim(str(i)))
ifi<=n\2then
k=k–1:
j=j+2
else
k=k+1:
j=j-2
endif
nexti
endsub