第06章 模块化程序设计习题参考答案Word格式.docx

上传人:b****1 文档编号:813924 上传时间:2023-04-29 格式:DOCX 页数:30 大小:21.06KB
下载 相关 举报
第06章 模块化程序设计习题参考答案Word格式.docx_第1页
第1页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第2页
第2页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第3页
第3页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第4页
第4页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第5页
第5页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第6页
第6页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第7页
第7页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第8页
第8页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第9页
第9页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第10页
第10页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第11页
第11页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第12页
第12页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第13页
第13页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第14页
第14页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第15页
第15页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第16页
第16页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第17页
第17页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第18页
第18页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第19页
第19页 / 共30页
第06章 模块化程序设计习题参考答案Word格式.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第06章 模块化程序设计习题参考答案Word格式.docx

《第06章 模块化程序设计习题参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《第06章 模块化程序设计习题参考答案Word格式.docx(30页珍藏版)》请在冰点文库上搜索。

第06章 模块化程序设计习题参考答案Word格式.docx

y=-x

Callmyabs(a,b)'

第2题

Functionfact(nAsInteger)aslong

t=1

Fori=1Ton

t=t*i

Nexti

fact=t

DimA%,b%,c%

a"

b=Val(InputBox("

c=Val(InputBox("

y=fact(a)+fact(b)+fact(c)

Printy

Subfact(nAsInteger,tAsLong)

t=t*i

Dima%,b%,c%,yAsLong,sAsLong

Callfact(a,y)'

调用过程计算a!

结果为y

s=s+y

b"

Callfact(b,y)'

c=Val(InputBox("

c"

Callfact(c,y)'

Prints

第3题

方法1定义Function过程Gdc(x,y),实现两个数求最大公约数

FunctionGdc(ByValx,ByValy)'

求最大公约数

yThen'

处理x、y,要求x<

=y

t=x:

x=y:

Forn=xTo1Step-1'

最大公约数所在区间为[1,x]

IfxModn=0AndyModn=0Then'

最大公约数判断

ExitFor

Nextn

Gdc=n

请输入第1个数"

请输入第2个数"

请输入第3个数"

m=Gdc(a,b)'

求得两个数a,b的最大公约数

m=Gdc(m,c)'

求m,c的最大公约数

Printm'

输出最大数

主程序可简化为:

m=Gdc(Gdc(a,b),c)'

嵌套调用求得a,b,c的最大公约数

第4题

方法1定义sub过程Myrand(),实现随机数产生

SubMyrand(aAsInteger,bAsInteger,nAsInteger)

Ifa>

bThen'

要求a<

=b

t=a:

a=b:

b=a

Randomize'

设置随机种子

r=Int(Rnd()*(b-a+1)+a)'

产生指定范围随机数

Printr'

输出随机数

Dima%,b%,n%

输入下限a"

输入上限b"

n=Val(InputBox("

输入个数n"

CallMyrand(a,b,n)

方法2定义Function过程Myrand(),实现随机数产生

FunctionMyrand(aAsInteger,bAsInteger,nAsInteger)

第5题

方法1定义数组赋值sub过程(ArrayLet),数组输出sub过程(ArrayPrint),数组求和Function过程(ArraySum)。

主程序定义动态数组,用随机数赋值,调用过程实现处理。

SubArrayLet(b()AsInteger,nAsInteger)'

数组赋值

Forj=1Ton

b(i,j)=Int(Rnd()*10)'

用(0,10)区间的随机整数给数组赋值

Nextj

SubArrayPrint(b()AsInteger,nAsInteger)'

数组输出

Printb(i,j);

Print

FunctionArraySum(b()AsInteger,nAsInteger)'

数组运算输出

s=0

Ifi=jOrj=n+1-iThen'

对角线元素求和

s=s+b(i,j)

Mysum=s

Dimm%,b%,n%

m=Val(InputBox("

输入m"

))'

输入数组大小

ReDima(1Tom,1Tom)AsInteger'

定义数组大小

CallArrayLet(a(),m)'

CallArrayPrint(a(),m)'

PrintArraySum(a(),m)'

数组运算

方法2定义数组赋值sub过程(ArrayProces),实现数组赋值、输出,求和。

SubArrayProces(b()AsInteger,nAsInteger,resultAsInteger)'

数组元素赋值

数组元素输出

result=s

Dimm%,b%,n%,y%

CallArrayProces(a(),m,y)'

数组处理

Printy'

结果输出

方法3定义数组赋值Function过程(ArrayProces),实现数组赋值、输出,求和。

FunctionArrayProces(b()AsInteger,nAsInteger)AsInteger'

ArrayProces=s

y=ArrayProces(a(),m)'

第6题

方法1定义Function过程Prime(n),n为判断的数据,m[2,n-1]为可能整除n的数,采用穷举法,判断n能否被所有的m整除。

若n不能被所有m[2,n-1]整除,则n为质数(prime=true)

FunctionPrime(nAsLong)AsBoolean'

定义函数,判断质数,返回值为逻辑值

DimmAsLong

Form=2Ton-1'

m为可能整除n的数,范围为[2,n-1]

IfnModm=0Then'

整除判断

ExitFor'

若整除,则不是质数,不再进行下一次判断,退出循环

Nextm'

若不能整除,则进行下一次判断,m=m+1

Ifn=mThen'

若n=m,则说明所有m不能整除n

Prime=True'

n是质数

Prime=False'

n不是质数

PrivateSubCommand1_Click()'

DimiAsLong

Fori=100To200'

判断100~200之间的所有数

IfPrime(i)=TrueThen'

调用函数判断1个数是否为质数

Printi;

是质数,则输出

s=s+1'

输出计数

IfsMod10=0Then'

控制输出换行

Print'

方法2定义Function过程Prime(n),n为判断的数据,m[2,sqr(n)]为可能整除n的数,采用穷举法,判断n能否被所有的m整除。

若n不能被所有m整除,则n为质数(prime=true)

Form=2Tosqr(n)'

m为可能整除n的数,范围为[2,sqr(n)]

Ifm>

=Sqr(n)Then'

若m>

=Sqr(n),则说明所有m不能整除n

IfPrime(i)Then'

方法3定义Function过程Prime(n),n为判断的数据,m[2,sqr(n)]为可能整除n的数,采用穷举法,判断n能否被所有的m整除。

若n不能被所有m[2,n-1]整除,则n为质数(prime=0)

FunctionPrime(nAsLong)AsInteger'

定义函数,判断质数,返回值为0或1

DimmAsLong,pAsInteger

p=0'

默认p=0,表示是质数,

Form=2ToSqr(n)'

p=1'

若整除,则p=1,表示不是质数

不是质数,不再进行下一次判断,退出循环

Prime=p'

若p=0,则n是质数;

若p=1,则n不是质数

IfPrime(i)=0Then'

第7题

方法1定义Function过程Prime(n),判断质数(prime=true);

定义Functionhw(n)判断回文数,返回值为逻辑值,通过调用两个函数判断回文质数

Sqr(n)Then'

Sqr(n),则说明所有m不能整除n

Functionhw(nAsLong)AsBoolean'

定义函数,判断回文数,返回值为逻辑值

获得n的各位数码,判断是否对称

Dima%,b%,c%,d%

a=n\10000'

a为第1位数字

b=(nMod10000)\1000'

b为第2位数字

c=(nMod100)\10'

c为倒数第2位数字

d=nMod10'

d为倒数第1位数字

Ifa=dAndb=cThen'

判断对称,是否为回文数

hw=True'

n是回文数

hw=False'

Fori=10000To99999'

判断10000~99999之间的所有数

IfPrime(i)=TrueAndhw(i)=TrueThen'

调用函数判断1个数是否为质数和回文数

是回文质数,则输出

MsgBox"

ok"

方法2

在方法1的主程序中,通过同时调用两个函数判断回文质数,这种方法效率不高,因为对任意1个数,都要进行质数和回文数判断,运算量大。

若考虑先判断质数,若是质数,再次基础上再判断是否是回文数,这种方法就可以减少对不是质数的数进行回文判断。

因此,主程序修改如下:

DimiAsLong

IfPrime(i)=TrueThen'

Ifhw(i)=TrueThen'

调用函数判断1个数是否为回文数

EndIf

方法3

在方法2的主程序中,若考虑先判断质数,若是质数,再次基础上再判断是否是回文数,这种方法就可以减少对不是质数的数进行回文判断。

但是,判断质数的运算量相对判断回文数运算量,判断质数的运算量较大,这种方法效率不够高效。

改进的方法是先进行回文数判断,若是回文数,再进行质数判断,可减少运算量。

Ifhw(i)=TrueThen'

方法4定义Function过程Prime(n),判断质数(prime=true);

IfnModm=0Then'

采用字符处理方式,判断回文数,返回值为逻辑值

将n装换为字符串,获取各位数码,判断是否对称

Dims$,a$,b$,c$,d$

s=LTrim(Str(n))

a=Mid(s,1,1)'

b=Mid(s,2,1)'

c=Mid(s,4,1)'

d=Mid(s,5,1)'

方法5定义Function过程Prime(n),判断质数;

定义Functionhw(n)判断回文数,返回值为逻

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2