第五章 控制结构编程练习.docx

上传人:b****8 文档编号:10331073 上传时间:2023-02-10 格式:DOCX 页数:46 大小:1.55MB
下载 相关 举报
第五章 控制结构编程练习.docx_第1页
第1页 / 共46页
第五章 控制结构编程练习.docx_第2页
第2页 / 共46页
第五章 控制结构编程练习.docx_第3页
第3页 / 共46页
第五章 控制结构编程练习.docx_第4页
第4页 / 共46页
第五章 控制结构编程练习.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

第五章 控制结构编程练习.docx

《第五章 控制结构编程练习.docx》由会员分享,可在线阅读,更多相关《第五章 控制结构编程练习.docx(46页珍藏版)》请在冰豆网上搜索。

第五章 控制结构编程练习.docx

第五章控制结构编程练习

第5章控制结构程序设计

No.1

绿色文字,用上引号隔开的,是注释,不需要写,起到说明作用。

No.2

设置text1的maxlength设置为3

方法1程序代码:

方法2程序代码:

PrivateSubCommand1_Click()

DimaAsInteger‘如果思考成熟的话,当然可以不定义那么多变量

a=Val(Text1.Text)‘但往往我们办不到。

Text4.Text=a\100‘求百位数

Text3.Text=(aMod100)\10‘求十位数

Text2.Text=aMod10‘求个位数

EndSub

方法3程序代码:

PrivateSubCommand1_Click()’往往我们做不到先知先觉,所以定义一些变量也无妨。

DimaAsInteger

a=Val(Text1.Text)

b=a\100‘求百位数

c=aMod10‘求个位数

d=(a-c-100*b)\10‘求十位数

Text2.Text=b

Text3.Text=d

Text4.Text=c

EndSub

No.3

No.4

方法1程序代码:

一般来说,题目都提供了判断的规则。

需要完成的,是如何接近这个规则。

取字符mid()函数,绝对是一个很方便的手段。

方法2程序代码:

PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger,cAsInteger,dAsInteger

a=Val(Text1.Text)

b=a\100‘用数学方法取出个位,十位,百位上的数

c=(aMod100)\10

d=aMod10

Ifa=b^3+c^3+d^3Then

Label1.Caption="是水仙花数"

Else

Label1.Caption="不是水仙花数"

EndIf

EndSub

No.5

方法1程序代码

PrivateSubCommand1_Click()

DimaAsInteger,iAsInteger,sAsLong,sumAsLong

a=Val(Text1.Text)

Fori=0To5

s=s+a*10^i

sum=sum+s

Nexti

Text2.Text=sum

EndSub

方法2程序代码

PrivateSubCommand2_Click()

DimaAsInteger,

a=Val(Text1.Text)

Text2.Text=a*(1+11+111+1111+11111+111111)

EndSub

选择结构编程

No.6

PrivateSubCommand1_Click()

DimxAsDouble,y#‘熟练掌握选择的几种结构,单分支,双分支,多分支,以及selectcase

x=Val(Text1.Text)

Ifx<10Then

y=x-1

ElseIfx<20Then

y=2*x-1

Else

y=3*x-1

EndIf

Text2.Text=y

EndSub

No.7

PrivateSubCommand1_Click()

DimaAsSingle,bAsSingle,cAsSingle

a=Val(Text1.Text)‘因为等下要进行数学大小比较,所以转换类型。

b=Val(Text2.Text)

c=Val(Text3.Text)

Ifa<=0Orb<=0Orc<=0Then‘选择结构的几个条件如何写,能否构成并列关系,是重点。

Text4.Text="非法数据"

ElseIfa+b>cAndb+c>aAnda+c>bThen

Text4.Text="能"

Else

Text4.Text="否"

EndIf

EndSub

No.8

方法1程序代码:

策略:

总体来说,先比较两个。

比较大的,令他暂时为max;比较小的,令他暂时为min。

然后再把第三个c跟目前的max比较,跟目前的min比较。

PrivateSubCommand1_Click()

DimmaxAsInteger,minAsInteger

A=Val(Text2.Text)

B=Val(Text2.Text)

C=Val(Text2.Text)

max=a

min=max

Ifb>maxThenmax=b

Ifb

Ifc>maxThenmax=c

Ifc

Text4.Text=max

Text5.Text=min

EndSub

方法2程序代码:

PrivateSubCommand1_Click()

Dima%,b%,cAsInteger,max%,min%

a=Val(Text1.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

Ifa

max=b

min=a

Else'a>b

max=a

min=b

EndIf

Ifc>maxThenmax=c

Ifc

Text4.Text=max

Text5.Text=min

EndSub

方法3程序代码:

PrivateSubCommand1_Click()

Dima%,b%,cAsInteger,max%,min%

a=Val(Text1.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

Ifa>bThen

max=a

Else'b>a

max=b

EndIf

Ifc>maxThenmax=c

Ifa>bThen

min=b

Else

min=a

EndIf

Ifmin>cThenmin=c

Text4.Text=max

Text5.Text=min

EndSub

方法4程序代码:

最复杂的一种

PrivateSubCommand1_Click()

Dima%,b%,cAsInteger,max%,min%

a=Val(Text1.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

Ifa

Ifb

max=c

min=a

Else'b>c

Ifa>cThen

max=b

min=c

Else'a

max=b

min=a

EndIf

EndIf

Else'a>b

Ifa

max=c

min=b

Else'a>c

Ifb>cThen

max=a

min=c

Else

max=a

min=b

EndIf

EndIf

EndIf

Text4.Text=max

Text5.Text=min

EndSub

No.9

PrivateSubCommand1_Click()

DimaAsInteger

a=Val(Text1.Text)

IfaMod4=0AndaMod100<>0OraMod400=0Then‘根据题意书写表达式

Label2.Caption="闰年"

Else

Label2.Caption="非闰年"

EndIf

EndSub

No.10

PrivateSubCommand1_Click()

'''不得删除本行注释

DimnAsInteger

n=Val(Text1.Text)

IfnMod4=0AndnMod100<>0OrnMod400=0Then

Text2.Text=366

Else

Text2.Text=365

EndIf

EndSub

循环结构编程

No.12

PrivateSubCommand1_Click()

DimaAsInteger

a=Val(Text1.Text)

Fori=1Toa

Sum=Sum+i^2‘通常是sum=sum+i,但是,并不是说第i项就一定是i,本题第i项就是i2

Next

Text2.Text=Sum

EndSub

No.13参考第六章-》单选按钮

由于是两个单选框,所以互相排斥,所以option.value=true的时候,肯定option.value=false.因此可以建立双分支结构.

方法2程序代码:

PrivateSubCommand1_Click()

'''不得删改本行注释

DimnAsInteger,iAsInteger,sumAsLong

n=Val(Text1.Text)

sum=0

IfOption1.Value=TrueThen

Fori=1TonStep2

sum=sum+i

Nexti

Else

Fori=2TonStep2

sum=sum+i

Nexti

EndIf

Text2.Text=sum

EndSub

方法3程序代码:

PrivateSubCommand1_Click()

'''不得删改本行注释

DimnAsInteger,iAsInteger,sumAsLong

n=Val(Text1.Text)

sum=0

IfOption1.Value=TrueThen

A=1

Else

A=2

EndIf

Fori=atonstep2

Sum=sum+i

Nexti

Text2.Text=sum

EndSub

No.14

方法1:

PrivateSubCommand1_Click()

DimiAsInteger

Fori=1To200

IfiMod3=0AndiMod7=0Then

Text1.Text=Text1.Text&""&i‘第二个Text1.Text代表过去的积累,第一个代表新的总的。

EndIf

Next

EndSub

方法2

PrivateSubCommand1_Click()

DimiAsInteger

Fori=1To200

IfiMod3=0AndiMod7=0Then

Text1.Text=Text1.Text&space

(2)&i‘space

(2)代表输出2个空格。

EndIf

Next

EndSub

No.15

逐一判断,因为要逐一,所以要循环;因为要判断,所以用选择。

PrivateSubCommand1_Click()

DimiAsInteger,nasinteger,sumasinteger

N=val(text1.text)

Fori=1Ton

IfiMod3=0Then

sum=sum+i

EndIf

Next

Text2.text=sum

EndSub

No.16

PrivateSubCommand1_Click()

DimiAsInteger

Fori=1To100

IfiMod9=0Then

Text1.Text=Text1.Text&""&i^2

EndIf

Next

EndSub

No.17

PrivateSubCommand1_Click()

DimiAsInteger,nasinteger,sumasinteger

N=val(text1.text)

Sum=1‘累乘的sum,需要事先设置为1,否则sum默认为0,每次累乘的结果都为0。

Fori=1Ton

IfiMod7=0Then

sum=sum*i

EndIf

Next

Text2.text=sum

EndSub

No.18

策略:

先生成一个,令他为max,再陆续生成9个。

每生成一个a,就和之前的max和min比较。

比max大,把max里面的值改为当前这个a;比min小,把min里面的值改为当前这个a。

PrivateSubCommand1_Click()

DimiAsInteger,minAsInteger,maxAsInteger,aAsInteger

max=Int(Rnd*101)

min=max

Fori=1To9

a=Int(Rnd*101)

Ifa>maxThenmax=a

Ifa

Next

Text1.Text=max

Text2.Text=min

EndSub

No.21

PrivateSubCommand1_Click()

Dimn,iAsInteger

n=int(Text1.Text)

fori=2ton-1

ifnmodI=0thenexitfor

next

ifi<=n-1then‘或者本语句写成ifi=nthen

Label2.Caption="非质数"‘相应的,这边是“质数”

Else

Label2.Caption="质数"‘相应的,这边是“非质数”

Endif

EndSub

PrivateSubCommand1_Click()

Dimn,iAsInteger

n=Val(Text1.Text)

Fori=2Ton-1

IfnModi=0Then

Label2.Caption="非质数"

Else

Label2.Caption="质数"

EndIf

Nexti

EndSub

错误的编程方式!

因为大部分n/(n-1)不能整除。

那么,n=14时,在循环中一直到i=13。

最终14mod13,反而是质数

No.22

PrivateSubCommand1_Click()

'''不得删除本行注释,参考课本P96

DimmAsInteger,nAsInteger,r%

m=Val(Text1.Text)

n=Val(Text2.Text)

r=mModn

DoWhiler<>0

m=n

n=r

r=mModn

Loop

Label3.Caption=n

EndSub

No.23

方法1程序代码:

PrivateSubCommand1_Click()

'''不得删改本行注释

DimiAsInteger,jAsInteger,mAsInteger,sAsLong

Fori=Len(Text1.Text)To1Step-1

m=val(Mid(Text1.Text,i,1))

s=s+m*2^j‘二进制转换为十进制,规定用位权展开式。

寻找多项式的规律,

j=j+1

Nexti

Text2.Text=s

EndSub

方法2程序代码:

PrivateSubCommand1_Click()

'''不得删改本行注释

DimiAsInteger,mAsInteger,sAsLong

a=Len(Text1.Text)‘两处要用到长度,所以就定义一个变量a来接收

Fori=1ToaStep1

m=Val(Mid(Text1.Text,i,1))

s=s+m*2^(a-i)'二进制转换为十进制,规定用位权展开式。

寻找多项式的规律,

Nexti

Text2.Text=s

EndSub

No.25

方法1:

PrivateSubCommand1_Click()

Fori=1ToLen(Text1.Text)step1

a=Mid(Text1.Text,i,1)

Text2.Text=a+Text2.Text

Next

EndSub

方法2:

PrivateSubCommand1_Click()

Fori=Len(Text1.Text)To1step-1

a=Mid(Text1.Text,i,1)

Text2.Text=Text2.Text+a

Next

EndSub

方法3:

PrivateSubCommand1_Click()

I=1

whilei<=Len(Text1.Text)

a=Mid(Text1.Text,i,1)

Text2.Text=Text2.Text+a

I=i+1

Next

EndSub

No.26

打开工程文件csnx.vbp,添加适当的事件过程代码,实现以下功能:

单击“产生”按钮,随机产生一个四位的正整数,并显示在文本框text1中;单击“计算”按钮,在文本框text2中显示该数各位数字之和。

策略:

逐一取字符,转换成数值型,进行累加

PrivateSubCommand1_Click()

Text1.Text=Int((9999-1000+1)*Rnd+1000)

EndSub

PrivateSubCommand2_Click()

'''不得删改本行注释

DimnAsInteger,iAsInteger,sAsInteger

Fori=1To4

s=s+Val(Mid(Text1.Text,i,1))‘取字符的结果是字符型数据,要经过val后,才能变成数值

Nexti

Text2.Text=s

EndSub

No.27

策略:

●取字符(从第2个字符开始取),转换成数值型,进行累加,

●取出第1个字符,与上面的累和比较,是否相等。

是,文本框就是’合法会员”;是,文本框就是’非法会员”

PrivateSubCommand1_Click()

'''不得删除本行注释

DimiAsInteger,nAsInteger,sAsInteger

IfLen(Text1.Text)=6andval(text1.text)>=100000Then‘排除两种情况:

输入不够6位;输

Fori=2To6‘入的8542ab这种样式的。

因为val(8542ab)的结果是8542。

Val函数的特点

n=val(Mid(Text1.Text,i,1))

sum=sum+n

Nexti

Ifval(Mid(Text1.Text,1,1))=sumMod10Then‘题目意思是sum可能是两位数。

求个位数

Text2.Text="合法会员"‘那么632146也是合法的,6等于16的个位数

Else

Text2.Text="非法会员"

EndIf

Else

Msgbox“请你输入6位会员号”

Endif

EndSub

No.28

策略:

●取出第一个字符max,假定它是最大的字符。

●利用循环,从第二个字符开始逐一取字符A。

在循环内嵌套选择语句,A是否比max大。

是,就把a的值赋给max。

方法1程序代码:

DimmAsString,iAsInteger,sAsString

max=Mid(Text1.Text,1,1)‘字符比较,默认按照ASCII比较。

Fori=2ToLen(Text1.Text)

s=Mid(Text1.Text,i,1)

Ifs>maxThenmax=s

Nexti

Label2.Caption=max

EndSub

方法2程序代码:

DimmAsString,iAsInteger,sAsString

max=Mid(Text1.Text,1,1)‘字符比较,默认按照ASCII比较。

Fori=2ToLen(Text1.Text)

s=Mid(Text1.Text,i,1)

Ifasc(s)>asc(max)Thenmax=s

Nexti

Label2.Caption=max

EndSub

No.28’可参考课本P160-》Function过程

OptionExplicit

DimmAsInteger,nAsInteger

PrivateSubCommand1_Click()

'''不得删除本行注释

n=Val(Text1.Text)

m=Val(Text2.Text)

Text3.Text=Fact(m)/(Fact(n)*Fact(m-n))

EndSub

'###################################################

FunctionFact(kAsInteger)AsDouble

DimiAsInteger,FAsDouble

F=1

Fori=1Tok

F=F*i

Nexti

Fact=F

EndFunction

'###

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1