1、【
简答题】
下列程序为求s=1-1/3+1/5-1/7+...-1/99之值,(精确到小数后两位), 程序中有错误。 改正后运行程序,将程序执行结果填入答案框内。
set talk off
s=0
n=1
do while n<=99
s=s+1/n
n=n+1
enddo
?s
return
[10分]
解析:
修改后:set talk off
s=0
n=1
i=1
do while n<=99
s=s+i/n
n=n+2
i=-i
enddo
?s
return
2、【
简答题】
下列的程序是求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
[10分]
解析:
S=s+t
其它方法:
Set talk off
Clear
S=0
T=1
For i=1 to 10
T=t*i
If i>=8
S=s+t
Endif
Endfor
?s
其它方法:
Set talk off
Clear
S=0
For i=8 to 10
T=1
For j=1 to i
T=t*j
Endfor
S=s+t
Endfor
?s
3、【
简答题】
求[600,900]之间素数的个数。
[10分]
解析:
Set talk off
I=900
t=0
do while I>=600
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
enddo
?t
set talk on
4、【
简答题】
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
IF S>=680000
EXIT
ENDIF
( )
ENDDO
?n
[10分]
解析:
N=n+2
其它方法:
Set talk off
Clear
S=0
I=3
Do while .t
T=1
For j=1 to i
T=t*j
Endfor
S=s+t
If s>=680000
Exit
endif
I=i+2
Enddo
?s
其它方法:
Set talk off
Clear
S=0
T=1
I=1
Do while .t.
T=t*i
If i>=3 and mod(I,2)=1
S=s+t
Endif
If s>=680000
Exit
endif
I=i+1
Enndo
?s
5、【
简答题】
下面的程序是求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
[10分]
解析:
Do while .f. 改为 Do while .t.
6、【
简答题】
统计[1000,5000]内所有既能被7整除,且至少有一位数字是9的数的个数。
[10分]
解析:
clear
n=0
for i=1000 to 5000
if i%7=0 and ‘9’$str(i)
n=n+1
endif
next
?n
7、【
简答题】
已知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
J=1
DO WHILE J<=I
S=S+J
J=J+1
ENDDO
IF MOD(S,17)=0
N=N+1
ENDIF
I=I+1
ENDDO
? N
SET TALK ON
RETURN
[10分]
解析:
STORE 1 TO S 改为 s=0
IF MOD(S,17)=0 or mod(s,35)=0
8、【
简答题】
编程序求出3000到5000之间同时满足除3余2和除5余3条件的数的个数。
[10分]
解析:
clear
n=0
for i=3000 to 5000
if i%3=2 and i%5=3
n=n+1
endif
next
?n
Return
9、【
简答题】
设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
( )
enddo
? i-2
set talk on
return
[10分]
解析:
i=i+1
10、【
简答题】
下列程序为求满足s=1^3+2^3+3^3+...+N^3,当s>=100000的最小的整数N。
程序中有错误。
改正后运行程序,将程序执行结果填入答案框内。
set talk off
s=0
n=1
do while s>=100000
s=s+n^3
n=n+1
enddo
?n
return
[10分]
解析:
do while s>=100000 改为 s<100000
?n 改为 n-1
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
( )
enddo
?t
[10分]
解析:
i=i-1
12、【
简答题】
计算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
[10分]
解析:
s=0 改为 s=1
13、【
简答题】
编程序求出1到5000之间同时满足除7余2和除9余5条件的数的和。
[10分]
解析:
clear
s=0
for i=1 to 5000
if i%7=2 and i%9=5
s=s+i
endif
next
? “和:”, s
return
14、【
简答题】
输出[10,100]中除以17的余数和除以5的商相等的整数及其个数。
SET TALK OFF
N=0
FOR K=10 TO 100
IF ( )
? K
N=N+1
ENDIF
ENDFOR
? N
RETURN
[10分]
解析:
K%17=K/5
15、【
简答题】
下面的程序是求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
ENDIF
ENDDO
? S1-S2
SET TALK ON
RETURN
[10分]
解析:
DO WHILE I<=500改为I<500
16、【
简答题】
下面的程序是计算1*2*3*4*5...的积,要求其积大于10000后结束程序运行,输出乘积的值。程序有一处错误。更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口内。
SET TALK OFF
STORE 1 TO X,Y
DO WHILE X<30
Y=Y*X
X=X+1
IF Y>10000
LOOP
ENDIF
ENDDO
? Y
SET TALK ON
RETURN
[10分]
解析:
LOOP改为EXIT
17、【
简答题】
编程求区间[5000,9999]中按递增顺序,第15大的素数。在下列程序中填上缺少的语句或另外 编写程序,运行程序,将结果填入答题窗口。
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
if t=15
?i
endif
endif
( )
enddo
[10分]
解析:
i=i-1
其它方法:
set talk off
clear
n=0
for i=9999 to 5000 step -1
for j=2 to i-1
if mod(I,j)=0
exit
endif
endfor
if i=j
n=n+1
endif
if n=15
exit
endif
endfor
?i
18、【
简答题】
求出[100,500]以内同时满足除以7余3,除以5余3,除以3余1的所有整数个数。
[10分]
解析:
clear
n=0
for i=100 to 500
if i%7=3 and i%5=3 and i%3=1
n=n+1
endif
next
? “个数:”, n
return
19、【
简答题】
求[105,625]间能被7和11整除的自然数之和。
[10分]
解析:
clear
s=0
for i=105 to 625
if i%7=0 and i%11=0
s=s+i
endif
next
? s
Return
20、【
简答题】
已知一个数列的前三个数是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
A(I)=A(I-1)+A(I-2)+A(I-3)
I=I+1
ENDDO
? A(35)
SET TALK ON
RETURN
[10分]
解析:
DO WHILE I=35 改为 I<=35
21、【
简答题】
下面的程序是求在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
[10分]
解析:
IF INT((I+J)/2)<>(I+J)/2 <> 改为 =
22、【
简答题】
设s=1+1/2+1/3+…+1/n, n为正整数。编程求使S刚好超过6时的n。
[10分]
解析:
clear
s=0
n=0
do while .t.
n=n+1
s=s+1/n
if s>6
exit
endif
enddo
? n-1
return
23、【
简答题】
有30个人在一家小餐馆里用餐,其中有男人、女人和小孩。每个男人花了3元,每个女人花了2元,每个小孩花了1元,一共花去50元,问有几种组合?
[10分]
解析:
set talk off
clear
n=0
for one=0 to 30
for two=0 to 15
for three=0 to 10
if one+two+five=30 and one+two*2+three*3=50
n=n+1
endif
endfor
endfor
endfor
?n
set talk on
Return
24、【
简答题】
编写程序,求共有几组I、j、k符合算式ijk+kji=1333,其中I、j、k是0~9之间的一位整数。
[10分]
解析:
clear
n=0
for i=0 to 9
for j=0 to 9
for k=0 to 9
if (i*100+j*10+k)+(k*100+j*10+i)=1333
n=n+1
endif
next
next
next
?n
return
25、【
简答题】
一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”,如:6=1+2+3,则6就是一个完数。求出1000以内的所有的完数之和。
[10分]
解析:
clear
s=0
for x=1 to 1000
t=0
for i=1 to x-1
if x%i=0
t=t+i
endif
next
if x=t
s=s+x
endif
next
?s