您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > FoxPro程序题库
一、改错题1.求[10,1000]内所有能被被7和9中至少一个数整除的整数之个数。*skgc1.prgsettalkoffclears=0&&s=0改为n=0forx=10to1000ifmod(x,7)=0andmod(x,9)=0&&and改为orn=n+x&&n=n+x改为n=n+1endifendfor?x&&x改为nsettalkonreturn&&结果为:2362.求[10,1000]内所有能同时被7和9整除的整数之和。settalkoffclears=0forx=10to1000ifmod(x,7)=0andmod(x,9)=0s=x&&s=x改为s=s+xendifendfor?x&&x改为ssettalkonreturn&&结果为:75607.求100以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。**skgc7.prgsettalkoffclears=0forn=1to100s=s+1/n&&s=(s+1)/n改为s=s+1/nifs=3.5exit&&loop改为exitendifendfor?n-1settalkonreturn&&结果为:189.求100以内最大的自然数n,使得从1开始的连续n个自然数的平方和小于5000。settalkoffclears=0forn=1to100s=s+n*2&&改为s=s+n**2ifs=5000exitendifendfor?n&&改为?n-1settalkonreturn&&结果为:2416.求出50以内最小的自然数n,使得从101开始的连续n个奇数之和大于3000。settalkoffclears=0forn=1to50a=101+2*n&&a=101+2*n改为s=s+99+2*ns=s+a&&去掉s=s+aifs3000exitendifendfor?s&&?s改为?nsettalkonretur&&结果为:2517.求出100以内使得算式1*2+2*3+…+n*(n+1)的值小于5000的最大的自然数n。settalkoffclears=0forn=1to100a=n*(n+1)s=s+aifs5000&&s5000改为s=5000exitendifendfor?n&&?n改为?n-1settalkonreturn&&结果为:2320.求出100以内使得算式1+(1+2)+…+(1+2+…+n)的值小于1000的最大的自然数n。settalkoffclears=0t=0forn=1to100s=s+nt=t+sift1000&&t1000改为t=1000exitendifendfor?n&&?n改为?n-1settalkonreturn&&结果为:1728.某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。settalkoffclears=1forn=2001to2100s=s*1.03ifs=2&&s=2改为s2loop&&loop改为exitendifendfor?nsettalkonreturn&&结果为:202430.设等比数列:1,2,4,8,…。求使得此数列的前n项之和大于100000的最小的自然数n。settalkoffcleara=1s=1&&s=1改为s=0forn=1to100s=s+a&&在s=s+a前加a=2^(n-1)ifs100000exitendifa=2+a&&去掉a=2+a该句endfor?nsettalkonreturn&&结果为:1734.求出45678的所有非平凡因子(即除1和它本身以外的约数)中是奇数的因子个数。settalkoffcleara=45678n=0forb=3toastep2ifmod(b,a)=0&&mod(b,a)改为mod(a,b)n=n+1endifendfor?b&&?b改为?nsettalkonreturn&&结果为:735.求出203267的所有真因子(即小于它本身的约数)中最大的因子数。settalkoffcleara=203267n=0forb=1toaifmod(a,b)=0&&mod(b,a)=0改为mod(a,b)=0&&加ifb=a&&加exit&&加endifmax=a&&max=a改为max=bendifendfor?a&&?a改为?maxsettalkonreturn&&结果为:655737.求出20677和42067的最大公约数。settalkoffcleara=20677b=42067ford=1toaifmod(a,d)=0andmod(b,d)=0max=d&&max=b改为max=dendifendfor?max&&?d改为?maxsettalkonreturn&&结果为:71338.求559399的所有非平凡因子(即除1和它本身以外的约数)中最小的。settalkoffcleara=559399forn=2toaifmod(a,n)=0loop&&loop改为exitendifendforreturn&&结果为:7342.求9269和8671的最小公倍数。settalkoffcleara=9269b=8671fork=atoa*bstepaifmod(k,b)0loopendif&&加exitendfor?ksettalkonreturn&&结果为:266880144.已知数列:1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。试求出此数列中大于5000的最小的项。settalkoffcleara=1forn=0to1000a=a+nifa5000loop&&loop改为exitendifendfor?n&&?n改为?asettalkonreturn&&结果为:505149.求出100以内最小的自然数n,使得从1开始的连续n个自然数的立方之和大于88888。settalkoffclears=0forn=1to100a=n*3&&a=n*3改为a=n^3s=s+aifs88888exitendifendfor?a&&?a改为?nsettalkonreturn&&结果为:2454.设一数列{f(n)}:f(1)=1,当n1时f(n)=1/(f(n-1)+1)。试求出此数列的前20项中大于0.618的项数。settalkoffclearf=1.00000000n=0fork=2to20f=1/f+1&&f=1/f+1改为f=1/(f+1)iff0.618n=n+1endifendfor?N&&?n改为?n+1settalkonreturn&&答案:1555.设有用26个字母表示的26个表达式:a=1,b=1/(a+1),c=1/(b+2),…,z=1/(y+25)。试求出这26个字母中其值小于0.1的字母个数。settalkoffclearlett=1n=0fork=1to26&&26改为25lett=1/(lett+k)iflett0.1n=n+1endifendfor?Nsettalkonreturn&&答案:1657.设一个数列的前3项都是1,从第4项开始,每一项都是其前3项之和。试求出此数列的前25项中大于54321的项数。settalkoffclearstore1tof1,f2,f3n=0fork=1to25&&k=1改为k=4f=f1+f2+f3iff54321n=n+1endiff1=f2f2=f3f3=f1&&f3=f1改为f3=fendfor?nsettalkonreturn&&答案:558.已知一个由分数组成的数列:1/2,3/5,8/13,21/34,…,其特点是:从其中第2个数起,每个分数的分子都是前一分数的分子分母之和。而其分母都是其分子与前一分数的分之和。试求出此数列的前25项中其值大于0.618的项数。settalkoffclearf1=1f2=2n=0fork=1to25f=f1/f2iff0.618n=n+1endiff1=f2&&f1=f2改为f1=f1+f2f2=f1&&f2=f1改为f2=f1+f2endfor?nsettalkonreturn&&答案:2062.回文指的是正读和反读都一样的一串字符,如121、1221。试求出[1421,4112]内所有回文数的和。settalkoffclears=0forx=1421to4112a=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*10ifa=dandb=cs=s*x&&s=s*x改为s=s+xendifendfor?ssettalkonreturn&&答案:7425077.若一个自然数恰好等于某个整数的平方,则称此数为完全平方数。如144是完全平方数,因为它等于12的平方。求[1000,3000]内所有完全平方数的和。settalkoffclears=0forx=1000to3000y=sqrt(x)&&y=sqrt(x)改为y=int(sqrt(x))ifx=y*ys=s+xendifendfor?x&&x改为ssettalkonreturn&&答案:43539二、编程题78.若一个自然数恰好是它的平方的末后几位数,则称此数为自同构数。如5和76都是自同构数,因为它们的平方分别是25和5776。求[2,99999]内所有自同构数之和。(提示:若x是m位同构数,则x的平方除以10的m次方的余数就是x)settalkoffclears=0forx=2to99999y=x*xm=len(ltrim(str(x)))ifmod(y,10*m)=xs=s+xendifendfor?ysettalkonreturn&&答案:10111479.求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。(提示:设A=B,当A越大时A+B越小)settalkoffclearc=54321k=int(sqrt(c))fora=1tokb=int(c)/aifa*b=cmax=aendifendfor?maxsettalkonreturn&&答案:95382.设a=123,b=541,求a/b的精确值中小数点后40位数字中数字1的个数。(提示:基于人工计算的思想)settalkoffcleara=123b=541n=0fork=1to40a=a+0q=int(a)/bifq=1n=n+1endifa=mod(a,b)endfor?nsettalkonreturn&&答案:386.求出将十进制整数98765432等值转换为二进制形式表示后其中数字1的个数。(提示:模拟人工计算的“2除取余”法)settalkoffcleara=98765432p=2dowhilea0r=mod(a,p)ifr=1n=1endifa=int(a/p)enddo?Nsettalkonreturn&&答案:1388.求出将十进制整数99887766554等值转换为十六进制形式表示后其中字母C的个数。(提示:模拟人工计算的“16除取余”法)settalkoffcleara=99887766554p=16n=0dowhilea=0r=mod(a,p)ifr=11n=n+rendifa=int(a/p)enddo?nsettalkonreturn&&答案:289.已知数列{f(n)}:f(1)=1,f(2)=1,当n2时f(n)=f(n-2)+f(n-1)。试求此数列的第15项至第25项共11项之和。settalkoffcleardimensionf(25)f(1)=1f(2)=1s=0forn=3to25f(n)=f(n-2)+f(n-1)ifn=11s=f(n)endifendfor?ssettalkonreturn&&答案:19543191.求出将十进制小数0.987654321等值转
本文标题:FoxPro程序题库
链接地址:https://www.777doc.com/doc-7025835 .html