二级考试程序题目 题号
试题
程序
参考答案
1
* 某单位规定电费收费标准为:60度电以内每度收0.33元,60到100度范围内的电每度收费0.66元,超过100度的,每度收费1.65元。填空完成程序。(保留小数两位)
SET TALk OFF
CLEA
S=2
F1=1
F2=1
I=2
DO WHILE I77777720
______
ENDIF
ENDDO
? S
RETU
479001600
* 求100—999的水仙花数(一个数的值正好为自身各位立方之和,如:153=1^3+5...
题号
程序
参考
1
* 某单位规定电费收费标准为:60度电以内每度收0.33元,60到100度范围内的电每度收费0.66元,超过100度的,每度收费1.65元。填空完成程序。(保留小数两位)
SET TALk OFF
CLEA
S=2
F1=1
F2=1
I=2
DO WHILE I<=____
F=F1+F2
S=S+F
F1=F2
F2=F
I=______
ENDD
? S
RETU
3524577
2
* 求1×2×3×4×5…,当积大于77777720时退出循环。(保留整数位)
SET TALK OFF
CLEAR
I=0
S=1
DO WHILE .T.
I=I+1
S=S_____
IF S>77777720
______
ENDIF
ENDDO
? S
RETU
479001600
* 求100—999的水仙花数(一个数的值正好为自身各位立方之和,如:153=1^3+5^3+3^3)的个数。填空完成程序。(保留整数位)
clea
for i=100 to 999
a=int(i/100)
b=int((i-a*100)/10)
c=mod(i,10)
n=____
Return
4
4
* 求100到14000以内能被4和9整除的整数的和,填空完成程序。(保留整数位)
SET TALK OFF
CLEA
I=100
S=0
DO WHILE I<=14000
IF INT(I/4)=I/4.AND.INT(I/9)=I/9
________
ENDI
I=_____
ENDD
?S
RETU
2716668
* 求所有数字的和为13的四位数的个数,填空完成程序。(保留整数位)
set talk off
for i=1000 to 9999
j=alltrim(str(i))
a=left(j,1)
c=subs(______)
d=right(______)
if val(a)+val(b)+val(c)+val(d)=13
t=t+1
endif
return
405
* 设S是[1,100]之间的前若干个可被23整除的正整数之和,求使S>2000时的最小和数S。填空完成程序。(保留整数位)
SET TALK OFF
CLEA
DO WHILE .T.
IF INT(I/23)=I/23
ENDIF
IF S>2000
ENDDO
SET TALK ON
2093
* 完成程序填空,求S=14!+15!+16!+17!+18!。(保留整数位)
I=14
_________
J=1
DO WHILE J<=I
T=T*J
J=J+1
ENDDO
S=_______
I=I+1
?S
SET TALK ON
6780378776371200
8
* 下列程序的功能是求6到280之间的所有偶数的平方和并显示结果。请填空来实现上述功能。(保留整数位)
SET TALK OFF
CLEAR
Sum=0
x=6
DO WHILE x<=280
Sum=___________
ENDDO
?Sum
3697940
* 下列程序的功能是求i,其中i是一个四位整数,它的九倍恰好是其反序数(反序数就是将整数的数字倒过来形成的数,例如1234的反序数为4321)。填空完成该程序。(保留整数位)
N = INT(N/10)
N = INT(N/10)
IF A + B+ C + D = I * 9
ENDDO
SET TALK ON
1089
* 下列程序解百马百瓦问题。大马、小马和马驹共100匹,大马一驮三,小马一驮二,马驹二驮一,共100片瓦一次驮完,三种马都驮,共有多少种组合,填空完成程序。(保留整数位)
SET TALK OFF
CLEA
MJ=100-DM-XM
S=______
XM=XM+1
DM=DM+1
RETU
6
* 下列程序求能被3整除且有一位数字为5的三位数的个数,填空完成程序。(保留整数位)
CLEA
IF A=5.OR.B=5.OR.C=5
? S
85
* 下列程序求三位数中,个位数字与十位数字之和除以10所得的余数是百位数字的偶数的个数,填空完成程序。(保留整数位)
SET TALK OFF
DO WHILE X<=999
? S
45
* 下面程序的功能是判断2123年是否为闰年。若是闰年,输出“YES”,否则输出“NO”。请根据功能填空。
SET TALK OFF
S=""
DO SUB WITH Y, ANS
?ANS
SUB
IF Y % 4=0 .AND. (Y % 100<>0 .OR. Y % 400=0)
ENDIF
ETURN
NO
* 下面程序求在1,2,3,4,…,1000这1000个数中的任意选两个不同的数,要求它们的和能被2整除的数的总对数(注意:像3+5和5+3被认为是同一对数)。请完成程序填空。(保留整数位)
DO WHILE I<=1000
J=1
DO WHILE J
=3.5
exit && loop 改为 exit
endif
endfor
? n-1
set talk on
return
&& 结果为:18
4. 求100以内最大的自然数n,使得从1开始的连续n个自然数的平方和小于5000。
set talk off
clear
s=0
for n=1 to 100
s=s+n*2 && 改为s=s+n**2
if s>=5000
exit
endif
endfor
? n && 改为 ? n-1
set talk on
return
&& 结果为:24
10 求出50以内最小的自然数n,使得从101开始的连续n个奇数之和大于3000。
set talk off
clear
s=0
for n=1 to 50
a=101+2*n && a=101+2*n 改为 s=s+99+2*n
s=s+a && 去掉 s=s+a
if s>3000
exit
endif
endfor
? s && ? s 改为 ? n
set talk on
retur
&& 结果为:25
11. 求出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 && s<5000 改为 s>=5000
exit
endif
endfor
? n && ? n 改为 ? n-1
set talk on
return
&& 结果为:23
12. 求出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 && t<1000 改为 t>=1000
exit
endif
endfor
? n && ? n 改为 ? n-1
set talk on
return
&& 结果为:17
13 某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。
set talk off
clear
s=1
for n=2001 to 2100
s=s*1.03
if s=2 && s=2 改为 s>2
loop && loop 改为 exit
endif
endfor
? n
set talk on
return
&& 结果为:2024
14. 设等比数列:1,2,4,8,…。求使得此数列的前n项之和大于100000的最小的自然数n。
set talk off
clear
a=1
s=1 && s=1 改为 s=0
for n=1 to 100
s=s+a && 在 s=s+a 前加 a=2^(n-1)
if s>100000
exit
endif
a=2+a && 去掉 a=2+a 该句
endfor
? n
set talk on
return
&& 结果为:17
15 求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。
set talk off
clear
a=45678
n=0
for b=3 to a step 2
if mod(b,a)=0 && mod(b,a) 改为 mod(a,b)
n=n+1
endif
endfor
? b && ? b 改为 ?n
set talk on
return
&& 结果为:7
16. 求出203267的所有真因子(即小于它本身的约数)中最大的因子数。
set talk off
clear
a=203267
n=0
for b=1 to a
if mod(a,b)=0 && mod(b,a)=0 改为 mod(a,b)=0
&& 加 if b=a
&& 加 exit
&& 加 endif
max=a && max=a 改为 max=b
endif
endfor
? a && ?a 改为 ? max
set talk on
return
&& 结果为:6557
17. 求出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=d && max=b 改为 max=d
endif
endfor
? max && ?d 改为 ? max
set talk on
return
&& 结果为:713
18. 求559399的所有非平凡因子(即除1和它本身以外的约数)中最小的。
set talk off
clear
a=559399
for n=2 to a
if mod(a,n)=0
loop && loop 改为 exit
endif
endfor
return
&& 结果为:73
19 求9269和8671的最小公倍数。
set talk off
clear
a=9269
b=8671
for k=a to a*b step a
if mod(k,b)<>0
loop
endif
&& 加 exit
endfor
? k
set talk on
return
&& 结果为:2668801
20. 已知数列: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 && loop 改为 exit
endif
endfor
? n && ?n 改为 ?a
set talk on
return
&& 结果为:5051
21. 求出100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于88888。
set talk off
clear
s=0
for n=1 to 100
a=n*3 && a=n*3 改为 a=n^3
s=s+a
if s>88888
exit
endif
endfor
? a && ?a 改为 ?n
set talk on
return
&& 结果为:24
22. 设一数列{f(n)}:f(1)=1,当n>1时f(n)=1/(f(n-1)+1)。试求出此数列的前20项中大于0.618的项数。
set talk off
clear
f=1.00000000
n=0
for k=2 to 20
f=1/f+1 && f=1/f+1 改为 f=1/(f+1)
if f>0.618
n=n+1
endif
endfor
? N && ?n 改为 ? n+1
set talk on
return && 答案:15
23 设有用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 && 26 改为 25
lett=1/(lett+k)
if lett<0.1
n=n+1
endif
endfor
? N
set talk on
return && 答案:16
24 设一个数列的前3项都是1,从第4项开始,每一项都是其前3项之和。试求出此数列的前25项中大于54321的项数。
set talk off
clear
store 1 to f1,f2,f3
n=0
for k=1 to 25 && k=1 改为 k=4
f=f1+f2+f3
if f>54321
n=n+1
endif
f1=f2
f2=f3
f3=f1 && f3=f1 改为 f3=f
endfor
? n
set talk on
return && 答案:5
25 已知一个由分数组成的数列: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 && f1=f2 改为 f1=f1+f2
f2=f1 && f2=f1 改为 f2=f1+f2
endfor
? n
set talk on
return && 答案:20
26 回文指的是正读和反读都一样的一串字符,如121、1221。试求出[1421,4112]内所有回文数的和。
set talk off
clear
s=0
for x=1421 to 4112
a=x/1000 && a=x/1000 改为 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 a=d and b=c
s=s*x && s=s*x 改为 s=s+x
endif
endfor
? s
set talk on
return && 答案:74250
27. 若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如144是完全平方数,因为它等于12的平方。求[1000,3000]内所有完全平方数的和。
set talk off
clear
s=0
for x=1000 to 3000
y=sqrt(x) && y=sqrt(x) 改为 y=int(sqrt(x))
if x=y*y
s=s+x
endif
endfor
? x && x 改为 s
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)))
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. 求出将十进制整数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
33 已知数列{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)
f(1)=1
f(2)=1
s=0
for n=3 to 25
f(n)=f(n-2)+f(n-1)
if n<=11
s=f(n)
endif
endfor
? s
set talk on
return && 答案:195431
34 求出将十进制小数0.987654321等值转换为二进制形式表示后前25位小数中数字0的个数。(提示:使用“2乘取整”法)
set talk off
clear
x=0.987654321
n=0
for k=1 to 25
x=2**x
z=int(x)
x=x-z
if z=1
n=n+z
endif
endfor
? n
set talk on
return && 答案: 8
35 对自然数A、B、C,若A方案共有多少种?
set talk off
clea
n=0
for yi=1 to 60
for wu=1 to 20
er=20
if yi+er*2+wu*5=100
n=n+1
endif
endfor
endfor
? n
set talk on
return 答案:11
39、设某四位数的各位数字的平方和等于198,问满足这种条件的最大数和最小数之和是多少?
set talk off
clea
min1=9999
max1=1000
for x=1000 to 9999
a=int(x/1000)
b=int((x-a*1000)/100)
c=int((x-b*100-a*1000)/10)
d=mod(x,10)
if a*a+b*b+c*c+d*d=198
if max1
x
min1=x
endif
endif
endfor
? max1+min1
set talk on
return 答案:12749
40、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求两位数中最大的绝对素数与最小绝对素数之差。
set talk off
clea
min=100
max=0
for i=10 to 99
j=mod(i,10)*10+int(i/10)
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 mod(j,k)=0
f2=0
endif
endfor
if f1=1 and f2=1
if min>i
min=i
endif
max=i
endif
endfor
? max-min
Return 答案:86
41、"水仙花数"是指这样的数,其各位数字的立方和等于该数本身,如:153=1^3+5^3+3^3。编写程序,计算从100年开始到3000年为止,最大的水仙花数年号为多少?
set talk off
clea
s=100
for i=100 to 3000
a=int(i/1000)
b=int((i-a*1000)/100)
c=int(mod(i,100)/10)
d=mod(i,10)
if a**3+b**3+c**3+d**3=i
if s
本文档为【二级考试程序题目】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。