配色: 字号:
计算机等级考试辅导
2022-11-17 | 阅:  转:  |  分享 
  
1湖南省计算机等级考试 辅导2内容提要概括性指导重点结构、常用标准函数、自定义函数、基本处理、逻辑表达式常用算法:穷举法、递推分类练习十多种
常见类型3FoxPro程序的基本结构顺序结构选择(分支)结构IF...ELSE...ENDIF多选择(分支)结构DO CASE..
.ENDCASE4循环结构DO WHILE...ENDDOFOR ...ENDFOR / NEXT嵌套分支与分支循环与循环循环与分
支5程序中可省代码set talk onclear && 此句一般保留……set talk offreturn6FoxPro
程序设计重点结构给出两种常用结构可作“模板”使用学会填空!!!7FOR ... ENDFOR | NEXT 结构 f
or i=… to … step … …… if …
…… (loop、exit) endif ……
endfor 计数循环!8DO WHILE ... ENDDO结构 s=... i=...
do while … …… enddo ? ... 一般的当型循环!9FoxPro程序中常用函
数系统内部标准函数取整:int(x)求余数:mod(a,b )求平方根:sqrt(x)绝对值:abs(x)其它...10用户自定义
函数逻辑函数判定:prime(x)外部函数的方法(不讲)内部函数的方法(程序的一部分)见:有关素数程序设计部分注:二级必备!11程
序中最基本的处理计数初值:n=0 或 ...循环处理:n=n+1连加初值:s=0
或 ...循环处理:s=s+i 或 ...12连乘初值:t=1 或 ...
循环处理:t=ti 或 ...13最常用的判断a被b整除(倍数、因子)mod(a,b)=0 a是整数int
(a)=a应用:求不定方程的整数解14多条件组合为逻辑表达式x能被3整除但不能被4整除mod(x,3)=0 and mod(x,4
)#0x是能被3或5整除的偶数mod(x,2)=0 and ( … or … )15精确与非精确编程思路精确编程:只输出所需结果。
非精确编程:输出相关的数据,从中容易得出所需要的结果。16例:设s=2+4+6+…,求s的最大值,使s<=1000。#992(下两
页有程序) 17精确编程(不细讲)clearn=0s=0do while s<1000 n=n+2 s=s+n ? n,s
enddo? s-n18非精确编程clears=0for n=2 to 100 step 2 s=s+n ? n,sendf
or191、简单的求和问题数列求和ai=f(n), 求 sn=a1+…+ an , 是数列循环处理:a=f(i) , s=s+a
或 s=s+f(i)一定条件下的求和20求1~108所有整数的平方和。#425754求
s=12+23+…+100101求s=13+35+…+99101可在Excel中求解21求1~135的平方根的和。#1
051.31基本算法:循环、连加可在Excel中求解求1~135的和的平方根。22求[351,432]之间所有既不能被3整除,又不
能被8整除的整数的和。#18413求1到1000之内能被7或11整除,但不能同时被7和11整除的所有整数的个数。#208232、等
比数列及求和求2+4+8+16+32+…,当累加数大于9000时,则终止计算并输出结果。#1638224已知S1=1, S2=1+
2, S3=1+2+4, …,求S=S1+S2+S3+S4+…+S20的值。#209713025一球从100米高处落至平地并连续反
弹、落下。设每次反弹高度按4/5倍递减,试求出最小的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程超过800米
。基本算法:循环、(连乘、)连加263、递推问题(Excel可解)设有用26个表达式:a=1,b=1/(a+1),c=1/(b+2
),…,z=1/(y+25),试求出z的值。#0.04基本算法:循环、单项递推f(1)=1,f(n)=1/(f(n-1)+n-1)
27斐波那契数列{f(i)}:1,1,2,3,5,8,…, 试输出前20项。基本算法:循环、递推f(1)=1,f(2)=1,f(
n)=f(n-2)+f(n-1)28基本算法(使用数组)定义数组:dimension f(50)循环初值:f(1)=1, f(2)
=1; 循环处理:f(n)=f(n-2)+f(n-1) 29cleardime f(20)f(1)=1f(2)=1? f(1),
f(2)for n=3 to 20 f(n)=f(n-2)+f(n-1) ?? f(n)endfor30斐波那契数列{f(i)
}:1,1,2,3,5,8,…求F(45)值。 #1134903170求F(1)+F(2)+
…+F(50) #32951280098求F(1)+F(3) +…+F(49) #12586269025 求10000000
内最大的 #9227465 求10000000内的个数 #3531斐波那契数列—相关问题(例1)求S=1/2+2/3+
3/5+5/8+…的前30项的和。#18.46{f(n)}:1,2,3,5,8,…,31项S=1/2S=S+f(n-1)/f(n)
, n=3,4,...,3132斐波那契数列—相关问题(例2)求S=1/2+3/5+8/13+21/34+…的前30项的和。#1
8.40{f(n)}:1,2,3,5,8,…,60项S=1/2S=S+f(n-1)/f(n), n=4,6,8,...,6033
三项递推的数列一个数列,它的头三个数为0,0,1,以后的每个数都是其前三个数的和,求此数列的前30项之和。#18947744344
、常见数字问题的处理水仙花数:三位数,等于其各位数字之立方和。记住10000以内: 153、370、371、407
考试中,有四位水仙花数之说。看清题意!35水仙花数的算法是数字问题之根本!算法一:单循环(x:100~999)由数x得出数字a b
c ???熟练掌握一种从数中取数字的方法算法二:三重循环(a:1~9 b,c:0~9)由数字a、b、c组成数x(100~9
99)36设x是一个四位数,千位到个位分别是a、b、c、d,则:a=int(x/1000)b=int((x-1000a)/100
)c=int((x-1000a-100b)/10)d=mod(x,10)(或见下页)37b=mod(int(x/100),10
)c=mod(int(x/10),10)或b=int(mod(x,1000)/100)c=int(mod(x,100)/10)38
clear && 水仙花程序1n=0for x=100 to 999 a=int(x/100)
b=int((x-a100)/10) c=mod(x,10) if x=aaa+bbb+ccc n=n+
1 ? n,x endifendfor39clear && 水仙花程序2n=0for a=1 to
9for b=0 to 9for c=0 to 9 x=100a+10b+c if x=aaa+bbb+cc
c ?? x n=n+1 endifendforendforendfor? n40求在[100,999]内所有不含数
字0且各位数字之积被96整除的数之和。#26640abc<>0 and mod(abc,96)=041求[123,4321
]内回文数的个数。#120都看作四位数abcd,两种情况处理:a=0 and b=da<>0 and a=d and b=c42
clear &&回文数程序1n=0for x=123 to 4321 a=int(x/1000) b=int((x-a
1000)/100) c=int((x-a1000-b100)/10) d=mod(x,10) if (a=0 and
b=d) or (a<>0 and a=d and b=c) n=n+1 ?? x endifendfor? n
43clear && 回文数程序2n=0for a=0 to 4for b=0 to 9for c=0 to 9for
d=0 to 9 x=1000a+100b+10c+d if x>=123 and x<=4321 and ( (a=0
and b=d) or (a<>0 and a=d and b=c)) ?? x n=n+1 endifendfo
rendforendforendfor? n445、因子问题--因子个数、和问[100,200]之间有奇数个不同因子的整数共有多少
个?#5 基本算法:二重循环外循环:for x=100 to 200 穷举!内循环模块一:求x之因子个数内循环模块二:判断
处理45clearn=0for x=100 to 200 k=0 for i=1 to x if mod(x,i)=0
k=k+1 endif endfor if mod(k,2)=1 ?? x n=n+1 endi
fendfor? n46完数求在[10,1000]之间的所有完数之和。各真因子之和(不包括自身)等于其本身的正整数称为完数。例如:
6=1+2+3,6是完数。#524 47set talk offcleark=0for n=10 to 1000 s=0 fo
r i=1 to n/2 if mod(n,i)=0 s=s+i endif endfor if s=n
k=k+n endifendfor? kset talk onreturn48完备数已知24有8个正整数因子(即:1,2
,3,4,6,8,12,24),而24正好能被其因子数8整除,求 [10,100]之间有多少个正整数能被其因子的个数整除。#124
9多因子完备数的概念若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子1、2、4、7、14、28之和是5
6=228,28是多因子完备数。50求[1,200]之间有多少个多因子完备数。#4 基本算法:二重循环外循环:for x=1 t
o 200 穷举!内循环功能一:求x的因子之和内循环功能二:判断处理51最大公约数求出583573和559399的最大公约
数。 #79 基本算法:单循环求出所有因子52最小公倍数求出9269和8671的最小公倍数。 #268801a和b最大公约数d
与最小公倍数k具有关系:ab=dk536、组合问题:不定方程求解 大、中、小学生共36人消费,每大4元,每中2元,每小1元,共
120元,问大、中、小学生人数组合有多少种可能?(每类学生学生的人数均不为0。)基本算法:三重(或二重循环)54程序(三重循环)c
learn=0for x=1 to 36 for y=1 to 36 for z=1 to 36 if x+y+
z=36 and 4x+2y+z=120 n=n+1 ? x,y,z endif
endfor endforendfor? n55求方程3x-7y=1在条件|x|<100且|y|<40下的整数解的个数。#26基
本算法:二重或单循环56已知正整数A,B(假定A 小其和就小基本算法:二重或单循环求因子57(勾、股、)弦数勾、股、弦(正整数) a2+b2=c2 (求组数:a 多重循环)(1) c:(有固定值或循环给出)(2) b:2~c-1 (3) a:1~b-158求[121,140] 之间的弦
数的个数。(如5是弦数:3^2+4^2=5^2)#859clearfor c=121 to 140 for b=2 to c-1
for a=1 to b-1 if aa+bb=cc ?a,b,c endif
endf endfendf60一个特殊考题今有5羊4犬3鸡2兔值钱1496,4羊2犬6鸡3兔值钱1175,3羊1犬7鸡5兔值
钱958,,2羊3犬5鸡1兔值钱861。求羊价。#177(、121、23、29 )5x+4y+3z+2w=14964x+2y+6z
+3w=11753x+ y+7z+5w=9582x+3y+5z+ w=861617、高精度计算—除法令a=113,b=355,不考
虑四舍五入,求a/b的结果中: (1)小数点后第30位数字是几? (2)小数点后前30位数字之和是多少?答案:(1) 4 (2
) 160 (算法见下页)计算器可得32位小数!62由a、b求q、r使10a=bq+r基本算法循环:for i=1 to 3
0基本处理:模拟手工计算方法每做一次除法,得一位商和余数a=a10q=int(a/10) a=mod(a,b) r就是
下一次的a63程序a=113b=355s=0for i=1 to 30 a=a10 q=int(a/b) ?? str(
q,1) s=s+q a=mod(a,b)endfor? q, sreturn648、同构数所谓“同构数”:一个数,它出现在它
的平方数的右侧。记住10000以内的:1、5、6、25、76、376、625、9376特点:mod(xx,m)=x m=
10、100、100065clearn=0for x=1 to 9999 do case case x<10 m
=10 case x<100 m=100 case x<1000 m=1000 case x
<10000 m=10000 endcase if mod(xx,m)=x ? x,xx n=n+1
endifendfor? n669、完全平方数完全平方数x(如144=122)y=int(sqrt(x)) 满足条件:x=y
y1,4,9,25,…求1000以内完全平方数个数。1,4,9,16,…,96167clearn=0for x=1 to 100
0 y=int(sqrt(x)) if x=yy ?? x n=n+1 endifendfor? n6810、
数制转换求出将十进制整数98765432等值转换为二进制形式表示后,其中数字1的个数。 #13 算法提示:单循环(2除取余法,直到
余数为0)循环处理:r=x%2,x=int(x/2)计算器!69程序clearx=98765432p=2n=0do while x
>0 r=mod(x,p) if r=1 n=n+1 endif ? p,x,r x=int(x/p)enddo?
str(x,20)? n70求出将十进制小数0.5432等值转换为二进制形式表示后,其中小数点后第15位数字。#1 算法提示:单
循环(2乘取整法)循环处理:r=int(2x),x=x-r计算器: 0.54322^15?二进制71程序clearx=0.54
32p=2? xfor n=1 to 15 y=px ? y z=int(y) x=y-zendfor? z7211、素
数(质数)问题一般算法(略)使用自定义函数73使用自定义内部逻辑函数prime(x)function primeparameter
s xprivate iif x<2 return .f.endiffor i=2 to x-1 if mod(x,i)=0
return .f. endifendforreturn .t.牢记在心74举例求100以内素数个数。#25 求[100,
999]内素数和。#75067 求[500, 2500]内第25个素数#659 求[3, 1000]内最大的五个素数之和。#49
19 (题1的程序见下页)75clearn=0for x=1 to 100 if prime(x) ?? x n=n
+1 endifendfor? nreturnfunction primeparameters xprivate iif x<2
return .f.endiffor i=2 to x-1 if mod(x,i)=0 return .f. end
ifendforreturn .t.76哥德巴赫猜测德国数学家哥德巴赫曾猜测:任何大于4的偶数都可以分解成两个奇素数的和。有些偶数
有多个分解式,如: 10=3+7,10=5+5。77试求6744可以分解成多少个不同的分解式:6744=A+B(A<=B)#144
基本算法 :主程序用单循环78解答c= 6744n=0for a=3 to c/2 step 2 b=c-a if prime
(a) and prime(b) n=n+1 endifendfor? n && 后接函数79双胞胎素
数若两个素数之差为2,则称此两数为双胞胎数。求出[200, 1000]之间的最大一对双胞胎数的和。#1764基本算法:主程序用单循
环 for a=200 to 1000-280for a=200 to 1000-2 if prime(a) and prime
(a+2) s=2a+2 ? a,a+2,s endifnext? s && 后接函数81友素数若两个连续
的自然数的乘积减1后是素数,则称此两数为友数对,该素数称为友素数。例如,由于 89-1=71, 因此,8与9是友数对,71是友素
数。求[100,200]之间的友数对的数目。#40 82k=0for n=100 to 200-1 if prime(n(n+
1)-1) k=k+1 endifnext? k && 后接函数83第一类超级素数(不含0的)素数,且去掉前面
一位或多位后仍是素数。如1223基本算法:单循环循环处理:求有关数、判断素数对三位数x:y=x-int(x/100)100对四位
数x:y=x-int(x/1000)100084求[100,9999]内第一类超级素数个数。可分别求出[100,999]和[10
00,9999]的个数下面求[1000,9999]内的个数。#99。85程序clearn=0for x=1000 to 9999
y=x-int(x/1000)1000 z=x-int(x/100)100 w=x-int(x/10)10 if n
ot(''0''$str(x)) and prime(x) and prime(y) and prime(z) and prime(w) ?? x n=n+1 endifendf? n && 后接函数86第二类超级素数(不含0的)素数,且去掉后面一位或多位后仍是素数。如2333基本算法:单循环循环处理:求有关数、判断素数y=int(x/10)z=mod(y/10)87求[100,9999]内第二类超级素数个数。可分别求出[100,999]和[1000,9999]的个数下面求[1000,9999]内的个数。#1688程序clearn=0for x=1000 to 9999 y=int(x/10) z=int(y/10) w=int(z/10) if not(''0''$str(x)) and prime(x) and prime(y) and prime(z) and prime(w) ?? x n=n+1 endifendf? n && 后接函数8912、猴子选大王教材上例题(可耐心点,手工求)n个人围坐一圈,并顺序编号1~n,从1号开始数,每数到m个就让其出局,重复...。求最后出局者的编号。当n=50,m=3时 ,答案为1190谢谢!祝考试顺利!
献花(0)
+1
(本文系通信农民工原创)