1、VFP程序设计题复习资料程序设计题复习资料 一 求某范围内满足某种条件的问题(整除) 例:求出例:求出 10,1000以内同时满足除以以内同时满足除以 7余余 5,除以除以 5余余 3,除以除以 3余余1的所有整数的个数。的所有整数的个数。 源程序如下: Set talk off S=0 *为求个数设立一个变量 For I=10 to 1000 If I%7=5 and I%5=3 and I%3=1 S=s+I Endif ? s *在屏幕上显示出结果 练习练习 : 1. 编程序求160 所有整数的平方和并输出结果。 2. 编程序求185 的平方根和并输出结果。(保留小数点两位) 3. 编程
2、序求出100 到200 之间同时满足除3 余2 和除5 余3 条件的数的个数。 4. 编程序求出1 到4000 之间的能被5 整除的前若干个偶数之和,当和大于400 时退出并输出结果。 5. 求3333 ,6666 之间所有能被5 整除同时能被7 整除的数, 问共有多少个这样的数? 二二 数字分离数字分离 源程序如下: Sum=0 Clear For I=1001 to 9999 step 2 a4=int(i/1000) *取第四位上的数字 a3=int(i/100)%10 a2=int(i/10)%10 a1=i%10 If (a1+a2+a3+a4)%15=0 Sum=sum+I End
3、if Endfor ? sum return例例 2:求:求 100,10000中其各位数字之和能被中其各位数字之和能被 7整除的数的个数整除的数的个数 源程序如下: Set talk off S=0 *用来记数的变量,定义在循环体外 For i =1000 to 9999 A4=int(i/1000) *取第四位上的数字 A3=int(i/100%10) A2=int(i/10%10) A1=i%10 If (a1+a2+a3+a4)%7=0 *满足的条件表达式 S=s+1 *求个数累加1 Endif Endfor ?s *在循环结束后在显示要求的个数 例例 3: 回文数回文数 是指正读和反
4、读都一样的正整数。例如是指正读和反读都一样的正整数。例如 3773等都等都是回文数。所谓回文数是从左至右或从右至左读起来都是一样是回文数。所谓回文数是从左至右或从右至左读起来都是一样的数字,如:的数字,如: 121是一个回文数。编写程序,求在是一个回文数。编写程序,求在 10009000的范围内所有回文数个数。的范围内所有回文数个数。 源程序如下: clear s=0 stor 0 to a,b,c,d,i for i=1000 to 9999 a=int(i/1000) b=int(i/100%10) c=int(i/10%10) d=i%10 if a=d and b=c s=s+1 en
5、dif endfor ? s return例例 4:一个数出现在该数的平方数的右边,称这个数:一个数出现在该数的平方数的右边,称这个数为为 “同构数同构数 ”。例如,。例如, 5出现在平方数出现在平方数 25的右边,的右边, 25出现出现在平方数在平方数 625的右边,则的右边,则 5、 25都是都是 “同构数同构数 ”。找出。找出1, 1000之间的所有之间的所有 “同构数同构数 ”的个数。的个数。 源程序如下: Clear S=0 For I=1 to 1000 B=I*2 If b%10=I or b%100=I or b%1000=I S=s+1 Endif Endfor ? s re
6、turn例例 5:若某整数:若某整数 N的所有因子之和等于的所有因子之和等于 N的倍数,则的倍数,则 N称称为多因子完备数为多因子完备数 ,如数如数 28,其因子之和其因子之和 1+2+4+7+14+28=56=2*28,28是多因子完备数。求是多因子完备数。求1,200之间有多少个多因子完备数。求在之间有多少个多因子完备数。求在 10, 1000之之间的所有完备数之和。各真因子之和(不包括自身)等间的所有完备数之和。各真因子之和(不包括自身)等于其本身的正整数称为完数。例如:于其本身的正整数称为完数。例如: 6=1+2+3, 6是完是完数。数。 源程序如下: Clear K=0 Sum=0
7、*用来保存结果即完数的和 For k= 10 to 1000 S=k For I=1 to k-1 If (k%i)=0 &满足条件的表示I是k的一个因子 S=s-I &将数k减去它的所有因子 Endif Endfor If s=0 &s等于零表示 s减去所有因子后为零,满足完数的条件 Sum=-sum+k Endif Endfor ?sum return例例 6:求五位数各数字的平方和为:求五位数各数字的平方和为 100的最大的五位数。的最大的五位数。 源程序如下: Clear For I=99999 to 10000 step 1 A5=int(i/10000) A4=int(i/1000
8、%10) A3=int(i/100%10) A2=int(i/10%10) A1=I%10 If a5*2+a4*2+a3*2+a2*2+a1*2=100 ?I break &因为循环是从大到小,找到第一个即可跳出 endif endfor练习:练习: 1、 已知24有8个因子(即:1,2,3,4,6,8,12,24),而24正好被8整除。求100,300 之间所有能被其因子数目整除的数之和。 2、 编写程序,求在四位数的偶数中,所有各位数字之积(且不为0)是18的倍数的数的和 3、一个数如果刚好与它所有的因子之和相等,则称该数为一个“完数”,如:6=1+2+3,则6就是一个完数。求出1000
9、以内的所有的完数之和。 4、设某四位数的千位数字与十位数字的和等于百位数字与个位数字的积,例如,对于四位数:9512,9+1=5*2 ,试问所有这样的四位数之和是多少? 5、设某四位数的千位数字的平方与十位数字的平方之和等于百位数字的立方与个位数字的立方之和,例如,对于四位数:3201, 32+02=23+13,试问这样的四位数有多少个? 6、设某四位数的各位数字的立方和等于100,试问有多少个这样的四位数? 7、若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数” 。例如: 由于 7396=862,且7+3+9+6=25=52,则称7396是“
10、 四位双平方数”。求所有“ 四位双平方数” 的个数。三三 素数素数 勾股数等勾股数等 例例 1: 编写程序,求一正整数等差数列的前五项的立方和,编写程序,求一正整数等差数列的前五项的立方和,该数列前四项之和是该数列前四项之和是 26,之积是,之积是 880。 源程序如下: flag=0 for dd=0 to 10 for x=1 to 1000 a=x b=x+dd c=x+2*dd d=x+3*dd e=x+4*dd if a+b+c+d=26 and a*b*c*d=880 then flag=1 exit endif next x if flag=1 then exit endif n
11、ext d ? a,b,c,d,e ? a3+b3+c3+d3+e3例例 2: 水仙花数水仙花数 是指这样的数,其各位数字的立方和等于该数是指这样的数,其各位数字的立方和等于该数本身,本身, 如如 :153=13+53+33。编写程序,计算从编写程序,计算从 100年开始到年开始到 2000年为止,共有多少个年号年为止,共有多少个年号是水仙花数年号。是水仙花数年号。 源程序如下: n=0 for year=100 to 2000 a=mod(year,10) b=mod(int(year/10),10) c=mod(int(year/100),10) d=mod(int(year/1000),
12、10) if year=int(a*a*a)+int(b*b*b)+int(c*c*c)+int(d*d*d) then n=n+1 ?a,b,c,d endif next year ? n例例 3:有些偶数可以分解成多种:有些偶数可以分解成多种 素数对素数对 的和,如:的和,如: 10=3+7, 10=5+5,即即 10可以分解成两种不同的素数对。试求可以分解成两种不同的素数对。试求 1234可以分解成多可以分解成多少种不同的素数对少种不同的素数对(注:(注: A+B与与 B+A认为是相同素数对)认为是相同素数对) 源程序如下: clear store 1 to a,b,i,j store
13、0 to n,m for i=2 to 1234/2 a=i b=1234-i if susu(a) and susu(b) n=n+1 endif endfor ?n function susu(x) &验证一个数是不是一个素数 for j=2 to int(sqrt(x) if x%j=0 return (.f.) exit endif endfor if j=int(sqrt(x)+1 return (.t.) endif endfunc四四 等差、等比、数列、阶乘、公式等差、等比、数列、阶乘、公式 例例 1:斐波那契数列的前二项是:斐波那契数列的前二项是 1, 1,其后每一项都是前面两,其后每一项都是前面两项之和,求:项之和,求: 10000000以内最大的斐波那契数?以内最大的斐波那契数? clear f1=1 f2=1 f3=f1+f2 do while f3 y z),则(x,y,z)称为方程的一个解。试求方程的所有整数解中,|x|+|y|+|z|的最大值。 2、若(x,y,z )满足方程: x2+y2+z2=552(注:要求 x y z),则(x,y,z)称为方程的一个解。试求方程的所有整数解中x+y+z的最大值。 3、若(x,y,z )满足方程: x2+y2+z2=552(注:要求 x y z),则
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。