常用算法VFP程序
- 格式:doc
- 大小:103.00 KB
- 文档页数:8
1.求最大、最小数问题
Dime x(30)
Maxx=0 &&极小数
Minx=300 &&极大数
For k=1 to 30
X(k)=1+rand()*300
If x(k)>maxx
Maxx=x(k)
Endif
If x(k) Minx=x(k) Endif ??x(k) &&顺序输出30个随机数endfor maxx,minx 2.最大公约数和最小公倍数问题 Input to x Input to y M=x N=y R=x%y Do while R<>0 X=y Y=R R=x%y Enddo y, M*N/y 3.素数(质数)问题 Input to x For k=2 to x-1 If x%k=0 exit endif endfor if k=x ?x,”is prime” Else ?x.”not prime” endif 4.阶乘问题 Input to x F=1 For k=x to 2 step -1 F=f*k Endfor F 5.百钱百鸡问题 for i=0 to 33 for j=0 to 50 k=100-i-j if 3*i+2*j+int(0.5*k)=100 ? i,j,k endif endfor endfor 6.倍数问题 一个正整数与3的和是5的倍数,与3的差是6的倍数,编程序求出符合此条件的最小正整数。 num=1 do While (num+3)%5<>0 or (num-3)%6<>0 num=num+1 enddo num 7.判断回文数 Accept to s L=len(s) For k=1 to int(L/2) if subs(s,k,1)<>subs(s,L-k+1,1) exit endif Endfor If k<=int(L/2) ?s,”不是回文数” else ?s, ”是回文数” endif 8.完全数(因数和)问题 所谓“完全数”是指一个数恰好等于它的所有因子之和,例如,6=1+2+3,6是“完全数”。编程序求1000以内的“完全数” Clear For n=1 to 1000 m=0 for i=1 to n-1 if n%i=0 m=m+i endif endfor if m=n ??n endif endfor 9.二-十进制数转换 input to n &&输入一个二进制数 s=0 k=0 do while n<>0 s=s+n%10*2^k k=k+1 n=int(n/10) enddo s 10.十-二进制数转换 dime s(30) L=1 input to de &&输入一个十进制数 do while de<>0 s(L)=de%2 de=int(de/2) L=L+1 enddo for i=L-1 to 1 step -1 ??str(s(i),1) endfor 11.常用级数生成与求和 (1)已知数列{an}满足a1=1,an=a1+2a2+3a3+….+(n-1)an-1 (n≥2)。请编写程序,求出a1000的值。 A=1 n=2 do While n<=1000 A=A+(n-1)*A n=n+1 enddo A (2)计算:Sn=a + aa + aaa + …+ aaaa…aa (最后一个为n个a) 比如,当n=4,a=3的时候,则为计算:s=3 +33 +333+3333 Input to n Input to a S=a T=a For I=2 to n T=T*10+a s=s+T endfor s 其它级数求和问题,请参考辅导资料 12.二分法求高阶方程的根 x1=-10 x2=10 Eps=10^-5 do while .t. x0=(x1+x2)/2 fx0=fun(x0) fx1=fun(x1) if(fx0*fx1<0) x2=x0 else x1=x0 endif if abs(fx0) exit endif enddo "root=",x0 proce fun para k return 2*k^3-4*k^2+3*k-6 (说明:请注意书写高阶方程函数,初始2分点值x1,x2)13.梯形积分法 Input to a Input to b Euler = 2.718281828 S=0 i=0 n=100 h=(b-a)/n Do While (i<100) T=h*(f1(a+i*h)+f1(a+(i+1)*h))/2.0 s=s+T i=i+1 enddo s Proce f1 para x return Euler^(-x*x) (说明:实际求解时,请注意正确书写求积函数和等分数)14.冒泡排序