程序设计
一、程序改错题
1. 下面的程序是求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
修改后的程序执行结果为:1092
2. 已知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 0 TO S
J=1
DO WHILE J<=I
S=S+J
J=J+1
ENDDO
IF MOD(S,17)=0
N=N+1
ENDIF
程序设计
ENDDO
? N
SET TALK ON
RETURN
修改后的程序执行结果为:12
3. 计算S=1*5*9*13*...*k,直到累乘数k>=25中止。程序中有错误。改正后运行程序,将程序执行结果填入答案框内。
SET TALK OFF
CLEAR
s=0
k=1
DO WHILE .T.
s=s*k
IF k>=25
EXIT
ENDIF
k=k+4
ENDDO
?s
RETURN
修改后的程序执行结果为:5221125
4. 下面的程序是求1到500的偶数立方和与奇数立方和之差。程序中有一处错。更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口内。
SET TALK OFF
STORE 0 TO I,S1,S2
DO WHILE I<=500
I=I+1
IF MOD(I,2)=0
S1=S1+I*I*I
ELSE
S2=S2+I*I*I
程序设计
ENDDO
? S1-S2
SET TALK ON
RETURN
修改后的程序执行结果为:62687500
5. 程序求能被3整除且至少有一位数字为5的三位数的个数。程序中有一行有错误。更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口。
SET TALK OFF
CLEAR
S=0
X=100
DO WHILE X<=999
IF MOD(X,3)<>0
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
6. 下面的程序是求在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<I
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
7. 已知一个数列的前三个数是1,2,3,从第四个数起,每个数都是前三个数之和。下面的程序是求出该数列的第15个数。改正程序中的错误后运行程序,将程序执行结果填入答案框内。
SET TALK OFF
DIME A(15)
A(1)=1
A(2)=2
A(3)=3
I=4
DO WHILE I=15
A(I)=A(I-1)+A(I-2)+A(I-3)
I=I+1
ENDDO
? A(15)
SET TALK ON
RETURN
修改后的程序执行结果为:4841
程序设计
二、程序填空题
1. 下列的程序是求S=8!+9!+10!的程序.在下列程序中填上缺少的语句或 另外编写程序,(程序名由考生自定)运行程序,将结果填入答题窗口。
SET TALK OFF
CLEAR
S=0
I=8
DO WHILE I<=10
STORE 1 TO T,J
DO WHILE J<=I
T=T*J
J=J+1
ENDDO
_________
I=I+1
ENDDO
?S
SET TALK ON
RETURN
程序的执行结果为:4032000
2. 设S=1+1/2+1/3+...+1/N,N为正整数。编程求使S不超过10的最大的N.(程序名由考生自定)。在下列程序中填上缺少的语句或另外编写程序,运行程序,将结果填入答题窗口。 set talk off
clear
s=0
i=1
do while s<=10
s=s+1/i
________ i=i+1
enddo
? i-2
set talk on
return 程序的执行结果为:12366 s=s+t
程序设计
3. 输出[10,100]中除以17的余数和除以5的商相等的整数的个数。
SET TALK OFF
N=0
FOR K=10 TO 100
IF ________ k%17=int(k/5)
? K
N=N+1
ENDIF
ENDFOR
? N
RETURN
程序的执行结果为:4
4. 统计区间[1000,9999]内所有能被3整除,且千位数字与个位数字之和为8的整数的个数。
Set talk off
t=0
I=1000
do while I<=9999
if _________ i%3=0 and int(i/1000)+i%10=8
t=t+1
endif
I=I+1
enddo
?t
return
程序的执行结果为:264
5. 求在四位数的奇数中,所有各位数字之和是25的倍数的数的和。
CLEAR
S=0
FOR I=1001 TO 9999 STEP 2
程序设计
A=INT(I/1000)
B=INT(I/100)%10
C=INT(I/10)%10
D=I%10
IF _________
S=S+I
ENDIF
NEXT
?"S=",S
RETURN
程序的执行结果为:1298515
6. 求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500时程序退出。 CLEAR
S=0
FOR I=1 TO 5000
IF _________
S=S+I
IF S>500
EXIT
ENDIF
ENDIF
NEXT
?"S=",S
RETURN
程序的执行结果为:550
7. 程求S=1*3+2*4+3*5+...+198*200。在下列程序中填上缺少的语句或另外编写程序,运行程序,将结果填入答题窗口。
SET TALK OFF
S=0
N=1
DO WHILE N<=198
________ s=s+n*(n+2) i%5=0 and i%2=0 (a+b+c+d)%25=0
程序设计
ENDDO
? S
SET TALK ON
RETURN
程序的执行结果为:2646501
8. 求出所有能被17整除且不含重复数字的三位数的和。(程序名由考生自定)。在下列程序中填上缺少的语句或另外编写程序,运行程序,将结果填入答题窗口。
set talk off
i=100
store 0 to t
do while i<=999
a=int(i/100)
b=int((i-a*100)/10)
c=mod(i,10)
if ___________
t=t+i
endif
i=i+1
enddo
?t
return
程序的执行结果为:21267
9. 数列xi各元素的值是:x1=1,x2=1+2,x3=1+2+3,.....xn=1+2+3+......+n。对数列求和:S=x1+x2+x3....,直到S>3000止,求此时数列中最大的元素值。(程序名由考生自定)。在下列程序中填上缺少的语句或另外编写程序,运行程序,将结果填入答题窗口。 SET TALK OFF
CLEAR
s=0
p=0
i=1
DO WHILE .t. i%17=0 and a<>b and b<>c and c<>a
程序设计
S=S+P
IF s>3000
______
ENDIF
i=i+1
enddo
? p
RETURN
程序的执行结果为:351
10. 求出[100,500]以内同时满足除以7余1,除以5余3,除以3余1的所有整数的个数。(程序名由考生自定)。在下列程序中填上缺少的语句或另外编写程序,运行程序,将结果填入答题窗口。
Set talk off
clear
n=0
sum=0
for I=100 to 500
if _____________
n=n+1
endif
endfor
? N
set talk on
return
程序的执行结果为:4
11. 求[200,600]间奇数之和。(程序名由考生自定)。在下列程序中填上缺少的语句或另外编写程序,运行程序,将结果填入答题窗口。
Set talk off i%7=1 and i%5=3 and i%3=1 exit
程序设计
s=0
for I=200 to 600
if ________
loop
endif
s=s+I
endfor
? S
return
程序的执行结果为:80000
12. 编程求区间[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
_________
enddo
?t
程序的执行结果为:560
i=i-1 i%2=0