FoxPro程序题库_第1页
FoxPro程序题库_第2页
FoxPro程序题库_第3页
FoxPro程序题库_第4页
FoxPro程序题库_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、改错题 1. 求10,1000内所有能被被7和9中至少一个数整除的整数之个数。* skgc1.prg set talk offclears=0 &&s=0改为n=0for 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 endifendfor? x && x改为nset talk onreturn && 结果为: 236 2. 求10,1000内所有能同时被7和9整除的整数之和。set talk of

2、fclears=0 for x=10 to 1000 if mod(x,7)=0 and mod(x,9)=0 s=x && s=x改为s=s+x endifendfor? x && x改为sset talk onreturn && 结果为:7560 7.求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。 * * skgc7.prgset talk offclears=0for n=1 to 100s=s+1/n && s=(s+1)/n 改为 s=s+1/nif s>=3.5exit

3、&& loop 改为 exitendifendfor? n-1set talk onreturn && 结果为:18 9. 求100以内最大的自然数n,使得从1开始的连续n个自然数的平方和小于5000。set talk offclears=0for n=1 to 100s=s+n*2 && 改为s=s+n*2if s>=5000exitendifendfor? n && 改为 ? n-1set talk onreturn&& 结果为:24 16. 求出50以内最小的自然数n,使得从101开

4、始的连续n个奇数之和大于3000。set talk offclears=0for 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 endifendfor? s && ? s 改为 ? nset talk onretur&& 结果为:25 17. 求出100以内使得算式1*2+2*3+n*(n+1)的值小于5000的最大的自然数n。set talk offclears=0for n=1 to 100 a=n

5、*(n+1) s=s+a if s<5000 && s<5000 改为 s>=5000 exit endifendfor? n && ? n 改为 ? n-1set talk onreturn&& 结果为:23 20. 求出100以内使得算式1+(1+2)+(1+2+n)的值小于1000的最大的自然数n。set talk offclears=0t=0for n=1 to 100 s=s+n t=t+s if t<1000 && t<1000 改为 t>=1000 exit endife

6、ndfor? n && ? n 改为 ? n-1set talk onreturn&& 结果为:17 28. 某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。set talk offclears=1for n=2001 to 2100 s=s*1.03 if s=2 && s=2 改为 s>2 loop && loop 改为 exit endifendfor? nset talk onreturn&& 结果为:2024 30. 设等比数

7、列:1,2,4,8,。求使得此数列的前n项之和大于100000的最小的自然数n。set talk offcleara=1s=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? nset talk onreturn&& 结果为:17 34. 求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。set talk offclea

8、ra=45678n=0for b=3 to a step 2 if mod(b,a)=0 && mod(b,a) 改为 mod(a,b) n=n+1 endifendfor? b && ? b 改为 ?nset talk onreturn&& 结果为:7 35. 求出203267的所有真因子(即小于它本身的约数)中最大的因子数。set talk offcleara=203267n=0for b=1 to a if mod(a,b)=0 && mod(b,a)=0 改为 mod(a,b)=0 && 加 if

9、 b=a && 加 exit && 加 endif max=a && max=a 改为 max=b endifendfor? a && ?a 改为 ? maxset talk onreturn&& 结果为:6557 37. 求出20677和42067的最大公约数。set talk offcleara=20677b=42067for d=1 to a if mod(a,d)=0 and mod(b,d)=0 max=d && max=b 改为 max=d endifendfor? max &

10、amp;& ?d 改为 ? maxset talk onreturn&& 结果为:713 38. 求559399的所有非平凡因子(即除1和它本身以外的约数)中最小的。set talk offcleara=559399for n=2 to a if mod(a,n)=0 loop && loop 改为 exit endifendforreturn&& 结果为:73 42. 求9269和8671的最小公倍数。set talk offcleara=9269b=8671for k=a to a*b step a if mod(

11、k,b)<>0 loop endif && 加 exitendfor? kset talk onreturn&& 结果为:2668801 44. 已知数列:1,2,4,7,11,16,,其规律是相邻两项之差依次是1,2,3,4,5,。试求出此数列中大于5000的最小的项。set talk offcleara=1for n=0 to 1000 a=a+n if a>5000 loop && loop 改为 exit endifendfor? n && ?n 改为 ?aset talk onreturn&a

12、mp;& 结果为:5051 49. 求出100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于88888。set talk offclears=0for n=1 to 100 a=n*3 && a=n*3 改为 a=n3 s=s+a if s>88888 exit endif endfor? a && ?a 改为 ?nset talk onreturn&& 结果为:24 54. 设一数列f(n):f(1)=1,当n>1时f(n)=1/(f(n-1)+1)。试求出此数列的前20项中大于0.618

13、的项数。set talk offclearf=1.00000000n=0for k=2 to 20 f=1/f+1 && f=1/f+1 改为 f=1/(f+1) if f>0.618 n=n+1 endifendfor? N && ?n 改为 ? n+1set talk onreturn && 答案:15 55. 设有用26个字母表示的26个表达式:a=1,b=1/(a+1),c=1/(b+2),z=1/(y+25)。试求出这26个字母中其值小于0.1的字母个数。set talk offclearlett=1n=0for k=1

14、 to 26 && 26 改为 25 lett=1/(lett+k) if lett<0.1 n=n+1 endifendfor? Nset talk onreturn && 答案:16 57. 设一个数列的前3项都是1,从第4项开始,每一项都是其前3项之和。试求出此数列的前25项中大于54321的项数。set talk offclearstore 1 to f1,f2,f3n=0for k=1 to 25 && k=1 改为 k=4 f=f1+f2+f3 if f>54321 n=n+1 endif f1=f2 f2=f3

15、 f3=f1 && f3=f1 改为 f3=fendfor? nset talk onreturn && 答案:5 58. 已知一个由分数组成的数列:1/2,3/5,8/13,21/34,其特点是:从其中第2个数起,每个分数的分子都是前一分数的分子分母之和。而其分母都是其分子与前一分数的分之和。试求出此数列的前25项中其值大于0.618的项数。set talk offclearf1=1f2=2n=0for k=1 to 25 f=f1/f2 if f>0.618 n=n+1 endif f1=f2 && f1=f2 改为 f1=f

16、1+f2 f2=f1 && f2=f1 改为 f2=f1+f2endfor? nset talk onreturn && 答案:20 62. 回文指的是正读和反读都一样的一串字符,如121、1221。试求出1421,4112内所有回文数的和。set talk offclears=0for 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

17、=d and b=c s=s*x && s=s*x 改为 s=s+x endifendfor? sset talk onreturn && 答案:74250 77. 若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如144是完全平方数,因为它等于12的平方。求1000,3000内所有完全平方数的和。set talk offclears=0for x=1000 to 3000 y=sqrt(x) && y=sqrt(x) 改为 y=int(sqrt(x) if x=y*y s=s+x endifendfor? x &&a

18、mp; x 改为 sset talk onreturn && 答案:43539 二、编程题78. 若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求2,99999内所有自同构数之和。(提示:若x是m位同构数,则x的平方除以10的m次方的余数就是x)set talk offclears=0for x=2 to 99999 y=x*x m=len(ltrim(str(x) if mod(y,10*m)=x s=s+x endifendfor? yset talk onreturn &&

19、 答案:101114 79. 求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A<=B,当A越大时A+B越小)set talk offclearc=54321k=int(sqrt(c)for a=1 to kb=int(c)/aif a*b=cmax=aendifendfor? maxset talk onreturn && 答案:953 82. 设a=123,b=541,求a/b的精确值中小数点后40位数字中数字1的个数。(提示:基于人工计算的思想)set talk offcleara=123b=541n=0f

20、or k=1 to 40a=a+0q=int(a)/bif q=1n=n+1endifa=mod(a,b)endfor? nset talk onreturn && 答案:3 86. 求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。(提示:模拟人工计算的“2除取余”法)set talk offclear a=98765432 p=2do while a>0 r=mod(a,p)if r=1n=1endif a=int(a/p) enddo? Nset talk onreturn && 答案:13 88. 求出

21、将十进制整数99887766554等值转换为十六进制形式表示后其中字母C的个数。(提示:模拟人工计算的“16除取余”法)set talk offcleara=99887766554p=16n=0do while a=0r=mod(a,p)if r=11n=n+rendifa=int(a/p)enddo? nset talk onreturn && 答案: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 offcleardimension f(25

22、)f(1)=1f(2)=1s=0for n=3 to 25f(n)=f(n-2)+f(n-1)if n<=11s=f(n)endifendfor? sset talk onreturn&& 答案:195431 91. 求出将十进制小数0.987654321等值转换为二进制形式表示后前25位小数中数字0的个数。(提示:使用“2乘取整”法)set talk offclearx=0.987654321n=0for k=1 to 25x=2*xz=int(x)x=x-zif z=1n=n+zendifendfor? nset talk onreturn &&am

23、p; 答案: 8 93. 对自然数A、B、C,若A<B<C且A*A+B*B=C*C,则称A,B,C为一组勾股弦数,其中A、B、C分别称为勾、股、弦。试求出弦为25000的勾股弦数组的个数。set talk offclearc=25000n=1for a=1 to c-1b=int(sqrt(c*c-a*a)if a*a+b*b=c*c and a<bn=n+aendifendfor? nset talk onreturn && 答案: 5 95. 求方程3x-7y=1在条件|x|<100且|y|<40下的整数解的个数。set t

24、alk offclearn=0for x=-99 to 99y=int(3*x-1)/7)if 3*x-7*y=1 or abs(y)<40n=n+xendifendfor? nset talk onreturn && 答案: 26 300、已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好被其因子个数8整除。求300,1000之间能被其因子数目整除的数的总和。set talk offcleasm=0for n=300 to 1000s=0for i=1 to n if mod(n,i)=0s=s+1endifendforif mod

25、(n,s)=0sm=sm+nendifendfor? smset talk onreturn答案:36550 296、找满足以下条件: X2+Y2+Z2=412 且X+Y+Z之值最大的三个正整数X,Y,Z, 求X+Y+Z之值.set talk offcleamax=0for x=0 to 41for y=0 to 41for z=0 to 41if x2+y2+z2=41*41if max<x+y+zmax=x+y+zendifendifendforendforendfor? maxset talk onreturn答案:71 295、把一张一元钞票,换成一分、二分和

26、五分硬币,每种至少1枚,问兑换后其中二分的硬币恰有20枚的方案共有多少种?set talk offclean=0for yi=1 to 60for wu=1 to 20er=20if yi+er*2+wu*5=100n=n+1endifendforendfor? nset talk onreturn答案:11 290、设某四位数的各位数字的平方和等于198,问满足这种条件的最大数和最小数之和是多少?set talk offcleamin1=9999max1=1000for x=1000 to 9999a=int(x/1000)b=int(x-a*1000)/100) c=int(x-

27、b*100-a*1000)/10)d=mod(x,10)if a*a+b*b+c*c+d*d=198if max1<xmax1=xendifif min1>xmin1=xendifendifendfor? max1+min1set talk onreturn答案:12749 280、一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称为绝对素数。如13,试求两位数中最大的绝对素数与最小绝对素数之差。set talk offcleamin=100max=0for i=10 to 99j=mod(i,10)*10+int(i/10)f1=1for k=2 to i-1

28、if mod(i,k)=0f1=0endifendforf2=1for k=2 to j-1if mod(j,k)=0f2=0endifendforif f1=1 and f2=1if min>imin=iendifmax=iendifendfor? max-minReturn答案:86 276、"水仙花数"是指这样的数,其各位数字的立方和等于该数本身,如:153=13+53+33。编写程序,计算从100年开始到3000年为止,最大的水仙花数年号为多少?set talk offcleas=100for i=100 to 3000a=int(i/1000)b=

29、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<is=iendifendifendfor? sReturn答案:407 273、设有一个12*12方阵A(I,j),其每个元素的值为该元素下标的平方和, 求出该矩阵所有主对角线(i=j)上的元素的累加和. (注:I,j从1开始)set talk offdime a(12,12)s=0for i=1 to 12for j=1 to 12a(i,j)=i*i+j*jif i=js=s+a(i,j)endifendforendfor?

30、sReturn答案:1300 269、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是"四位双平方数"。例如: 由于7396=862,且7+3+9+6=25=52,则称7396是"四位双平方数"。求所有"四位双平方数"且十位数字是3的数的之和"。set talk offclean=0for i=1000 to 9999a=int(i/1000) b=int(i-a*1000)/100) c=int(mod(i,100)/10)d=mod(i,10)x=a+b+c+dif int(

31、sqrt(i)2=i and int(sqrt(x)2=x and c=3n=n+iendifendfor? nset talk onreturn答案:8836 264、编写程序,求所有符合算式ij*ji=1300的最大数ij(即i*10+j)。其中i、j是19之间的一位整数。set talk offcleamax=0for i=1 to 9for j=1 to 9if (10*i+j)*(10*j+i)=1300if max<10*i+jmax=10*i+jendifendifendforendfor? maxReturn答案:52 261、勾股弦数是满足公式: A2+B2=C2 (假定A<B<C)的一组正整数(A,B,C),例如,(3,4,5)是勾股弦数,因为:32+42=52。求1,50中使A+B+C取最大值的勾股弦数,并输出此最大值。set talk offcleamax=0for a=1 to 50for b=1 to 50for c=1 to 50if a<b and b<c and a2+b2=c2if max<a+b+cmax=a+b+cendifendifendforendforen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论