程序改错和填空题选
程 序 设 计 题 选
1、求100以内最大的自然数N,使得从1开始的连续N个自然数的倒数之和小于3.5。 SET TALK OFF CLEAR S=0
FOR N=1 TO 100
S=(S+1)/N 改正:S=S+1/N IF S>=3.5
LOOP 改正:EXIT 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 改正:IF S>3.6 LOOP 改正:EXIT 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 改正:S=S+A IF S>=3000
LOOP 改正:EXIT 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 改正:A=100+2*N S=S+A IF S>2000
LOOP 改正:EXIT ENDIF ENDFOR ? N
SET TALK ON RETURN
1
程序改错和填空题选
\运行结果: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 改正:IF S>5000 EXIT ENDIF ENDFOR
? N 改正:? N-1 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 改正:IF S>6000 LOOP 改正:EXIT 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 改正:IF T>1000 EXIT ENDIF ENDFOR
? N 改正:? N-1 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 改正:IF S>0.68 EXIT ENDIF ENDFOR ? N-2
SET TALK ON RETURN
2
程序改错和填空题选
\运行结果:35\
9、某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。
SET TALK OFF CLEAR S=1
FOR N=2001 TO 2100 S=S*1.03
IF S=2 改正:IF S>=2 LOOP 改正:EXIT ENDIF ENDFOR ? N
SET TALK ON RETURN
\运行结果:2024\
9、设等比数列:1,2,4,8,?。求使得此数列的前N项之和大于100000的最小的自然数N。 SET TALK OFF CLEAR A=1
S=1 改正:S=0 FOR N=1 TO 100 S=S+A
IF S>100000 EXIT ENDIF
A=2+A 改正:A=A*2 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 改正:A=A*2 ENDFOR
? N 改正:? N-1 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 改正:IF MOD(A,B)=0 N=N+1 ENDIF ENDFOR
? B 改正:? N SET TALK ON
3
程序改错和填空题选
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 改正:MAX=D ENDIF ENDFOR
? D 改正:MAX 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 改正:IF MOD(N,6)=0 OR MOD(N,8)=0 S=SQRT(S+N) 改正:S= S+SQRT(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 改正:A=INT(X/10) B=MOD(X,10)
Y=10*A+B 改正:Y=10*B+A 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 改正:EXIT ENDIF ENDFOR
? N 改正:? A SET TALK ON RETURN
\运行结果:5051\
16、已知数列:1,2,4,7,11,16,?,其规律是相邻两项之差依次是1,2,3,4,5,?。试求出此数列中小于6000的最大的项。
4
程序改错和填空题选
SET TALK OFF CLEAR
A=0 改正:A=1 FOR N=0 TO 1000
IF A+N<6000 改正: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 改正:IF F(N)>87654321 LOOP 改正:EXIT 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 改正:IF S<999999 EXIT ENDIF ENDFOR
? N 改正:? N-1 SET TALK ON RETURN
运行结果:44
19、一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最小的自然数N,使得此球从开始下落至第N次着地时在垂直方向所经过的总路程超过678米。 SET TALK OFF CLEAR H=100
S=0 改正:S=100 FOR N=2 TO 100 H=H*3/4
S=S+H 改正:S=S+2*H IF S>678 EXIT ENDIF ENDFOR ? N
SET TALK ON RETURN
5