常用算法VFP程序

  • 格式:doc
  • 大小:103.00 KB
  • 文档页数:8

下载文档原格式

  / 27
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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.冒泡排序