大学VB教学与学生学习资料_第1页
大学VB教学与学生学习资料_第2页
大学VB教学与学生学习资料_第3页
大学VB教学与学生学习资料_第4页
大学VB教学与学生学习资料_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

练习1.四个算术运算符\、/、mod、*中,优先级别最低的是。2.int(100*rnd())产生的随机数在

区间。3.表达式(-1)*sgn(-100+int(rnd*100))的值是

4.表达式4+5\6*7/8mod9的值是

。5.函数Ucase(mid(“visualbasic”,8,8))的值为

。6.声明符号常量的关键字是

。7.输入对话框inputbox的返回值类型是

。8.一个语句如果在下一行续写,应在本行尾部加符号

.mod[0,99]15BASICConst字符串_1第3章程序的流程控制3.1选择结构3.2时钟控件3.3循环结构3.4其他辅助控制语句3.5单选钮和复选框3.6框架3.7综合应用21.掌握If语句和SelectCase语句的一般形式和执行过程。2.掌握For语句的一般形式和执行过程。3.掌握Do……Loop语句的各种形式和执行过程。4.掌握常用算法,会应用各种语句解决实际问题。5.掌握时钟控件、单选钮和复选框控件的使用。本章要求3案例随机抽奖程序案例要点:1、产生随机数2、计时器控件3、选择结构43.1选择结构1、单分支结构2、双分支结构3、多分支结构4、selectcase语句5单分支选择结构If…Then语句(单分支结构)形式:

(1)If<表达式>Then

语句块

EndIf(2)If<表达式>Then<语句>说明(1)<表达式>:一般为关系表达式、逻辑表达式、算术表达式(0为False,非0为True)。(2)<语句块>:可以有多条语句。(3)单行结构中的<语句>可有多条,必须写到一行上,以冒号分隔。6选择结构例1如果x是正数,就打印x。方法1:IfThen

EndIf方法2:IfThenFT表达式语句块X>0Printx

表达式PrintxX>0语句块X>0语句表达式Printx7选择结构例2:已知两个数x和y,比较它们的大小,使得x大于y。

若上述语句次序变一下,结果如何?方法1:Ifx<yThen

t=xx=yy=tEndIf方法2:Ifx<yThent=x:x=y:y=tFTx<y

交换x,y8If…Then…Else语句(双分支结构)形式:

(1)If<表达式>Then<语句块1>

Else<语句块2>

EndIf(2)

If<表达式>Then<语句1>Else<语句2>双分支结构说明(1)<表达式>:一般为关系表达式、逻辑表达式、算术表达式(0为False,非0为True)。(2)<语句块1>、<语句块2>:可以有多条语句。但只能有一个语句块被执行到。9选择结构例3:输入x的值,计算y的值。x,y的关系如下:If表达式Then

语句块1Else

语句块2EndIfx<>0y=sin(x)+sqr(x^2+1)y=cos(x)-x^3+3*x10(1)编写程序,任意输入一个整数,判定该整数的奇偶性。

(2)输入x的值,计算y的值。x,y的关系如下:

1+x(x≥0)y=1-2x(x<0)

练习11多分支选择结构If…Then…ElseIf语句(多分支结构)

形式:

If<表达式1>Then

<语句块1>

ElseIf<表达式2>Then<语句块2>…… [Else

语句块n+1]

EndIf12选择结构注意:(1)不管有几个分支,只执行一个(2)ElseIf不能写成ElseIf(3)当多个表达式同时满足时,只执行第一个与之匹配的语句块。因此,要注意表达式的书写次序。13(1)输入x的值,计算y的值。x,y的关系如下:

1(x>0)y=0(x=0)-1(x<0)

(2)已知变量StrC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符,并作相应的显示。演示

举例14练习

(1)输入一学生成绩,评定其等级。方法是:90-100分为“优秀”;80-89分为“良好”;70-79分为“中等”;60-69分为“及格”;60分以下为“不及格”。15练习16嵌套的选择结构If语句的嵌套

If语句的嵌套是指If或Else后面的语句块中又包含If语句.

If<条件1>Then

If<条件2>Then……[ELSE]……EndIf……[ELSE]

……EndIf注意:(1)书写采用锯齿形(2)If语句形式若不在一行上书写,必须与EndIf配对;多个EndIf嵌套,EndIf与它最接近的If配对。17选择结构例4设有如下函数,输入x,要求输出y的值。

1(x>0)y=0(x=0)-1(x<0)Ifx>=0ThenIfx=0Theny=0Elsey=1Elsey=-1EndIf181、一般格式SelectCase<变量或表达式>

Case<表达式列表1>[<语句块1>][Case<表达式列表2>[<语句块2>]]…[CaseElse[<语句块n>]]EndSelectselectcase选择结构SelectCase语句19选择结构2、说明(1)变量或表达式:可以是数值型或字符串表达式。(2)<表达式列表>:与<变量或表达式>是同类型的。形式可以是下面四种形式之一:(a)表达式例:"A"(b)一组枚举表达式(用逗号分隔)

例:2,4,6,8(c)表达式1To表达式2

例:60To100 (d)Is关系运算符表达式 例:Is<60203、执行过程选择结构表达式列表1表达式列表2表达式列表n语句块1语句块2语句块n语句块n+1执行EndSelect后面的语句21(1)已知变量StrC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符,并作相应的显示。(2)输入一学生成绩,评定其等级。90分及以上为优秀,80分及以上为良好,70分及以上为中等,60分及以上为及格,其余为不及格。举例22例

已知坐标点(x,y),判断其落在哪个象限。

方法一

Ifx>0Andy>0ThenPrint"在第一象限"

ElseIfx<0Andy>0ThenPrint"在第二象限"

ElseIfx<0Andy<0ThenPrint"在第三象限"

ElseIfx>0Andy<0ThenPrint"在第四象限"

EndIf

方法二SelectCasex,yCasex>0Andy>0 Print"在第一象限"Casex<0Andy>0 Print"在第二象限"Casex<0Andy<0 Print"在第三象限"Casex>0Andy<0 Print"在第四象限"EndSelect方法二代码错误:1.

SelectCase后不能出现多个变量;2.

Case后不能出现变量及有关运算符。231、IIf函数函数的形式:

IIf(表达式1,表达式2,表达式3)函数的作用:先判断表达式1的值,如果为True,函数返回表达式2的值,否则返回表达式3的值。例:求x,y中较大的数,放入max变量中。

max=IIf(x>y,x,y)条件函数241.在选择结构中缺少配对的结束语句。对块结构的If语句,应有配对的EndIf语句结束。2.多分支If语句中ElseIf关键字的书写和条件表达式的表示。

ElseIf不要写成ElseIf;同时要注意多个条件表达式的次序问题。3.SelectCase语句的使用。

SelectCase后不能出现多个变量;Case子句后不能出现变量。常见错误251、输入数字1-7,显示其对应的星期几PrivateSubCommand1_Click()dimxasinteger,yasstringx=val(text1.text)'**********SPACE**********【?】case1:y="星期日"case2:y="星期一"case3:y="星期二"case4:y="星期三"case5:y="星期四"case6'**********SPACE**********【?】case7:y="星期六"'**********SPACE**********

【?】y="输入错误"endselectText2.Text=yEndSubSelectcasexy="星期五"Caseelse262、输入任何一个英文字母x,若x的值为"a","c","d-f",则显示x的大写字母;若x的值为"m","o","p-z",则显示x的小写字母;若为其它的值,则显示xa(如输入的X的值是g,则显示ga)。PrivateSubCommand1_Click()x=Text1.Text'**********SPACE**********

【?】'**********SPACE**********Case【?】Label1.Caption=UCase(x)Case"m","o","p"To"z"Label1.Caption=LCase(x)CaseElse'**********SPACE**********

【?】EndSelectEndSubSelectcasex“a”,”c”,”d”to”f”Label1.caption=x&”a”273、用输入对话框输入x,根据公式(图1)计算对应的y,并在窗体上输出y的值。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(InputBox("Pleaseinputx:","输入X的值"))Ifx=10Theny=0

'**********FOUND**********Elsex>10Then

'**********FOUND**********y=Str(x)+Sin(x)Else

'**********FOUND**********y=2*x~3+6EndIfPrintyEndSubElseifx>10thenY=2*x^3+6Sqr(x)+sin(x)284、密码判断程序,如果密码为12345则显示“恭喜,密码正确”,否则显示“很遗憾,密码错误”,要求文本框中只允许输入数字。PrivateSubCommand1_Click()DimstrPwsAsStringstrPws=Trim(Text1.Text)

'**********FOUND**********IfLen(strPws)<>0ThenExitSubIfstrPws="12345"Then'**********FOUND**********MsgBox"恭喜,密码正确",,验证

ElseMsgBox"很遗憾,密码错误",,"验证"EndIfEndSubSubText1_KeyPress(KeyAsciiASInteger)'**********FOUND**********IfNot(KeyAscii>=49AndKeyAscii<=57)ThenKeyAscii=0EndIfEndSub=0"验证"48293.2循环结构引例:从键盘上输入4个数,输出这4个数的和。PrivateSubForm_Click()

Dims%,

x%s=0x=inputbox("请输入数")s=s+xx=inputbox("请输入数")s=s+xx=inputbox("请输入数")s=s+xx=inputbox("请输入数")s=s+xPrint"这四个数的和=";

sEndSub30For循环语句While…Wend循环语句Do…Loop循环语句循环的嵌套3.3循环结构311.一般形式For循环变量=初值

To终值

[Step步长]<语句块>[ExitFor]<语句块>Next循环变量一、For循环语句(一般用于循环次数已知)循环体2.说明(1)循环变量:必须为数值型。(2)步长:一般为正,此时初值应小于等于终值;若为负,初值应大于等于终值;默认为1。若步长为0,则为死循环。32(3)语句块:可以是一句或多句语句,构成循环体。(4)ExitFor:表示当遇到该语句时,退出循环,执行Next后的下一条语句。(5)循环次数:n=Int((终值-初值)/步长+1)3.执行过程一、For循环语句For语句又叫做循环说明语句,用来指定循环变量的名称,以及循环变量的初值、终值和步长;循环体是被反复执行的部分(即循环工作部分),它可以由若干条语句所组成;Next语句又叫做循环终端语句,其作用是改变循环变量的值(即增加一个步长)并控制是否再次执行循环体。33一、For循环语句循环变量=初值循环变量<=终值语句块语句块循环变量=循环变量+步长有ExitForTFFTFor循环执行过程(步长>0)34循环结构引例:从键盘上输入4个数,输出这4个数的和。PrivateSubForm_Click()

Dims%,

x%s=0x=inputbox("请输入数")s=s+xx=inputbox("请输入数")s=s+xx=inputbox("请输入数")s=s+xx=inputbox("请输入数")s=s+xPrint"这四个数的和=";

sEndSubFor循环变量=初值To终值[Step步长]<语句块>[ExitFor]<语句块>Next循环变量x=inputbox("请输入数")s=s+xii1To435一、For循环语句引例:从键盘上输入4个数,输出这4个数的和。PrivateSubForm_Click()

Dims%,

x%,

i%s=0Fori=1To4x=inputbox("请输入数")s=s+xNextiPrint"这四个数的和=";

sEndSub思考:1.从键盘上输入10个数,输出这10个数的和。2.从键盘上输入n个数,输出n个数的和。10n:n%=Inputbox("请输入n")36例1、求1到100之间各自然数之和。例2、求1到100之间各奇数之和。例3、求1到100之间各偶数之和。例4、求1到100之间所有能被3或能被7整除的自然数之和。举例思考:1.求1到100之间各数的平方(或立方)和。371、求100!。

2、求1到100之间各奇数之积。

3、求1到100之间各偶数之积。

4、求1到100之间所有能被3整除或能被5整除的自然数之积。5、打印图形练习38读程序写结果

PrivateSubForm_Click()Dimi%Fori=2To13Step3

PrintiNextiPrint"i=";iEndSub注意:(1)退出循环时,循环变量的值保持退出时的值。(2)在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。一、For循环语句:Ifi>10ThenExitFor391、以下程序的功能是:生成20个200到300之间的随机整数,输出其中能被5整除的数并求出它们的和.PrivateSubCommand1_C1ick()DimsAsIntegerDimxAsInteger,iAsInteger

'**********SPACE**********s=【?】Fori=1To20Randomize

'**********SPACE**********X=Int(【?】*100+200)'**********SPACE**********IfX【?】5=0ThenPrintXs=s+XEndIfNextiPrint"Sum=";sEndSub0rndmod402、输出40以内能够被3整除的数,要求输出结果为5个数一行。PrivateSubForm_Click()ClsDimxAsInteger,iAsInteger'**********FOUND**********i=1Forx=1To40If(x/3)=(x\3)Then'**********FOUND**********Printxi=i+1EndIfIfiMod5=0ThenPrint'**********FOUND**********NextiEndSub0;x41一般格式:While循环条件

[语句块]Wend二、While…Wend循环语句循环条件成立语句块FTWhile……Wend例.求1到100之间的各自然数之和42举例

PrivateSubForm_Click()Dimi%,sum%sum=0i=1Whilei<=100sum=sum+ii=i+1WendPrintsumEndSubFori=1To100sum=sum+iNexti

求1到100之间各自然数之和。43While循环的几点说明(1)While循环语句本身不能修改循环条件,所以必须在While…Wend语句的循环体内设置相应语句,使得整个循环趋于结束,以避免死循环。(2)While循环语句先对条件进行判断,然后才决定是否执行循环体。如果开始条件就不成立,则循环体一次也不执行。(3)凡是用For…Next循环编写的程序,我们都可以用While…Wend语句实现。反之,则不然。二、While…Wend循环语句441、输入一批数,以0作为终止标志,求出这批数中负数的个数。举例思考:1.如以-1作为终止标志,程序该如何修改。45形式1:Do[While|Until循环条件][语句块][ExitDo][语句块]Loop三、Do…Loop循环语句形式2:Do[语句块][ExitDo][语句块]Loop[While|Until循环条件]DoWhile循环条件

循环体LoopDoUntil循环条件循环体LoopDo

循环体LoopWhile循环条件Do循环体LoopUntil循环条件先执行后判断至少执行一次先判断后执行条件成立执行条件不成立执行Do

循环体Loop只能通过ExitDo跳出循环46三、Do…Loop循环语句满足循环条件语句块语句块FT有ExitDoTFDoWhile……Loop有ExitDo

满足循环条件语句块语句块TFTFDo……LoopWhile47三、Do…Loop循环语句满足循环条件语句块语句块TF有ExitDoTFDoUntil……Loop有ExitDo

满足循环条件语句块语句块FFTTDo……LoopUntil48三、Do…Loop循环语句说明:(1)关键字While用于指明条件为真时就执行循环体中的语句,Until刚好相反;(2)当省略了While|Until条件子句,即循环结构仅由Do……Loop关键字构成时,表示无条件循环,这时循环体内应该有ExitDo语句,否则为死循环;(3)ExitDo语句表示当遇到该语句时,退出循环,执行Loop的下一语句。49例:计算自然数[1,100]之和。

PrivateSubForm_Click()Dimi%,sum%i=1sum=0

DoWhilei<=100sum=sum+ii=i+1

LoopPrintsumEndSub方法一50例:计算自然数[1,100]之和。

PrivateSubForm_Click()Dimi%,sum%i=1sum=0

Dosum=sum+ii=i+1LoopWhile

i<=100PrintsumEndSub方法二51例:计算自然数[1,100]之和。

PrivateSubForm_Click()Dimi%,sum%i=1sum=0

DoUntil

i>100sum=sum+ii=i+1

LoopPrintsumEndSub方法三52例:计算自然数[1,100]之和。

PrivateSubForm_Click()Dimi%,sum%i=1sum=0

Dosum=sum+ii=i+1

LoopUntil

i>100PrintsumEndSub方法四53例:计算自然数[1,100]之和。

PrivateSubForm_Click()Dimi%,sum%i=1:sum=0

Dosum=sum+iIfi>=100thenexitdoi=i+1

LoopPrintsumEndSub方法五541、求1+2+3+......,直到其和超出3000为止,并输出结果。PrivateSubForm_Click()ClsDimiAsInteger,sAsSinglei=1'**********FOUND**********s=1Dos=s+i'**********FOUND**********i=i+2'**********FOUND**********Loops>3000Print"从1到:";i;"的和是";sEndSubS=01Loopuntils>300055例、用辗转相除法求两个自然数m、n的最大公约数和最小公倍数。三、Do…Loop循环语句算法:(1)对于已知两数m,n,使得m>n;(2)m除以n得余数r;(3)若r=0,则n为最大公约数结束;否则执行(4);(4)mn,nr,再重复执行(2)。两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。56三、Do…Loop循环语句PrivateSubForm_Click()Dimm%,n%,r%m=InputBox("请输入m的值")n=InputBox("请输入n的值")Ifm<nThent=m:m=n:n=tr=mModnDoWhiler<>0m=nn=rr=mModnLoopPrint"最大公约数为"&nEndSub571.求最大公约数和最小公倍数。PrivateSubCommand1_Click()Dima%,b%,num1%,num2%,temp%num1=InputBox("一个正整数")num2=InputBox("一个正整数")'**********SPACE***********If【?】Thentemp=num1:num1=num2:num2=tempEndIfa=num1b=num2'**********SPACE***********While【?】temp=aModba=b'**********SPACE***********【?】WendPrint"最大公约数:";aPrint"最小公倍数是:";num1*num2/aEndSubb<>0num1<num2thenb=temp582.求最大公约数。Dimm%,n%,r%m=InputBox("请输入m的值")n=InputBox("请输入n的值")DoWhilen<>0'**********FOUND***********r=m/nm=n'**********FOUND***********n=mLoop'**********FOUND***********Print"最大公约数:";nmmodnrm59一个循环体内又包含了一个完整的循环结构称为循环的嵌套.四、循环的嵌套对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;例.打印九九乘法表60PrivateSubForm_Click()Dimi%,j%,x%,y%x=0:y=0

fori=1to2x=x+1

forj=1to3y=y+1

nextjnextiprint"x=";xprint"y=";yEndSub

读程序写结果X=2y=6

x=0fori=1to2x=x+1:y=0

forj=1to3y=y+1

nextjnextiX=2Y=3

61求1!+2!+3!+….10!PrivateSubCommand1_Click()Dimi%,j%,t!,s!s=0Fori=1To10t=1Forj=1To5t=t*iNextjs=s+tNextiPrintsEndSubi62例、求全部的水仙花数。PrivateSubCommand1_Click()Fori=1To9Forj=0To9Fork=0To9Ifi^3+j^3+k^3=i*100+j*10+kThenPrinti*100+j*10+kEndifNextk,j,iEndSub四、循环的嵌套PrivateSubForm_Click()Forn=100To900i=n\100j=n\10Mod10k=nMod10Ifi^3+j^3+k^3=nThenPrintnNextnEndSub633.打印100~999之间的所有水仙花数。PrivateSubCommand1_Click()DimiAsInteger,a%,b%,c%'**********SPACE***********Fori=100To【?】

'**********SPACE***********a=Int(i/【?】)b=Int((i-100*a)/10)'**********SPACE***********c=i-100*a-【?】

Ifa*a*a+b*b*b+c*c*c=iThenPrintiEndIfNextiEndSub999100)10*b644.打印如图所示的九九乘法表。PrivateSubCommand1_Click()'**********FOUND***********DimseAsIntegerPrintTab(35);"九九乘法表"PrintTab(35);"-------------"Fori=1To9'**********FOUND***********Forj=1To9se=i&"*"&j&"="&i*j'**********FOUND***********PrintTab((j-1)*9+1);seNextjPrintNextiEndSubStringi;65例2、打印如下图形****************四、循环的嵌套PrivateSubForm_Click()Fori=1To4PrintTab(5-i);Forj=1To2*i-1Print"*";NextjPrintNextiEndSub例循环打印图形663.4其他辅助控制语句1.GoTo语句形式:GoTo{标号|行号}作用:无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列.2.Exit语句形式:ExitFor、ExitDo、ExitSub、ExitFunction等。作用:退出某种控制结构的执行。673.4其他辅助控制语句3.End语句多种形式:End、EndIf、EndSelect、EndWith、EndType、EndSub、EndFunction、作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。4.With语句形式如下:With对象语句块

EndWith作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。685.打印如图所示的图形。PrivateSubCommand1_Click()Dimi%,j%'**********SPACE***********【?】="*"Fori=0To6'**********SPACE***********Forj=【?】To6'**********SPACE***********Form1.Printstar【?】NextjForm1.PrintNextiEndSubStar=6-i;696.打印如图所示的图形。PrivateSubCommand2_Click()ClsDimi%,j%'**********FOUND***********Fori=1To5'**********FOUND***********Forj=1To5Print"*";'**********FOUND***********NextiPrintNextiEndSub7ij703.5综合应用一、累加、连乘在循环结构中,最常用的算法是累加和连乘。累加是在原有和的基础上一次一次地每次加一个数;连乘则是在原有积的基础上一次一次地每次乘以一个数。71求1~100的5或7的倍数的和。

Sum=0Fori=1To100IfiMod5=0OriMod7=0Then

Sum=Sum+iEndIfNextiPrintSum求3~10的乘积

t=1Fori=3To10

t=t*iNextiPrintt思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?综合应用72例

求自然对数e的近似值,要求其误差小于0.00001,近似公式为:

该例题涉及两个问题:

(1)本例根据某项值的精度来控制循环的结束与否。

(2)e存放和,n存放每一项,则求和为:e=e+nt存放阶乘,则阶乘为:t=t*i

综合应用73Dimi%,t&,n!,e!e=1i=0n=1DoWhilen>=0.00001i=i+1t=1Forj=1Toit=t*jNextjn=1/te=e+nLoopPrint"计算了";i;"项的和是";ee=0t=1i=0n=1DoWhilen>=0.00001e=e+ni=i+1t=t*in=1/tLoop741、求1!+2!+......+10!的值。PrivateSubForm_Click()'**********SPACE**********【?】s=1ForI=2To10t=t*i'**********SPACE**********【?】'**********SPACE**********【?】PrintsEndSubt=1s=s+tNexti752、由输入对话框输入n(n必须为大于零且小于30的自然数),计算下列表达式的值,并在标签框Label1上显示。sum=1/2+1/6+...+1/(k*(k+1))(k<=n)PrivateSubForm_Click()DimnAsInteger,sumAsDouble,k%n=Val(InputBox("n=","请输入自然数n(n>0且n<30)"))'**********SPACE**********DoWhilen<=0【?】n>=30n=Val(InputBox("n=","请重输入"))Loopsum=0k=0

Do'**********SPACE**********k=【?】sum=sum+1/(k*(k+1))

'**********SPACE**********LoopUntil【?】Label1.Caption="Sum="+Str(sum)EndSubOrn>=30K+1k>=n763、该程序通过For循环计算一个表达式的值,这个表达式是1/2+2/3+3/4+4/5PrivateSubCommand1_Click()

'**********SPACE**********Dim【?】AsDouble,xAsDoubleDimnAsLongDimiAsInteger

'**********SPACE**********sum=【?】n=0Fori=1To5x=n/in=n+1'**********SPACE**********sum=【?】NextForm1.PrintsumEndSubsum0sum+x774、求s=72+102+132+......832的值。PrivateSubForm_Click()ClsDimsAsLong,iAsInteger'**********FOUND**********s=1'**********FOUND**********Fori=7To832s=s+i'**********FOUND**********Next30PrintsEndSubS=072to832step30i78求累加和1、求1+2+3+……+100的值。2、求100以内奇数的和。3、求100以内偶数的和。4、求50以内所有偶数的和。5、求50以内所有奇数的和。6、求1+5+10+15+……+500的和。7、求3+6+9+12+15+18+……+300的和。8、求1~10的平方和。9、求s=1×22×32×42×…×10210、S=1+1/4+1/9+1/16+1/25+…+1/100。11、求1-1/2+1/3-1/4+……+1/99-1/100的值。12、s=20+21+22+…+263,求s的值。13、求200~300之间既能被3整除又能被7整除的数。14、求出100~200之间,能被5整除,但不能被3整除的数,并求所有数之和。79二、素数(或称质数)素数的定义:指只能被1和它本身整除的数。即:除1和它本身之外不能被其它数整除。判断一个数m是素数要验证下面的条件:也即:用2、3、4、……、m-1中的所有的数都不能整除m,这时才可说m是素数。要判断一个数m不是素数只要满足下面的条件:反过来:只要有任何的一个数(在2,m-1之间)能整除m,m就不是素数。80Fori=2Tom-1if(mModi=0)ThenPrintm;"不是"

ExitForendifNextiFori=2Tom-1if(mModi<>0)ThenPrintm;"是"Nexti

判断素数

二、素数(或称质数)81判断m是否是素数的程序PrivateSubCommand1_Click()Dimm%,i%,flag%m=InputBox("输入正整数M:")

flag=1

Fori=2Tom-1IfmModi=0Thenflag=0NextiIfflag=1ThenPrintm;"是素数"ElsePrintm;"不是素数"EndIfEndSub82例、打印3~100之间的所有素数。PrivateSubCommand1_Click()Form=3To100flag=1Fori=2Tom-1IfmModi=0Thenflag=0NextiIfflag=1ThenPrintmEndIfNextmEndSub如果要求每行输出5个,怎样修改程序?83例、打印3~100之间的所有素数。PrivateSubForm_Click()Dimm%,flag%,i%,n%n=0Form=3To100flag=1Fori=2Tom-1If(mModi)=0Thenflag=0NextiIfflag=1ThenPrintm;

n=n+1IfnMod5=0ThenPrintEndIfNextmEndSub84判断某个数是否是素数的程序PrivateSubCommand1_Click()Dimm%,i%m=InputBox("输入正整数M:")Fori=2Tom-1IfmModi=0ThenExitForNextiIfi=mThenPrintm;"是素数"ElsePrintm;"不是素数"EndIfEndSubInt(Sqr(m))i>Int(Sqr(m))Then85练习:1、(事件)单击窗体。求出100以内所有素数的和,并将结果输出到窗体上,并存入所给变量SUM中。2、(事件)单击窗体。求10~20之间所有素数的乘积并输出在窗体上。将结果存入变量L中。3、(事件)单击窗体。在窗体上输出100~200之间的所有合数。求出所有数之和存入SUM中。合数:指除了1和本身外,还能被其他数整除的数。861、以下程序用于判断一个正整数(≥3)是否为素数。PrivateSubForm_Click()n=InputBox("请输入一个正整数(≥3)")k=Int(Sqr(n))i=2swit=0'**********SPACE**********Whilei<=kAnd【?】'**********SPACE**********If【?】Thenswit=1Else'**********SPACE**********【?】EndIfWendIfswit=0ThenPrintn;"是一个素数"ElsePrintn;"不是素数"EndIfEndSubSwit=0IfnmodI=0theni=i+1872、该程序的功能是求出100到200之间的全部素数,并且按每行4个、每个数据之间有10个空格的格式输出。PrivateSubForm_Click()dimk%,i%,jasintegerk=0Fori=100To200'**********FOUND**********Forj=1Toi-1IfiModj=0ThenExitForNextjIfj=iThen'**********FOUND**********Printi;Tab(10);k=k+1'**********FOUND**********IfkMod5=0ThenPrint;EndIfNexti EndSub2toi-1spc(10);print88三、最大值与最小值求若干个数的最大值(或最小值)时,最大值(或最小值)需要保存在一个变量中(不妨设为max或min)。一般取该数列中的第一个值作为最大值(或者最小值);如果知道这批数的取值范围,可以取一个比最小值还小的数作为最大值。打擂过程(1)确定一个擂主(2)挑战者上台(3)挑战者和擂主比较,如果挑战者胜,则更换擂主,否则,擂主卫冕(4)重复执行2-4,直到最后一个挑战者比完。89例、求10个数中的最大值和最小值PrivateSubCommand1_Click()x=InputBox("输入x的值:")Min=x:Max=xFori=2To10x=InputBox("输入X的值:")Ifx>MaxThenMax=xElseIfx<MinThenMin=xEndIfNextiPrint"Max=";Max:Print"Min=";MinEndSub思考:1、求n个数的最大值和最小值。2、求最大值和最小值分别是第几个数。90例、输入一批数,以0作为终止标记,求其最大值、最小值。PrivateSubCommand1_Click()Dimx%,max%,min%x=InputBox("输入x的值:")【1】:min=xDoWhile【2】Ifx>maxThenmax=xElseIfx<minThenmin=xEndIf【3】LoopPrint"Max=";max:Print"Min=";minEndSubx<>0x=InputBox("输入x的值:")max=x91综合应用四、递推法

“递推法”又称为“迭代法”,其基本思想是每次都从旧值的递推出新值,并由新值代替旧值。假定一对兔子从第三个月起逐月生一对一雌一雄的小兔,每对小兔在两个月后也逐月生一对一雌一雄的小兔,…。问一年之后兔房里共有多少对兔子?92综合应用例、求Fibonacci数列的前20项。

PrivateSubForm_Click()Dimf1%,f2%,f3%f1=1f2=1Printf1Printf2Fori=3To20f3=f1+f2Printf3f1=f2f2=f3NextiEndSub93思考题Fibonacci数列的前一项和后一项比值的极限趋向于黄金分割点0.618,求黄金分割点的近似值,要求误差小于10-5。941、(事件)单击窗体。求1+2+3+5+8+13+……前20项的和,并将结果在窗体上输出。将结果存入变量SUM中。'**********program**********Dimf1AsLong,f2AsLong,f3AsLongDimi%sum=0f1=1:f2=2sum=f1+f2Fori=3To20f3=f1+f2f1=f2f2=f3sum=sum+f3NextiPrintsum'**********end**********952、求菲波那契数列的第20项,并将结果输出到窗体上,同时存入所给变量item中。菲波那契数列:第1、2项分别是0、1,从第3项开始,每一项等于其前两项的和。'**********program**********a=0b=1fori=3to20item=a+ba=bb=itemnextprintitem'**********end**********963、(事件)单击窗体。在窗体上打印数列2/1,3/2,5/3,8/5,13/8…的前10项,并求其和,将和保存在变量s中'**********program**********Dims!,f1%,f2%,f3%,k%s=0:f1=1:f2=2Fork=1To10Print(CStr(f2))&"/"&CStr(f1)f3=f1+f2s=s+f2/f1f1=f2f2=f3NextPrints'**********end**********97综合应用五、穷举法

“穷举法”也称为“枚举法”,即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。例:百元买百鸡问题。假定小鸡每只5角,公鸡每只2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论