湖南省计算机等级考试辅导_第1页
湖南省计算机等级考试辅导_第2页
湖南省计算机等级考试辅导_第3页
湖南省计算机等级考试辅导_第4页
湖南省计算机等级考试辅导_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

湖南省计算:机等级考试

辅导

2006年n月

计算机系一刘永逸

1

内容提要

院概括性指导

国重点结构、常用标准函数、自定

义函数、基本处理、逻辑表达式

日常用算法:穷举法、递推

更分类练习

Ci十多种常见类型

2

FoxPro程序的基本结构

配顺序结构

纪选择(分支)结构

■IF...ELSE...ENDIF

更多选择(分支)结构

3D0CASE...ENDCASE

3

圮循环结构

HDOWHILE...ENDDO

HFOR...ENDFOR/NEXT

纪嵌套

岛分支与分支

■循环与循环

■循环与分支

程序中可省代码

Rsettalkon

比clear&&此句一般保留

Rsettalkoff

Rreturn

5

配给出两种常用结构

比可作“模板”使用

纪学会填空!!!

配FOR...ENDFOR|NEXT结构

fbri=...to...step...

if...

(loop、exit)

endif

endfor计数循环!

7

RDOWHILE...ENDDO结构

s=...

i=...

dowhile...

enddo

?...一般的当型循环!

8

FoxPro程序中常用函数

W系统内部标准函数

岛取整:int(x)

U求余数:mod(a,b)

11求平方根:sqrt(x)

II绝对值:abs(x)

U其它…

9

W用户自定义函数

II逻辑函数判定:prime(x)

外部函数的方法(不讲)

内部函数的方法(程序的一部分)

见:有关素数程序设计部分

II注:二级必备!

10

程序中最基本的处斌

W计数

■初值:n=0或…

■循环处理:n=n+l

回连加

口初值:s=0或…

U循环处理:s=s+i或...

11

纪连乘

国初值:t=l或…

循环处理:t=t*i或…

12

最常用的判断

Ph被b整除(倍数、因子)

Hmod(a,b)=0

口a是整数

Mint(a)=a

・应用:求不定方程的整数解

13

多条件组合为逻辑表达式

PJx能被3整除但不能被4整除

■mod(x,3)=0andmod(x,4)#0

因x是能被3或5整除的偶数

Hmod(x,2)=0and(...or...)

14

精确与非精确编程思路

同精确编程:只输出所需结果。

纪非精确编程:输出相关的数据,

从中容易得出所需要的结果。

15

四例:设s=2+4+6+,求s的最

大值,使s〈=1000。#992

(下两页有程序)

16

精确编程(不细讲5

日clear

Rn=O

Rs=O

配dowhiles<1000

纪n=n+2

纪s=s+n

B*?n,s

Renddo

R?s-n17

非精确编程

Rclear

Ws=O

Rfbrn=2to100step2

Rs=s+n

R?n,s

Eendfor

18

1、简单的求和问题

比数列求和

Hai=f(n),求Sn=ai+...+an,是数列

循环处理:a=f(i),s=s+a

或s=s+f(i)

和一定条件下的求和

19

配求1〜108所有整数的平方和。

#425754

配求s=l*2+2*3+...+100*101

配求s=l*3+3*5+...+99*101

W可在Excel中求解

20

比求1〜135的平方根的和。

#1051.31

国基本算法:循环、连加

可在Excel中求解

配求1〜135的和的平方根。

21

日求[351,432]之间所有既不能被3

整除,又不能被8整除的整数的和。

#18413

w求1至U1ooo之内能被7或n整除,

但不能同时被7和11整除的所有

整数的个数。#208

22

2、等比数列及求和“

配求2+4+8+16+32+...,当累加

数大于9000时,则终止计算并

输出结果。#16382

23

0已知Sl=l,S2=l+2,

S3=l+2+4,…,求

S=S1+S2+S3+S4+...+S20的值。

#2097130

24

比一球从100米高处落至平地并连

续反弹、落下。设每次反弹高度

按4/5倍递减,试求出最小的自

然数n,使得此球从开始下落至

第n次着地时在垂直方向所经过

的总路程超过800米。

0基本算法:循环、(连乘、)连加

25

3、递推问题(Excel时麻)

纪设有用26个表达式:a=l,

b=l/(a+l),c=l/(b+2),

z=1/(y+25),试泵出z的值。

#0.04

田基本算法:循环、单项递推

助1尸1,f(n尸1/(f(n-l)+n-l)

26

纪斐波那契数歹!J{f(i)}:1,1,2,3,5,8,…,

试输出前20项。

■基本算法:循环、递推

Bf(l>1,f(2)=l,f(n>f(n-2)+f(n-l)

27

回基本算法(使用数组)

[1定义数组:dimensionf(50)

国循环初值:f⑴=l,f(2尸1;

国循环处理:f(n)=f(n-2)+f(n-1)

28

配clear

gdimef(20)

纪f⑴=1

纪f(2)=l

H?f(l),f(2)

Rfbrn=3to20

Kf(n>f(n-2)+f(n-l)

叵??f(n)

Flendfor

29

斐波那契数列{f⑴}:1,1,2,3,5,8,…

纪求F(45)值。#1134903170

纪求F(l)+F(2)+…+F(50)#32951280098

纪求F(l)+F(3)+...+F(49)#12586269025

纪求10000000内最大的#9227465

纪求10000000内的个数#35

30

斐波那契数列一相关问题(例1)

内求S=l/2+2/3+3/5+5/8+…的前30

项的和。#18.46

3{f(n)}:1,2,3,5,8,...,31项

■S=l/2

■S=S+f(n-l)/f(n),n=3,4,…,31

31

斐波那契数列一相关问题(例2)

同求S=l/2+3/5+8/13+21/34+…的

前30项的和。#18.40

■{f(n)}:123,5,8,…,60项

■S=l/2

■S=S+f(n-l)/f(n),n=4,6,8,…,60

32

三项递推的数列

门一个数列,它的头三个数为0,

0,1,以后的每个数都是其前

三个数的和,求此数列的前30

项之和。#18947744

33

4、常见数字问题的处诬

m水仙花数:三位数,等于其各位

数字之立方和。

,记住10000以内:

153、370、371、407

,考试中,有四位水仙花数之说。

看清题意!

34

W水仙花数的算法是数字问题之

根本!

・算法一:单循环(x:100〜999)

由由数x得出数字abc???

熟练掌握一种从数中取数字的方法

国算法二:三重循环(a:l〜9b,c:0〜9)

由数字a、b、c组成数x(100〜999)

35

W设X是一个四位数,千位到个位

分别是a、b、c、d,则:

3a=int(x/1000)

Bb=int((x-1000*a)/100)

■c=int((x-1OOO*a-l00*b)/10)

3d=mod(x,10)

■(或见下页)

36

Hb=mod(int(x/100),10)

■c=mod(int(x/l0),10)

Cl或

Mb=int(mod(x?1000)/100)

Mc=int(mod(x,100)/10)

37

FJclear&&水仙花程序1

gn=O

纪forx=100to999

纪a=int(x/100)

Rb=int((x-a*100)/10)

纪c=mod(x510)

Wifx=a*a*a+b*b*b+c*c*c

纪n=n+1

S?n,x

配endif

F^endfbr

38

纪clear&&水仙花程序2

⑸n=0

Rfora=lto9

叵forb=0to9

纪forc=0to9

纪x=100*a+10*b+c

比ifx=a*a*a+b*b*b+c*c*c

纪??x

纪n=n+1

⑸endif

回endfor

gendfor

纪endfor

纪?n

39

比求在[100,999]内所有不含数字0

且各位数字之积被96整除的数之

和。#26640

Ua*b*c〈>0andmod(a*b*c,96)=0

40

配求[123,4321]内回文数的个数。

#120

■都看作四位数abed,两种情况

处理:

a=0andb=d

Sa<>0anda=dandb=c

41

clear&&回文数程序1

纪n=0

纪forx=123to4321

Ra=int(x/1000)

纪b=int((x-a*1000)/100)

£c=int((x-a*1000-b*100)/10)

纪d=mod(x910)

gif(a=0andb=d)or(a<>0anda=dandb=c)

纪n=n+1

纪??x

纪endif

gendfor

纪?n

42

纪clear&&回文数程序2

纪n=0

Kfora=0to4

纪forb=0to9

Rforc=0to9

Rford=0to9

纪x=1000*a+100*b+10*c+d

£ifx>=123andx<=4321and((a=0andb=d)or(a<>0

anda=dandb=c))

纪??x

纪n=n+1

叵endif

纪endfor

纪endfor

纪endfor

纪endfor

纪?n

43

5、因子问题-因子个数、和

W问[100,200]之间有奇数个不同因

子的整数共有多少个?#5

国基本算法:二重循环

白外循环:forx=100to200穷举!

内循环模块一:求X之因子个数

内循环模块二:判断处理

44

阿clear

gn=0

gforx=100to200

纪k=0

£fori=ltox

Rifmod(x,i)=0

纪k=k+l

纪endif

£endfbr

Rifmod(k,2)=l

g??x

纪n=n+1

gendif

Rendfor

E?n45

完数

回求在[10,1000]之间的所有完数

之和。各真因子之和(不包括自

身)等于其本身的正整数称为完

数。例如:6=1+2+3,6是完数。

#524

46

[1settalkoff

[1clear

nk=o

■forn=10to1000

ns=o

Elfori=1ton/2

3ifmod(n,i)=0

9s=s+i

[1endif

[1endfor

3ifs=n

[1k=k+n

[1endif

[1endfor

B?k

[1settalkon

[]return47

完备数

因已知24有8个正整数因子(即:

1,2,3,4,6,8,12,24),而24正好

能被其因子数8整除,求[10,

100]之间有多少个正整数能被

其因子的个数整除。#12

48

多因子完备数的概态

同若某整数N的所有因子之和等于

N的倍数,则N称为多因子完备

数,如数28,其因子1、2、4、7、

14、28之和是56=2*28,28是多因

子完备数。

49

因求[1,200]之间有多少个多因子

完备数。#4

国基本算法:二重循环

外循环:forx=1to200穷举!

内循环功能一:求x的因子之和

内循环功能二:判断处理

50

最大公约数

日求出583573和559399的最大公

约数。#79

国基本算法:单循环求出所有因子

51

最小公倍数

力求出9269和8671的最小公倍

数。#268801

Ua和b最大公约数d与最小公倍

数k具有关系:a*b=d*k

52

6、组合问题:不定方直象解

纪大、号、小学生?36人消皂,

每大4元,每中2元,每小1元,

共120元,问大、中、小学生人

数组合有多少种可能?(每类学

生学生的人数均不为0。)

•基本算法:三重(或二重循环)

53

程序(三重循环)

Rclear

纪n=0

纪forx=lto36

纪fory=lto36

纪forz=lto36

纪ifx+y+z=36and4*x+2*y+z=120

纪n=n+1

纪?x,y,z

纪endif

纪endfor

回endfor

纪endfor

纪?n

54

配求方程3x-7y=1在条件冈v100且

|y|<40下的整数解的个数。#26

0■基本算法:二重或单循环

55

W已知正整数A,B(假定A<B),满

足A*B=5432,^S=A+B的最小

值。#153

■数学结论:A与B相差小其和就小

•基本算法:二重或单循环求因子

56

(勾、股、)弦教”

门勾、股、弦(正整数)

a2+b2=c2(求组数:a<b<c)

基本算法(多重循环)

■(1)c:(有固定值或循环给出)

耿2)b:2〜c-1

ffl(3)a:1〜b-1

57

因求[121,140]之间的弦数的个

数。(如5是弦数:

3A2+4A2=5八2)#8

58

Eclear

回forc=121to140

叵forb=2toc-1

叵fora=ltob-1

叵ifa*a+b*b=c*c

叵?a,b,c

£endif

Rendf

纪endf

Flendf

59

一个特殊考题

月今有5羊4犬3鸡2兔值钱1496,4羊2

犬6鸡3兔值钱H75,3羊1犬7鸡5兔

值钱958,,2羊3犬5鸡1兔值钱861。

求羊价。#177(、121、23、29)

U5x+4y+3z+2w=1496

[14x+2y+6z+3w=l175

[13x+y+7z+5w=958

32x+3y+5z+w=80l

7、高精度计算一面丢

圮令a=113,b=355,不考虑四舍五

入,求a/b的结果中:

(1)小数点后第30位数字是几?

(2)小数点后前30位数字之和是

多少?

・答案:(1)4(2)160(算法见下页)

U计算器可得32位小数!

61

由a、b求q、r使10*a=6*q+r

配基本算法

I■循环:fori=lto30

■基本处理:模拟手工计算方法

EI每做一次除法,得一位商和余数

a=a*10

q=int(a/10)

a=mod(a,b)r就是下一次的a

62

程序

纪a=H3W*??str(q,1)

皎=355回s=s+q

配s=0Ra=mod(a,b)

Rfbri=lto30Rendfor

至a=a*10叵?q,s

纪q=int(a/b)^return

63

8、同构数

觉所谓“同构数”:一个数,它

出现在它的平方数的右侧。

I■记住10000以内的:1、5、6、25、

76、376、625、9376

1朱点•mod(x*x,m)=x

Hm=10、100、1000

64

clear

n=0

forx=lto9999

docase

casex<10

m=10

casex<100

m=100

casex<1000

m=1000

casex<10000

m=10000

endcase

ifmod(x*x,m)=x

?x,x*x

n=n+l

endif

endfbr

?n

65

9、完全平方数

力完全平方数X(如144=122)

■y=int(sqrt(x))满足条件:x=y*y

□1,4,9,25,...

日求1000以内完全平方数个数。

31,4,9,16,...,961

66

纪clear

Kn=0

Rforx=1to1000

纪y=int(sqrt(x))

配ifx=y*y

目??x

纪n=n+1

®endif

Rendfbr

纪?n

67

10、数制转换’

日求出将十进制整数98765432等

值转换为二进制形式表示后,

其中数字1的个数。#13

■算法提示:单循环(2除取余法,

直到余数为0)

I循环处理:r=x%2,x=int(x/2)

计算器!

68

纪clear程序

纪x=98765432

纪p=2

纪n=0

纪dowhilex>0

纪r=mod(x,p)

纪ifr=l

纪n=n+1

纪endif

纪?p,xj

Rx=int(x/p)

纪enddo

纪?str(x,20)

纪?n

69

日求出将十进制小数0.5432等值转

换为二进制形式表示后,其中小

数点后第15位数字。#1

■算法提示:单循环(2乘取整法)

■循环处理:r=int(2*x),x=x-r

计算器:0.5432*2A156二进制

70

程序

Eclear

纪x=0.5432

£p=2

E?x

纪forn=lto15

纪y=p*x

纪?y

纪z=int(y)

Rx=y-z

纪endfor

纪?z

71

11、素数(质数)问题

纪一般算法(略)

纪使用自定义函数

72

使用自定义内部逻辑函数prime(x)

纪functionprimeRfbri=2tox-1

=

^parameters牢纪ifmod(x,i)0

纪privatei记Rreturn.f.

Rifx<2在纪endif

回return.f.Rendfor

Rreturn.t.

Rendif73

举例

日求100以内素数个数。#25

配求[100,999]内素数和。#75067

配求[500,2500]内第25个素数#659

力求[3,1000]内最大的五个素数之

和。#4919

O(题1的程序见下页)

74

clear

n=0

forx=lto100

ifprime(x)

??x

n=n+l

endif

endfor

?n

return

functionprime

parametersx

privatei

ifx<2

return.f.

endif

fori=2tox-1

ifmod(x,i)=0

return.f.

endif

endfor

return.t.

75

哥德巴赫猜测

院德国数学家哥德巴赫曾猜测:

任何大于4的偶数都可以分解成

两个奇素数的和。

■有些偶数有多个分解式,如:

10=3+7,10=5+5。

76

纪试求6744可以分解成多少个不

同的分解式:6744=A+B

(A<=B)#144

ri基本算法:主程序用单循环

77

Rc=6744解答

纪n=0

Rfora=3toc/2step2

Rb=c-a

Eifprime(a)andprime(b)

£n=n+1

gendif

Kendfor

叵?n&&后接函数

78

双胞胎素数

配若两个素数之差为2,则称

此两数为双胞胎数。求出

[200,1000]之间的最大一对

双胞胎数的和。#1764

■基本算法:主程序用单循环

fbra=200to1000-2

79

Rfora=200to1000-2

Rifprime(a)andprime(a+2)

Rs=2*a+2

R?a,a+2,s

Rendif

Rnext

R?s&&后接函数

80

友素数

门若两个连续的自然数的乘积减1

后是素数,则称此两数为友数对

该素数称为友素数。例如,由于

8*9-1=71,因此,8与9是友数

对,71是友素数。求[100,200]

之间的友数对的数目。#40

81

Qk=O

比forn=100to200-1

Rifprime(n*(n+l)-l)

Ek=k+l

比endif

Knext

R?k&&后接函数

82

第一类超级素

温馨提示

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

评论

0/150

提交评论