人人范文网 范文大全

改错题

发布时间:2020-03-02 00:05:17 来源:范文大全 收藏本文 下载本文 手机版

一、改错题

1.求[10,1000]内所有能被被7和9中至少一个数整除的整数之个数。 * skgc1.prg set talk off clear s=0

&&s=0改为n=0 for x=10 to 1000

if mod(x,7)=0 and mod(x,9)=0 && and改为or

n=n+x

&& n=n+x改为n=n+1

endif endfor ? x

&& x改为n set talk on return

&& 结果为: 236

2.求[10,1000]内所有能同时被7和9整除的整数之和。 set talk off clear s=0

for x=10 to 1000

if mod(x,7)=0 and mod(x,9)=0

s=x

&& s=x改为s=s+x

endif endfor ? x

&& x改为s set talk on return

&& 结果为:7560

7.求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。

* * skgc7.prg set talk off clear s=0 for n=1 to 100 s=s+1/n

&& s=(s+1)/n 改为 s=s+1/n if s>=3.5 exit

&& loop 改为 exit endif endfor ? n-1 set talk on return

&& 结果为:18

9.求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

16.求出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

17.求出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

&& s=5000

exit

endif endfor ? n

&& ? n 改为 ? n-1 set talk on return && 结果为:23

20.求出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

&& t=1000

exit

endif endfor ? n

&& ? n 改为 ? n-1 set talk on return && 结果为:17

28.某国在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

30.设等比数列: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

34.求出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

35.求出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

37.求出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

38.求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

42.求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

44.已知数列: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

49.求出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

54.设一数列{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

55.设有用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

n=n+1

endif endfor ? N set talk on return

&& 答案:16

57.设一个数列的前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

58.已知一个由分数组成的数列: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

62.回文指的是正读和反读都一样的一串字符,如1

21、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

77.若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如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

二、编程题

78.若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如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

79.求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A

&& 答案:953

82.设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

86.求出将十进制整数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

88.求出将十进制整数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

89.已知数列{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

&& 答案:195431

91.求出将十进制小数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

93.对自然数A、B、C,若A

&& 答案: 5

95.求方程3x-7y=1在条件|x|

&& 答案: 26

300、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求[300,1000]之间能被其因子数目整除的数的总和。 set talk off clea sm=0 for n=300 to 1000 s=0 for i=1 to n if mod(n,i)=0 s=s+1 endif endfor if mod(n,s)=0 sm=sm+n endif endfor ? sm set talk on return 答案:36550

29

6、找满足以下条件: X^2+Y^2+Z^2=41^2 且X+Y+Z之值最大的三个正整数X,Y,Z, 求X+Y+Z之值.set talk off clea max=0 for x=0 to 41 for y=0 to 41 for z=0 to 41 if x^2+y^2+z^2=41*41 if max

29

5、把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后其中二分的硬币恰有20枚的方案共有多少种? 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

290、设某四位数的各位数字的平方和等于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 max1x min1=x endif endif endfor ? max1+min1 set talk on return 答案:12749

280、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如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

27

6、\"水仙花数\"是指这样的数,其各位数字的立方和等于该数本身,如: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

27

3、设有一个12*12方阵A(I,j),其每个元素的值为该元素下标的平方和, 求出该矩阵所有主对角线(i=j)上的元素的累加和.(注:I,j从1开始) set talk off dime a(12,12) s=0 for i=1 to 12 for j=1 to 12 a(i,j)=i*i+j*j if i=j s=s+a(i,j) endif endfor endfor ? s Return 答案:1300

26

9、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是\"四位双平方数\"。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是\"四位双平方数\"。求所有\"四位双平方数\"且十位数字是3的数的之和\"。 set talk off clea n=0 for i=1000 to 9999 a=int(i/1000)

b=int((i-a*1000)/100)

c=int(mod(i,100)/10) d=mod(i,10) x=a+b+c+d if int(sqrt(i))^2=i and int(sqrt(x))^2=x and c=3 n=n+i endif endfor ? n set talk on return 答案:8836

26

4、编写程序,求所有符合算式ij*ji=1300的最大数ij(即i*10+j)。其中i、j是1~9之间的一位整数。 set talk off clea max=0 for i=1 to 9 for j=1 to 9 if (10*i+j)*(10*j+i)=1300 if max

26

1、勾股弦数是满足公式: A^2+B^2=C^2 (假定A

55、分子分母为正整数,分子小于分母且分子分母无公因数的分数称为最简真分数。对于分数的分母取值范围为 [50,90] 时的最简真分数共有多少个。 set talk off clea n=0 for a=2 to 90 && for b=50 to 90 && if a

2

31、求满足条件A*B=67532的所有自然数对A、B对应的A+B的最小值。(提示:设A

2

25、将大于1000且能被3和5中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。 set talk off clear k=0 s=0 x=1000 do while k

2

24、求出[1234,2346]内恰好有两位数字是6所有整数的和(注意AT()函数和STR()函数的功能)。 set talk off clear s=0 for x=1234 to 2346 if at(\'6\',str(x),2)!=0 and at(\'6\',str(x),3)=0 s=s+x endif endfor ? s set talk on return 答案:47583

20

1、一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最小的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程超过589米。 set talk off clear h=100 s=h for n=2 to 100 h=h*3/4 s=s+2*h if s>589 exit endif endfor ?n set talk on return 答案:7

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题

改错题
《改错题.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题 改错字题 改错题
点击下载本文文档