2.下面的程序是求3+9+27+81+243+...这样的数之和. 若累加数大于500时,则结束累加.程序中有一处错误。改正后运行程序,将程序执行结果填入答案框内。 SET TALK OFF CLEAR X=3 Y=0
DO WHILE .F. Y=Y+X IF Y>500 EXIT ENDIF
STORE 3*X TO X ENDDO ?Y
SET TALK ON RETURN
Do while .f. 改为 Do while .t.修改后的程序执行结果为:1092
3.已知S1=1,S2=1+2,S3=1+2+3,?,SN=1+2+?+N,下面的程序求S20到S80有多少数能被17或35整除。改正后运行程序,将程序执行结果填入答案框内。
SET TALK OFF I=20 N=0
DO WHILE I<=80
STORE 1 TO S 改为 s=0 J=1
DO WHILE J<=I S=S+J J=J+1 ENDDO
IF MOD(S,17)=0 or mod(s,35)=0 N=N+1 ENDIF I=I+1 ENDDO ? N
SET TALK ON RETURN 修改后的程序执行结果为:12
4.下列程序为求满足s=1^3+2^3+3^3+...+N^3,当s>=100000的最小的整数N。 程序中有错误。
改正后运行程序,将程序执行结果填入答案框内。 set talk off s=0 n=1
do while s>=100000 改为 s<100000 s=s+n^3
16
n=n+1 enddo
?n 改为 n-1
return 258
5.计算S=1*5*9*13*...*k,直到累乘数k>=25中止。程序中有错误。改正后运行程序,将程序执行结果填入答案框内。 SET TALK OFF CLEAR
s=0 改为 s=1 k=1
DO WHILE .T. s=s*k IF k>=25 EXIT ENDIF k=k+4 ENDDO ?s RETURN
修改后的程序执行结果为:5221125
6.下面的程序是求1到500的偶数立方和与奇数立方和之差。程序中有一处错。 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口内。
SET TALK OFF
STORE 0 TO I,S1,S2
DO WHILE I<=500改为I<500 I=I+1
IF MOD(I,2)=0 S1=S1+I*I*I ELSE
S2=S2+I*I*I ENDIF ENDDO ? S1-S2 SET TALK ON RETURN 修改后的程序执行结果为:62687500
7.下面的程序是计算1*2*3*4*5...的积,要求其积大于10000后结束程序运行,输出乘积的值。程序有一处错误。更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口内。
SET TALK OFF STORE 1 TO X,Y DO WHILE X<30 Y=Y*X
17
X=X+1
IF Y>10000
LOOP改为EXIT ENDIF ENDDO ? Y
SET TALK ON RETURN
8. 已知一个数列的前三个数是1,2,3,从第四个数起,每个数都是前三个数之和。下面的程序是求出该数列的第35个数。改正程序中的错误后运行程序,将程序执行结果填入答案框内。
SET TALK OFF DIME A(35) A(1)=1 A(2)=2 A(3)=3 I=4
DO WHILE I=35 改为 I<=35 A(I)=A(I-1)+A(I-2)+A(I-3) I=I+1 ENDDO ? A(35) SET TALK ON RETURN
修改后的程序执行结果为:950423。。。
9. 下面的程序是求在1,2,3,4,...,10这10个数中,任意选 两个不同的数,求它们的和能被2整除的数的总对数. (注意: 象3+5和5+3认为是同一对数). 程序中有一处错误。改正程序中的错误后运行程序,将程序执行结果填入答案框内。
SET TALK OFF CLEAR N=0 I=1
DO WHILE I<=10 J=1
DO WHILE J
IF INT((I+J)/2)<>(I+J)/2 <> 改为 =
N=N+1 ENDIF J=J+1 ENDDO
I=I+1
ENDDO
?N
SET TALK ON RETURN 修改后的程序执行结果为:20
18
10. 程序求能被3整除且至少有一位数字为5的三位数的个数。程序中有一行有错误。更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口。 SET TALK OFF CLEAR S=0 X=100
DO WHILE X<=999
IF MOD(X,3)=0 and '5'$str(x) A=INT(X/100) B=INT(X/10)-A*10 C=X-A*100-B*10
IF A=5 .OR. B=5 .OR. C=5 S=S+1 ENDIF ENDIF X=X+1 ENDDO ? S RETURN
修改后的程序执行结果为:85
11.编程求区间[5000,9999]中所有素数的个数.(程序名由考生自定)。写程序,运行程序,将结果填入答题窗口.
set talk off i=9999 t=0
do while i>=5000
j=2
do while j<=i-1
if int(i/j)=i/j
exit endif j=j+1 enddo if j=i t=t+1 endif i=i-1
在下列程序中填上缺少的语句或另外编19
enddo
?T 560
12. 输出[10,100]中除以17的余数和除以5的商相等的整数及其个数。
SET TALK OFF N=0
FOR K=10 TO 100
IF MOD(K,17)=INT(I/5) ? K N=N+1 ENDIF ENDFOR ? N
RETURN
四、程序填空题
1. 下列的程序是求S=8!+9!+10!的程序.在下列程序中填上缺少的语句或 另外编写程序,(程序名由考生自定)运行程序,将结果填入答题窗口。
SET TALK OFF CLEAR S=0 I=8
其它方法: 其它方法: DO WHILE I<=10
Set talk off Set talk off STORE 1 TO T,J
Clear Clear DO WHILE J<=I
S=0 S=0 T=T*J
T=1 For i=8 to 10 J=J+1
For i=1 to 10 T=1 ENDDO
T=t*i For j=1 to i S=s+t
If i>=8 T=t*j I=I+1
S=s+t Endfor ENDDO
?S Endif S=s+t SET TALK ON Endfor Endfor RETURN ?s ?s 2.s=3!+5!+7!+?+n!,求直到s>=680000为止的最大阶乘数n。
SET TALK OFF CLEAR s=0 n=3
DO WHILE .T. T=1
FOR I=1 TO n T=T*I NEXT s=s+t
20