当前位置:文档之家› VFP程序设计题选

VFP程序设计题选

程 序 设 计 题 选

1、求100以内最大的自然数N,使得从1开始的连续N个自然数的倒数之和小于3.5。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
S=(S+1)/N
IF S>=3.5
LOOP
ENDIF
ENDFOR
? N-1
SET TALK ON
RETURN
"运行结果:18"
2、 求100以内最小的自然数N,使得从1开始的连续N个自然数的倒数之和大于3.6。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
S=S+1/N
IF S<=3.6
LOOP
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:21"
3、求50以内最大的自然数N,使得从102开始的连续N个偶数之和小于3000。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 50
A=100+2*N
S=S*A
IF S>=3000
LOOP
ENDIF
ENDFOR
? N-1
SET TALK ON
RETURN
"运行结果:23"
4、求50以内最小的自然数N,使得从102开始的连续N个偶数之和大于2000。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 50
A=102+2*N
S=S+A
IF S>2000
LOOP
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:17"
5、 求出100以内使得算式1*2+2*3+…+N*(N+1)的值小于5000的最大的自然数N。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
A=N*(N+1)
S=S+A
IF S<5000
EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:23"
6、 求出100以内使得算式1*2+2*3+…+N*(N+1)的值大于6000的最小的自然数N。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
A=N*(N+1)
S=S+A
IF S<=6000
LOOP
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:26"
7、求出100以内使得算式1+(1+2)+…+(1+2+…+N)的值小于1000的最大的自然数N。
SET TALK OFF
CLEAR
S=0
T=0
FOR N=1 TO 100
S=S+N
T=T+S
IF T<1000
EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:17"
8、 求出100以内最大的奇数N使得算式(1-1/2)+(1/3-1/4)+…+(1/N-1/(N+1))的值小于0.68。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100 STEP 2
A=1/N-1/(N+1)
S=S+A
IF S<0.68
EXIT
ENDIF
ENDFOR
? N-2
SET TALK ON
RETURN
"运行结果:35"
9、某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。
SET TALK OFF
CLEAR
S=1
FOR N=2001 TO 2100
S=S*1.03
IF S=2
LOOP
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:2024"
9、设等比数列:1,2,4,8,…。求使得此数列的前N项之和大于100000的最小的自然数N。
SET TALK OFF
CLEAR
A=1
S=1
FOR N=1 TO 100
S=S+A
IF S>100000
EXIT
ENDIF
A=2+A
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:17"
10、设等比数列:1,2,4,8,…。求使得此数列的前N项之和小于2345678的最大的自然数N。
SET TALK OFF
CLEAR
A=1
S=0
FOR N=1
TO 100
S=S+A
IF S>=2345678
EXIT
ENDIF
A=2+A
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:21"
11、求出45678的所

有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。
SET TALK OFF
CLEAR
A=45678
N=0
FOR B=3 TO A STEP 2
IF MOD(B,A)=0
N=N+1
ENDIF
ENDFOR
? B
SET TALK ON
RETURN
"运行结果:7"
12、求出20677和42067的最大公约数。
SET TALK OFF
CLEAR
A=20677
B=42067
FOR D=1 TO A
IF MOD(A,D)=0 AND MOD(B,D)=0
MAX=B
ENDIF
ENDFOR
? D
SET TALK ON
RETURN
"运行结果:713"
13、求前[1,100]内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
IF MOD(N,6)=0 AND MOD(N,8)=0
S=SQRT(S+N)
ENDIF
ENDFOR
? ROUND(S,0)
SET TALK ON
RETURN
"运行结果:162"
14、求所有符合算式AB*BA=2701的最小的两位数AB(即A*10+B)。其中A、B是1~9之间的一位整数。
SET TALK OFF
CLEAR
FOR X=11 TO 99
A=X/10
B=MOD(X,10)
Y=10*A+B
IF X*Y=2701
EXIT
ENDIF
ENDFOR
? X
SET TALK ON
RETURN
"运行结果:37"
15、已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中大于5000的最小的项。
SET TALK OFF
CLEAR
A=1
FOR N=0 TO 1000
A=A+N
IF A>5000
LOOP
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:5051"
16、已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中小于6000的最大的项。
SET TALK OFF
CLEAR
A=0
FOR N=0 TO 1000
IF A+N<6000
EXIT
ENDIF
A=A+N
ENDFOR
? A
SET TALK ON
RETURN
"运行结果:5996"
17、已知数列{F(N)}:F(1)=1,F(2)=4,当N=3,4,5,…时,F(N)=3*F(N-1)-F(N-2)。试求出100以内最小的自然数N使得此数列的第N项大于87654321。
SET TALK OFF
CLEAR
DIMENSION F(100)
F(1)=1
F(2)=4
FOR N=3 TO 100
F(N)=3*F(N-1)-F(N-2)
IF F(N)<=87654321
LOOP
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:20"
18、求出100以内最大的自然数N,使得从1开始的连续N个自然数的立方之和小于999999。
SET TALK OFF
CLEAR
S=0
FOR N=1 TO 100
A=N*N*N
S=S+A
IF S<999999
EXIT

ENDIF
ENDFOR
? N
SET TALK ON
RETURN
运行结果:44
19、一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最小的自然数N,使得此球从开始下落至第N次着地时在垂直方向所经过的总路程超过678米。
SET TALK OFF
CLEAR
H=100
S=0
FOR N=2 TO 100
H=H*3/4
S=S+H
IF S>678
EXIT
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
运行结果:13
20、设有用26个字母表示的26个表达式:A=1,B=1/(A+1),C=1/(B+2),…,Z=1/(Y+25)。试求出这26个字母中其值小于0.1的字母个数。
SET TALK OFF
CLEAR
LETT=1
N=0
FOR K=1 TO 26
LETT=1/LETT+K
IF LETT<0.1
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN

行结果:16
21、求所有符合算式AB*BA=3627的最大的两位数AB(即A*10+B)。其中A、B是1~9之间的一位整数。
SET TALK OFF
CLEAR
FOR X=11 TO 99
A=INT(X/10)
B=MOD(X,10)
Y=A*10+B
IF X*Y=3627
EXIT
ENDIF
ENDFOR
? X
SET TALK ON
RETURN
“运行结果:93"
22、设一个数列的前3项都是1,从第4项开始,每一项都是其前3项之和。试求出此数列的前25项中大于54321的项数。
SET TALK OFF
CLEAR
STORE 1 TO F1,F2,F3
N=0
FOR K=1 TO 25
F=F1+F2+F3
IF F>54321
N=N+1
ENDIF
F1=F2
F2=F3
F3=F1
ENDFOR
? N
SET TALK ON
RETURN
“运行结果:5"
23、已知一个由分数组成的数列:1/2,3/5,8/13,21/34,…,其特点是:从其中第2个分数起,每个分数的分子都是前一分数的分子分母之和而其分母都是其分子与前一分数的分母之和。试求出此数列的前25项中其值大于0.618的项数。
SET TALK OFF
CLEAR
F1=1
F2=2
N=0
FOR K=1 TO 25
F=F1/F2
IF F>0.618
N=N+1
ENDIF
F1=F2
F2=F1
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:20"
24、回文指的是正读和反读都一样的一串字符,如121、1221。试求出[1421,4112]内所有回文数的和。
SET TALK OFF
CLEAR
S=0
FOR X=1421 TO 4112
A=X/1000
B=INT((X-A*1000)/100)
C=INT((X-A*1000-B*100)/10)
D=X-A*1000-B*100-C*10
IF A=D AND B=C
S=S*X
ENDIF
ENDFOR
? S
SET TALK ON
RETURN
"运行结果:74250"
25、求出[1234,6789]内中间两位数字之和等于首尾两位数字之积的数的个数。
SET TALK OFF
CLEAR
N=0
FOR X=1234 TO 6789
A=INT(X/1000)
B=INT(X-A*1000)/100
C=INT(X-A*1000-B*100)/10
D=X-A*1000-B*100-C*10
IF B+C=A*D
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:175"
26、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。
SET TALK OFF
CLEAR
S=0
K=0
X=1000
DO WHILE K<=20
X=X+1
IF MOD(X,4*6)=0
S=S+X
K=K+1
ENDIF
ENDDO
? S
SET TALK ON
RETURN
"运行结果:20610"
27、若一个自然数恰好等
于某个整数的平方,则称此数为完全平方数。如144是完全平方数,因为它等于12的平方。求[1000,9999]内所有完全平方数的和。
SET TALK OFF
CLEAR
S=0
FOR X=1000 TO 3000
Y=SQRT(X)
IF X=Y*Y
S=S+X
ENDIF
ENDFOR
? X
SET TALK ON
RETURN
"运行结果:43539"
28、若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求[2,99999]内所有自同构数之和。(提示:若X是M位同构数,则X的平方除以10的M次方的余数就是X)
SET TALK OFF
CLEAR
S=0
FOR X=2 TO 99999
Y=X*X
M=LEN(LTRIM(STR(X))) && 设X是M位数
IF MOD(Y,10*M)=X
S=S+X
ENDIF
ENDFOR
? Y
SET TALK ON
RETURN
运行结果:101114
29、求

满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A<=B,当A越大时A+B越小)
SET TALK OFF
CLEAR
C=54321
K=INT(SQRT(C))
FOR A=1 TO K
B=INT(C)/A
IF A*B=C
MAX=A
ENDIF
ENDFOR
? MAX
SET TALK ON
RETURN
"运行结果:953"
30、设A=123,B=541,求A/B的精确值中小数点后40位数字中数字1的个数。(提示:基于人工计算的思想)
SET TALK OFF
CLEAR
A=123
B=541
N=0
FOR K=1 TO 40
A=A+0
Q=INT(A)/B
IF Q=1
N=N+1
ENDIF
A=MOD(A,B)
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:3"
31、求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。(提示:模拟人工计算的“2除取余”法)
SET TALK OFF
CLEAR
A=98765432
P=2
DO WHILE A>0
R=MOD(A,P)
IF R=1
N=1
ENDIF
A=INT(A/P)
ENDDO
? N
SET TALK ON
RETURN
运行结果:13
32、4087求出将十进制整数98765432等值转换为二进制形式表示后其中数字0的个数。(提示:模拟人工计算的“2除取余”法)
SET TALK OFF
CLEAR
A=98765432
P=2
N=0
DO WHILE A=0
R=MOD(A,P)
IF R=0
N=P+1
ENDIF
A=INT(A/P)
ENDDO
? N
SET TALK ON
RETURN
运行结果:14
33、 求出将十进制整数99887766554等值转换为十六进制形式表示后其中字母C的个数。(提示:模拟人工计算的“16除取余”法)
SET TALK OFF
CLEAR
A=99887766554
P=16
N=0
DO WHILE A=0
R=MOD(A,P)
IF R=11
N=N+R
ENDIF
A=INT(A/P)
ENDDO
? N
SET TALK ON
RETURN
"运行结果:2"
34、对自然数A、B、C,若A<B<C且A*A+B*B=C*C,则称{A,B,C}为一组勾股弦数,其中A、B、C分别称为勾、股、弦。试求出弦为25000的勾股弦数组的个数。
SET TALK OFF
CLEAR
C=25000
N=1
FOR A=1 TO C
B=INT(SQRT(C*C-A*A))
IF A*A+B*B=C*C
N=N+A
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:5"
35、4094对自然数A、B、C,若A<B<C且A*A+B*B=C*C,则称{A,B,C}为一组勾股弦数,其中A、B、C分别称为勾、股、弦。试求出弦为1300的勾股弦组数。
SET TALK OFF
CLEAR
C=1300
N=0
FOR A=1 TO C
B1=SQRT(C*C-A*A)
B=INT(B1)
IF B=B1
N=N+B
ENDIF

ENDFOR
? N
SET TALK ON
RETURN
"运行结果:7"
40、求方程3X-7Y=1在条件|X|<100且|Y|<40下的整数解的个数。
SET TALK OFF
CLEAR
N=0
FOR X=-99 TO 99
Y=INT((3*X-1)/7)
IF 3*X-7*Y=1 OR ABS(Y)<40
N=N+X
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:26"
41、求方程3X-7Y=1在条件|X|<100且|Y|<40下的所有整数解的|X|+|Y|的最大值。
SET TALK OFF
CLEAR
MAX=140
FOR X=-99 TO 99
Y=INT((3*X-1)/7)
Z=ABS(X+Y)
IF 3*X-7*Y=1 AND ABS(Y)<40 AND MAX>Z
MAX=Z
ENDIF
ENDFOR
? MAX
SET TALK ON
RETURN
运行结果:127
42、求100-1000内的第10个素数。(素质是指只能被1和本身整除的数)
SET TALK OFF
CLEA
N=0
K=0
F

OR I=100 TO 1000
F=1
FOR J=2 TO I
IF MOD(I,J)=0
F=0
EXIT
ENDIF
ENDFOR
IF F=1
N=I
K=K+I
IF K=10
EXIT
ENDIF
ENDIF
ENDFOR
? N
RETURN
运行结果:149
43、对自然数A、B、C,若A<B<C且A*A+B*B=C*C,则称{A,B,C}为一组勾股弦数,其中A、B、C分别称为勾、股、弦。试求出弦为2500的勾股数组中A+B+C的值最大为多少?。
SET TALK OFF
CLEAR
C=2500
MAX=0
FOR A=1 TO C
B=INT(SQRT(C*2-A*2))
IF A*A+B*B=C*C AND A<B
IF MAX>A+B+C
MAX=A+B+C
ENDIF
ENDIF
ENDFOR
? MAX
SET TALK ON
RETURN
"运行结果:6000"
44、设某四位数的各位数字的立方和等于168,问满足这种条件的四位数且是奇数的数共有多少个?
SET TALK OFF
CLEA
N=0
FOR X=1000 TO 9999
A=INT(X/1000)
B=INT((X-A*1000)/100)
C=INT(X/100)
D=MOD(X,10)
IF A*3+B*3+C*3=168 AND D=3
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:6"
45、把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问有多少种方案?
SET TALK OFF
CLEA
N=0
FOR YI=1 TO 100
FOR ER=1 TO 20
FOR WU=1 TO 20
IF YI+ER+WU=100
N=N+YI
ENDIF
ENDFOR
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:461"
46、找满足以下条件: X^2+Y^2=41^2 且X+Y之值最大的二个正整数X,Y, 求X+Y之值.
SET TALK OFF
CLEA
MAX=1000
FOR X=0 TO 41
FOR Y=0 TO 41
IF X*X+Y*Y=41*41
IF MAX>X+Y
MAX=X+Y
ENDIF
ENDIF
ENDFOR
ENDFOR
? MAX
SET TALK ON
RETURN
"运行结果:49"
47、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[100,300]之间能被其因子数目整除的数的个数。
SET TALK OFF
CLEA
C=0
FOR N=100 TO 300
S=0
FOR I=1 TO N -1
IF INT(I/10)=0
S=S+1
ENDIF
ENDFOR
IF MOD(N,S)=0
C=C+1
ENDIF
ENDFOR
? C
SET TALK ON
RETURN
"运行结果:19"
48、分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 [50,90] 且分母能被3整除的真分数共有多少个.
SET TALK OFF
CLEA
N=1
FOR A=50 TO 90
FOR B=50 TO 90
IF MOD(B,3)=0
N=N+1
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:287"
49、分子分母为正整数,分子小于分母的分数称为真分数。对于分数的分子分母取值范围为 [50,90] 且分母能被
3整除、分子能被5整除的真分数共有多少个.
SET TALK OFF
CLEA
N=1
FOR A=50 TO 89
FOR B=50 TO 90
IF MOD(B,3)=0
N=N+1
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN63
"运行结果:63"
50、求S=1-1/2+1/3-1/4+.....的前100项之和(精确到小数点后4位)
SET TALK OFF
CLEA
S=1.0000
F=1
FOR I=1 TO 100
S=S-F/I
F=F
ENDFOR
? S
RETURN
"运行结果:0.6882"
51、梅森尼数是指能使2^N-1为素数的数N,求[1,21]范围内最大的梅森尼数?
SET TALK OFF
CLEA
MAX=0
S=1
FOR X=2 TO 21

S=S*2
FLAG=1
FOR I=2 TO INT(SQRT(S-1))
IF MOD(S,I)=0
FLAG=0
EXIT
ENDIF
ENDFOR
IF FLAG=0
MAX=X
ENDIF
ENDFOR
? MAX
RETURN
"运行结果:19"
52、求出559399和539251的最大公约数。(注:在数学上,常用(A,B)表示A和B的最大公约数。且有结论:若有等式A=B*Q+R,则(A,B)=(B,R)。例如,因为62=20*3+2且20=2*10+0,所以(62,20)=(20,2)=(2,0)=2 )
SET TALK OFF
CLEAR
A=559399
B=539251
DO WHILE B>0
R=INT(A/B)
B=R
A=B
ENDDO
? A
SET TALK ON
RETURN
"运行结果:73"
53、利用分解质因数的方法求出18000中含有质因数的个数(相同的重复计数,例如,180中含有5个质因数:2、2、3、3、5)。
SET TALK OFF
CLEAR
X=18000
N=0
K=1
DO WHILE X>1
IF MOD(X,K)=0
N=N+1
X=INT(X/K)
EXIT
ENDIF
K=K+1
ENDDO
? N
SET TALK ON
RETURN
"运行结果:3"
54、分子分母为正整数,分子小于分母且分子分母无公因数的分数称为最简真分数。对于分数的分母取值范围为 [50,90] 时的最简真分数共有多少个.
SET TALK OFF
CLEA
N=0
FOR A=2 TO 89 &&分子
FOR B=50 TO 90 &&分母
IF A>B
GYZ=1 &&公因子
FOR X=2 TO A
IF MOD(A,X)=0
GYZ=X
EXIT
ENDIF
ENDFOR
IF GYZ=1
N=N+1
ENDIF
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:1685"
55、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是""四位双平方数""。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是""四位双平方数""。求所有""四位双平方数""中最小的一个""四位双平方数""。
SET TALK OFF
CLEA
MIN=10000
FOR I=1000 TO 9999
A=INT(I/1000)
B=INT((I-A*1000)/100)
C=MOD(I,100)
D=MOD(I,10)
X=A+B+C+D
IF SQRT(I))*INT(SQRT(I)=I
IF MIN>I
MIN=I
ENDIF
ENDIF
ENDFOR
? MIN
SET TALK ON
RETURN
运行结果:1521
56、50个小学生按1至50序号顺时针围成一圈,做出局游戏,老师站在圈外顺时针从第一个人数起,每数到5时,这人从圈里出来,继续数1,2,3,4,5,数到第5个学生时,他就出局,已出局的位置不再参加计数,直至所有的学生出局为止,问最后一个出局的学生序号是多少
号。
SET TALK OFF
CLEA
DIME A(50)
FOR I=1 TO 50
A(I)=0 ( A(I)=I )
ENDFOR
K=0
FOR I=1 TO 50
P=1 &&每趟报数
DO WHILE P<=5
K=K+1
IF K>50
K=0 ( K=1 )
ENDIF
IF A[K]<>0
P=P+1
ENDIF
ENDDO
A[K]=0
ENDFOR
? K
SET TALK OFF
RETURN
"运行结果:19"
57、水仙花

数""是指这样的数,其各位数字的立方和等于该数本身,如:153=1^3+5^3+3^3。编写程序,计算从100年开始到2000年为止,共有多少个年号是水仙花数年号。
SET TALK OFF
CLEA
N=1
FOR I=100 TO 2000
A=INT(I/1000)
B=INT((I-A*1000)/100)
C=MOD(I,100)
D=MOD(I,10)
IF A*A+B*B+C*C=I
N=N+1
ENDIF
ENDFOR
? N
RETURN
"运行结果:4"
58、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求所有两位绝对素数的和。
SET TALK OFF
CLEA
S=0
FOR I=10 TO 99
J=MOD(I,10)
F1=1
FOR K=2 TO I
IF MOD(I,K)=0
F1=0
ENDIF
ENDFOR
F2=1
FOR K=2 TO J-1
IF MOD(J,K)=0
F2=0
ENDIF
ENDFOR
IF F1=1
S=S+I
ENDIF
ENDFOR
? S
RETURN
"运行结果:429"
59、设某四位数的各位数字的平方和等于100,问共有多少个这种四位数?
SET TALK OFF
CLEA
N=0
FOR X=1000 TO 9999
A=INT(X/1000)
B=INT((X-A*1000)/100)
C=____________
D=MOD(X,10)
IF ____________
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
运行结果:49
60、设某四位数的各位数字的立方和等于100,问满足这种条件的四位数且是素数的数共有多少个?
SET TALK OFF
CLEA
N=0
FOR X=1000 TO 9999
F=1
FOR I=2 TO INT(SQRT(X))
IF _________
F=0
EXIT
ENDIF
ENDFOR
IF F=1
A=INT(X/1000)
B=INT((X-A*1000)/100)
C=INT(MOD(X,100)/10)
D=MOD(X,10)
IF _____________
N=N+1
ENDIF
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:4"
61、把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数为50枚的兑换方案有多少种?
SET TALK OFF
CLEA
________
FOR YI=1 TO 100
FOR ER=1 TO 50
FOR WU=1 TO 20
IF _________AND ___________=50
N=_____
ENDIF
ENDFOR
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
运行结果:12
62、 把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数最多的与硬币总数最少的枚数之差是多少?
SET TALK OFF
CLEA
MIN1=10000
MAX1=0
FOR YI=1 TO 100
FOR ER=1 TO 50
FOR WU=1 TO 20
IF _______=100
T=_______
IF T>MAX1
______
ENDIF
IF MIN1>T
MIN1=T
ENDIF
ENDIF
ENDFOR
ENDFOR
ENDFOR
? MAX1-MIN1
SET TALK ON
RETURN
运行结果:73
63、找满足以下条件: X^2+Y^2+Z^2=41^2 且X+Y+Z之值最大的三个正整数X,Y,Z, 求X+Y+Z之值.
SET TALK OFF
CLEA
MAX=0
FOR X=0 TO 41
FOR Y=0 TO 41
FOR Z=0 TO 41
IF ___________

IF _________
MAX=X+Y+Z
ENDIF
ENDIF
ENDFOR
ENDFOR
ENDFOR
? _______
SET TALK ON
RETURN
"运行结果:71"
64、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[100,300]之间能被其因子数目整除的数中最大的数。
SET TALK OFF
CLEA
MAX=0
FOR N=100 TO 300
____
FOR I=1 TO N
IF _________
S=S+1
ENDIF
ENDFOR
IF MOD(N,S)=0
________
ENDIF
ENDFOR
? MAX
SET T

ALK ON
RETURN
"运行结果:296"
65、分子分母为正整数,分子小于分母且分子分母无公因数的分数称为最简真分数。对于分数的分子分母取值范围为 [50,90] 时的最简真分数共有多少个.
SET TALK OFF
CLEA
N=_____
FOR A=50 TO 89
FOR B=A+1 TO 90
YZ=1
FOR X=2 TO A-1
IF ___________
YZ=X
ENDIF
ENDFOR
IF ______
N=N+1
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:498"
66、编程求取:[121,200] 之间的弦数的个数(若某正整数的平方等于另两个正整数平方之和,则称该数为弦数. 例如:3^2+4^2=5^2, 因此5是弦数)。
SET TALK OFF
CLEA
N=0
FOR A=121 TO 200
FOR X=1 TO A-1
T=___________
IF INT(SQRT(T))*INT(SQRT(T))=T
N=N+1
______
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:40"
67、勾股弦数是满足公式: A^2+B^2=C^2 (假定A<B<C)的一组正整数(A,B,C),例如,(3,4,5)是勾股弦数,因为:3^2+4^2=5^2。求A,B均小于25且A+B+C<=100的勾股弦数的个数。
SET TALK OFF
CLEA
N=0
FOR A=1 TO 25
FOR B=1 TO 25
FOR C=1 TO 100
IF A<B AND B<C AND _________
IF ___________
N=_________
ENDIF
ENDIF
ENDFOR
ENDFOR
ENDFOR
? N
RETURN
11
68、编写程序,求所有符合算式IJ*JI=1300的最大数IJ(即I*10+J)。其中I、J是1~9之间的一位整数。
SET TALK OFF
CLEA
________
FOR I=1 TO 9
FOR J=1 TO 9
IF _______=1300
IF ___________
MAX=10*I+J
ENDIF
ENDIF
ENDFOR
ENDFOR
? MAX
RETURN
"运行结果:52"
69、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是""四位双平方数""。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是""四位双平方数""。求所有""四位双平方数""中最小的一个""四位双平方数""。
SET TALK OFF
CLEA
MIN=10000
FOR I=1000 TO 9999
A=INT(I/1000)
B=INT((I-A*1000)/100)
C=____________
D=MOD(I,10)
X=A+B+C+D
IF INT(SQRT(I))*INT(SQRT(I))=I AND ____________
IF MIN>I
________
ENDIF
ENDIF
ENDFOR
? MIN
SET TALK ON
RETURN
运行结果:1521
70、50个小学生按1至50序号顺时针围成一圈,做出局游戏,老师站在圈外顺时针从第一个人数起,每数到3时,这
人从圈里出来,继续数1,2,3数到第3个学生时,他就出局,已出局的位置不再参加计数,直至所有的学生出局为止,问最后一个出局的学生序号是多少号。
SET TALK OFF
CLEA
DIME A(50)
FOR I=1 TO 50
A(I)=I &&0表示出队
ENDFOR
K=0
FOR I=1 TO 50
P=1
DO WHILE P<=3
K=K+1
IF ____ K>50_____
K=1
ENDIF
IF __ A[K]<>0_____
P=P+1
ENDIF
ENDDO
A[K]=0
ENDFOR
? K
SET TALK OFF
RETURN
运行结果:11
7

1、水仙花数""是指这样的数,其各位数字的立方和等于该数本身,如:153=1^3+5^3+3^3。编写程序,计算从100年开始到2000年为止,共有多少个年号是水仙花数年号。
SET TALK OFF
CLEA
N=0
FOR I=100 TO 2000
A=INT(I/1000)
B=INT((I-A*1000)/100)
C=________
D=MOD(I,10)
IF _______________
N=N+1
ENDIF
ENDFOR
? N
RETURN
"4"
72、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求所有两位绝对素数的个数。
SET TALK OFF
CLEA
S=0
FOR I=10 TO 99
J=__________
F1=1
FOR K=2 TO I-1
IF MOD(I,K)=0
F1=0
ENDIF
ENDFOR
F2=1
FOR K=2 TO J-1
IF ________
F2=0
ENDIF
ENDFOR
IF __________
S=S+1
ENDIF
ENDFOR
? S
RETURN
"运行结果:9"
73、整数60的质因数共有4个:2、2、3、5,求103385的最大有质因数。[ 算法提示:按小学介绍的分解质因数的方法 ]
SET TALK OFF
CLEAR
A=103385
MAX=1
_____
DO WHILE A>1
IF MOD(A,B)=0
MAX=B
A=INT(A/B)
_______
ENDIF
B=B+1
ENDDO
? MAX
SET TALK ON
RETURN
"运行结果:31"
74、求等比数列1、2、4、8、16、… 的前若干项累加和S,使S的值首次大于100000。
SET TALK OFF
CLEAR
T=1
____
DO WHILE S<=100000
______
S=S+T
ENDDO
? S
SET TALK ON
RETURN
131071
75、求S=1/1!+1/2!++1/3!+…+1/10!的值(按四舍五入方式保留两位小数)。 (注:自然数N的阶乘记为N!,即1*2*3*…*N)。
SET TALK OFF
CLEAR
_____
S=0
FOR N=1 TO 10
T=T/N
_______
ENDFOR
? ROUND(S,2)
SET TALK ON
RETURN
运行结果:1.72
76、已知数列{F(N)}:F(1)=1,F(2)=1,当N>2时F(N)=F(N-2)+F(N-1)。试求此数列的第15项至第25项共11项之和。
SET TALK OFF
CLEAR
DIMENSION F(25),S(25)
F(1)=1
F(2)=1
_______
FOR N=3 TO 25
_______________
S(N)=S(N-1)+F(N)
ENDFOR
? S(25)-S(14)
SET TALK ON
RETURN
运行结果:195431
77、已知数列:1、2、4、7、11、16、…,其特点是:相邻两项之差恰好构成自然数列:1、2、3、4、5、…。求此数列的前200项中能被4整除的项之和。
SET TALK OFF
CLEAR
______
S=0
FOR N=2 TO 200
A=A+N-1
_________
S=S+A
ENDIF
ENDFOR
? S
SET TALK ON
RETURN
"运行结果:333300"
78、设A=234,B=567,求A/B的精确值中小数点后30位数字之和。(提
示:基于人工计算的思想)
SET TALK OFF
CLEAR
A=234
B=547
S=0
FOR K=1 TO 30
A=________
Q=INT(A/B)
________
A=MOD(A,B)
ENDFOR
? S
SET TALK ON
RETURN
运行结果:142
79、求满足条件A*B=1234567且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A<=B,当A越大时A+B越小)
SET TALK OFF
CLEAR
C=1234567
K=INT(SQRT(C))
FOR A=1 TO K
________
IF A*B=C
MAX=B
ENDIF
ENDFOR
? ______
SET TALK ON
RETURN
"运行结果:9721"
80、一个数如果刚好与它

所有的真因子之和相等,则称该数为一个“完数”,如:6=1+2+3,则6就是一个完数。求出10到1000之间所有的完数之和。
SET TALK OFF
CLEAR
S=0
FOR X=10 TO 1000
M=0
FOR K=1 TO X-1
IF MOD(X,K)=0
_______
ENDIF
ENDFOR
_______
S=S+X
ENDIF
ENDFOR
? S
SET TALK ON
RETURN
"运行结果:524"
81、求在1,2,3,…,20这20个数中任选两个不同的数的所有组合中,两数和是偶数的组数。
SET TALK OFF
CLEAR
_____
FOR A=1 TO 19
FOR B=A+1 TO 20
___________
N=N+1
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:90"
82、求最长边为15的所有边长为自然数的三角形的个数(两短边交换只算一个)。
SET TALK OFF
CLEAR
N=0
C=15
FOR A=1 TO C
_____________
________
N=N+1
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
"运行结果:64"
83、 百钱百鸡古题:用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,求出共有几种买法(要求每种鸡至少要买1只)。
SET TALK OFF
CLEAR
N=0
FOR X=1 TO 19
FOR Y=1 TO 33
Z=100-X-Y
IF ____________
_______
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
运行结果:3
84、百马驮百瓦古题:大马、小马和马驹共100匹,共要驮100瓦,大马一驮三,小马一驮二,马驹二驮一,三种马都驮,共有多少种组合?
SET TALK OFF
CLEAR
N=0
FOR X=1 TO 33
FOR Y=1 TO 50
Z=__________
IF _____________
N=N+1
? X,Y,Z
ENDIF
ENDFOR
ENDFOR
? N
SET TALK ON
RETURN
运行结果:6
85、求出[750,950]内不含数字6和8的所有整数之和(注意AT()函数和STR()函数的功能)。
SET TALK OFF
CLEAR
S=0
FOR X=750 TO 950
IF AT('6',STR(X))=0 _____________
____________
ENDIF
ENDFOR
? S
SET TALK ON
RETURN
运行结果:
86、求出[1234,4321]内中间两位数字之和等于首尾两位数字之积的数的个数。
SET TALK OFF
CLEAR
N=0
FOR X=1234 TO 4321
A=INT(X/1000)
B=INT((X-A*1000)/100)
________________________
D=X-A*1000-B*100-C*10
___________
N=N+1
ENDIF
ENDFOR
? N
SET TALK ON
RETURN
运行结果:125
87、 设有用26个字母表示的26个表达式:A=1,B=1/(A+1),C=1/(B+2),…,Z=1/(Y+25),试求出字母Z的值(要求按四舍五入的方式精确
到小数点后第二位)。
SET TALK OFF
CLEAR
_____
FOR K=2 _______
A=1/(A+K-1)
ENDFOR
? ROUND(A,2)
SET TALK ON
RETURN
运行结果:0.04
88、 一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的4/5倍。试求出此球从开始下落至第10次着地时在垂直方向所经过的总路程是多少米(将第1位小数四舍五入,只保留整数)。
SET TALK OFF
CLEAR
H=100
S=H
__________
H=H*4/5
________
ENDFOR
? ROUND(S,0)
SET TALK ON
RETURN
"运行结果:793"
89、

已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列的前30项的和。
SET TALK OFF
CLEAR
A=1
____
FOR N=2 TO 30
_____
S=S+A
ENDFOR
? S
SET TALK ON
RETURN
"运行结果:4525"
90、求方程X^3-4X-5=0在区间[2,3]内的解。要求按四舍五入的方式精确到小数点后第二位。[算法提示:一般地,在给定区间内使得方程左边的绝对值最小的X0即为近似解。]
SET TALK OFF
CLEAR
X0=2
F0=ABS(2^3-4*2-5)
FOR X=2 TO 3 STEP 0.01
__________
IF F0>FX
____
X0=X
ENDIF
ENDFOR
? X0
SET TALK ON
RETURN
"运行结果:2.46"
91、求S=1-1/2+1/3-1/4+…+1/99-1/100的值(将小数点后第3位四舍五入,只保留2位小数)。
SET TALK OFF
CLEAR
_______
FOR N=1 TO 100 STEP 2
S=S+_________
ENDFOR
? ROUND(S,2)
SET TALK ON
RETURN
运行结果:0.69
92、将大于1000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。
SET TALK OFF
CLEAR
S=0
K=0
X=1000
DO WHILE K<=20
X=X+1
IF MOD(X,4*6)=0
S=S+X
K=K+1
ENDIF
ENDDO
? S
SET TALK ON
RETURN
"运行结果:20610"
93、求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A<=B,当A越大时A+B越小)
SET TALK OFF
CLEAR
C=54321
K=INT(SQRT(C))
FOR A=1 TO K
B=INT(C)/A
IF A*B=C
MAX=A
ENDIF
ENDFOR
? MAX
SET TALK ON
RETURN
"运行结果:953"
94、下面程序求在1,2,3,4,…,500这500个数中的任意选两个不同的数,要求它们的和能被2整除的数的总对数(注意:像3+5和5+3被认为是同一对数)。请完成程序填空。(保留整数位)
SET TALK OFF
CLEAR
N=0
I=1
DO WHILE I______
J=1
DO WHILE J____
IF MOD(I+J,2)=0
N=N+1
ENDIF
J=J+1
ENDDO
I=I+1
ENDDO
?N
SET TALK ON
RETURN
"运行结果:62250"
95、下面程序是求2203年各月份中的15日有几天是星期二。填空完成程序。(保留整数位)
SET TALK OFF
S=1
M=1
N=0
DO WHILE M<=______
S=LTRIM(STR(M))+""/15/2003""
IF DOW(CTOD(S))=3
N=_______
ENDI
M=M+1
ENDD
?N
RETU
"运行结果:3"
96、列程序的功能是求I,其中I是一个四位整数,它的九倍恰好是其反序数(反序数就是将整数的数字倒过来形成的数,例如1234的反序数为4321)
。填空完成该程序。(保留整数位)
SET TALK OFF
I=1002
DO WHILE I<=1111
N = I
A = MOD(N,10)*1000
N = INT(N/10)
B = MOD(N,10) * 100
N = INT(N/10)
C =______
D = INT(N/10)
IF A + B+ C + D = I * 9
?I
ENDIF
______
ENDDO
SET TALK ON
RETURN
运行结果:1089
97、下面程序的功能是判断2123年是否为闰年。若是闰年,输出“YES”,否则输出“NO”。请根据功能填空。
SET TALK OFF
CLEAR
ANS=" "
Y=2123
DO SUB WITH Y, A

NS
?ANS
SET TALK ON
RETURN
PROCEDURE SUB
PARAMETER __________
ANS="NO"
IF Y % 4=0 .AND. (Y % 100<>0 .OR. Y % 400=0)
ANS=""YES""
ENDIF
RETURN
"运行结果:NO"
98、下面程序求在1,2,3,4,…,1000这1000个数中的任意选两个不同的数,要求它们的和能被4整除的数的总对数(注意:像3+5和5+3被认为是同一对数)。请完成程序填空。(保留整数位)
SET TALK OFF
CLEAR
N=0
I=1
DO WHILE I<=1000
J=1
DO WHILE J<I
IF MOD(I+J,4)=0
N=________
ENDIF
J=J+1
ENDDO
________
ENDDO
?N
SET TALK ON
RETURN
运行结果:124750
99、下面程序是求2203年各月份中的15日有几天是星期二。填空完成程序。(保留整数位)
SET TALK OFF
S=1
M=1
N=0
DO WHILE M<=______
S=LTRIM(STR(M))+""/15/2003""
IF DOW(CTOD(S))=3
N=_______
ENDI
M=M+1
ENDD
?N
RETU
"运行结果:3"
100、 已知S1=1,S2=1+2,S3=1+2+3,…SN=1+2+3+…+N,求S1,S2,S3,…S2200中有多少个能被6或11整除的数。填空完成程序。(保留整数位)
SET TALK OFF
CLEA
I=1
N=0
DO WHILE I<=2200
S=0
J=1
DO WHILE J______
S=_______
J=J+1
ENDDO
IF INT(S/6)=S/6.OR.INT(S/11)=S/11
N=N+1
ENDIF
I=I+1
ENDDO
? N
SET TALK ON
RETURN
运行结果:1001
101、完成程序填空,求S=14!+15!+16!+17!+18!。(保留整数位)
SET TALK OFF
CLEAR
S=0
I=14
DO WHILE I<=18
_________
J=1
DO WHILE J<=I
T=T*J
J=J+1
ENDDO
S=_______
I=I+1
ENDDO
?S
SET TALK ON
RETURN
运行结果:6780378776371200
程序改错和填空题选

28



相关主题
文本预览
相关文档 最新文档