当前位置:文档之家› 常用算法VFP程序

常用算法VFP程序

常用算法VFP程序
常用算法VFP程序

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

for i=1 to N

for j=1 to N-i

if(a(j)

temp=a(j)

a(j)=a(j+1)

a(j+1)=temp

endif

endfor

endfor

(说明:该程序已知数组a的长度为N,并已经被赋值为乱数列)15.选择排序

for i=1 to N-1

k=i

for j=i+1 to N

if(a(j)

k=j

endif

endfor

if(k!=i)

temp=a(i)

a(i)=a(k)

a(k)=temp

endif

endfor

(说明:该程序已知数组a的长度为N,并已经被赋值为乱数列)16.顺序查找

input "请输入被查找的整数值:" to key

for i=1 to N

if(a(i)=key)

flag=1

exit

endif

endfor

if(flag=1)

?"查找成功,共进行了",i,"次比较"

else

?"数据集合中不存在被查找数据"

Endif

(说明:该程序已知数组a的长度为N,并已经被赋值为乱数列)17.折半查找

flag=0

low=1

high=N

Input “请输入查找关键字:” to key

Do while low<=high

middle=(low+high)/2

if key=a(middle)

flag=1

exit

else if key> a(middle)

low=middle+1

else

high=middle-1

endif

endif

enddo

if flag=1

?"查找成功"

else

?"数据集合中不存在被查找数据”

endif

(说明:该程序已知数组a的长度为N,并已经被赋值为有序数列)18.有序数列插入

Input to x

For i=1 to N

if (A(i)>=x)

exit

endif

endfor

If (i<=n)

for k=n to i step -1

A(k+1)=A(k)

endfor

endif

A(i)=x

(说明:该程序已知数组a的长度为N,并已经被赋值为有序数列)19.有序数列删除

Input to x

For i=1 to N

if (A(i)=x)

exit

endif

endfor

If (i<=n)

for k=i to n

A(k)=A(k+1)

endfor

(说明:该程序已知数组a的长度为N,并已经被赋值为有序数列)

20.矩阵转置

dime a(N,M),b(M,N)

for i=1 to N

for j=1 to M

b(j,i)=a(i,j)

endfor

endfor

(说明:已知M,N作为数组的行数和列数,假设数组a已经被赋值)21.矩阵旋转

dime a(R,R),b(R,R)

for i=1 to R

for j=1 to R

b(R+1-i,R+1-j)=a(i,j)

endfor

endfor

22.递归算法

(1)阶乘的递归

?fac(5)

Proc fac

para x

if x=1

return 1

endif

return fac(x-1)*x

(2)最大公约数递归

?gcd(16,24)

Proc gcd

para m,n

if m%n=0

return n

else

return gcd(n,m%n)

endif

(3)求逆串

do strR with sa,1,20

proc strR

para ss,a,b

local t

if a>b

return

else

do strR with ss,a+1,b-1

t=ss(a)

ss(a)=ss(b)

ss(b)=t

endif

(说明:sa是一个存放字符串的数组。参数ss,a,b说明接受一个数组,从1至20个字符求其逆串,结果仍然放在数组sa中)

23.字符串处理

(1)插入(将子串s1插入主串s中,插入位置L)

Proc INS_STR

Para s1,s,L

If L>=1 and L<=len(s)+1

s0=subs(s,1,L-1)+s1

return s0+subs(s,L)

endif

(2)删除(将子串s1从主串s中删除)

Proc DEL_STR

Para s1,s

If AT(s1,s)<>0

if AT(s1,s)=1

s=subs(s,len(s1)+1)

else

s0=subs(s,1,A T(s1,s)-1),

s=s0+subs(s,A T(s1,s)+len(s1))

endif

endif

return s

(3)比较(输入:s1,s2。如果两串相等返回0,s1>s2返回1,否则返回-1)

Proc CMP_STR

Para s1,s2

N=1

Do While N<=len(s1)

x=asc(susb(s1,N,1)-asc(susb(s2,N,1)

if x<>0 then exit

N=N+1

enddo

If x<0

return -1

else

if x>0

return 1

else

return 0

endif

endif

VFP常用函数大全

VFP常用函数大全 一.字符及字符串处理函数: 字符及字符串处理函数的处理对象均为字符型数据,但其返回值类型各异. 1.取子串函数: 格式:substr(c,n1,n2) 功能:取字符串C第n1个字符起的n2个字符.返回值类型是字符型. 例:取姓名字符串中的姓. store "王小风" to xm ?substr(xm,1,2) 结果为:王 2.删除空格函数:以下3个函数可以删除字符串中的多余空格,3个函数的返回值均为字符型. trim(字符串):删除字符串的尾部空格alltrim(字符串):删除字符串的前后空格 ltrim(字符串):删除字符串的前面的空格例:去掉第一个字符串的尾空格后与第二个字符串连接 store "abcd " to x store "efg" to y ?trim(x)+y abcdefg 3.空格函数: 格式:space(n) 说明:该函数的功能是产生指定个数的空格字符串(n用于指定空格个数). 例:定义一个变量dh,其初值为8个空格store space(8) to dh 4.取左子串函数: 格式:left(c,n) 功能:取字符串C左边n个字符. 5.取右子串函数: 格式:right(c,n) 功能:取字符串c右边的n个字符例:a="我是中国人" ?right(a,4) 国人?left(a,2) 我 6.empty(c):用于测试字符串C是否为空格. 7.求子串位置函数: 格式:At(字符串1,字符串2) 功能:返回字符串1在字符串2的位置 例:?At("教授","副教授") 2 8.大小写转换函数: 格式: lower(字符串) upper(字符串) 功能:lower()将字符串中的字母一律变小写;upper()将字符串中的字母一律变大写例: bl="FoxBASE" ?lower(bl)+space(2)+upper(bl) foxbase FOXBASE 9.求字符串长度函数: 格式:len(字符串) 功能:求指定字符串的长度 例:a="中国人" ?len(a) 6 二.数学运算函数: 1.取整函数: 格式:int(数值) 功能:取指定数值的整数部分. 例:取整并显示结果?int(25.69) 25 2.四舍五入函数: 格式:round(数值表达式,小数位数) 功能:根据给出的四舍五入小数位数,对数值表达式的计算结果做四舍五入处理 例:对下面给出的数四舍五入并显示其结果 ?round(3.14159,4),round(2048.9962,0),round(2048.9962,-3

数学建模常用算法程序

假设图G 权的邻接矩阵为0A , ????? ? ??? ???=nn n n n n a a a a a a a a a A 2 1 22221 112110 来存放各边长度,其中: 0=ii a n i ,,2,1 =; ∞=ij a j i ,之间没有边,在程序中以各边都不可能达到的充分大的数代替; ij ij w a = ij w 是j i ,之间边的长度,n j i ,,2,1, =。 对于无向图,0A 是对称矩阵,ji ij a a =。 Floyd 算法的基本思想是:递推产生一个矩阵序列n k A A A A ,,,,,10 ,其中),(j i A k 表示从顶点i v 到顶点j v 的路径上所经过的顶点序号不大于k 的最短路径长度。 计算时用迭代公式: )),(),(),,(min(),(111j k A k i A j i A j i A k k k k ---+= k 是迭代次数,n k j i ,,2,1,, =。 最后,当n k =时,n A 即是各顶点之间的最短通路值。 例10 用Floyd 算法求解例1。 矩阵path 用来存放每对顶点之间最短路径上所经过的顶点的序号。Floyd 算法的Matlab 程序如下: clear; clc; M=10000; a(1,:)=[0,50,M,40,25,10]; a(2,:)=[zeros(1,2),15,20,M,25]; a(3,:)=[zeros(1,3),10,20,M]; a(4,:)=[zeros(1,4),10,25]; a(5,:)=[zeros(1,5),55]; a(6,:)=zeros(1,6); b=a+a';path=zeros(length(b)); for k=1:6 for i=1:6 for j=1:6 if b(i,j)>b(i,k)+b(k,j)

VFP中常用命令集

VFP中常用命令集 一、主要命令: 1、CREATE 作用:建立一个新的表。 格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下同。) 说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出 对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会弹出对话框,要求用 户输入想要建立的表名。 2、MODIFY STRUCTURE 作用:显示表文件结构,并允许修改此表的结构。 格式:MODIFY STRUCTURE 说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。3、APPEND 作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。 格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。 4、INSERT 作用:在表文件中间插入一个新记录。 格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录; INSERT BEFORE 在当前记录前插入一记录; INSERT BEFORE BLANK 在当前记录前插入一空记录。 5、BROWSE 作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。 格式:BROWSE 6、USE 作用:打开和关闭表文件。 格式:USE [<文件名>]

程序设计竞赛常用算法

常用算法设计方法 要使计算机能完成人们预定的工作,首先必须为如何完成预定的工作设计一个算法,然后再根据算法编写程序。计算机程序要对问题的每个对象和处理规则给出正确详尽的描述,其中程序的数据结构和变量用来描述问题的对象,程序结构、函数和语句用来描述问题的算法。算法数据结构是程序的两个重要方面。 算法是问题求解过程的精确描述,一个算法由有限条可完全机械地执行的、有确定结果的指令组成。指令正确地描述了要完成的任务和它们被执行的顺序。计算机按算法指令所描述的顺序执行算法的指令能在有限的步骤内终止,或终止于给出问题的解,或终止于指出问题对此输入数据无解。 通常求解一个问题可能会有多种算法可供选择,选择的主要标准是算法的正确性和可靠性,简单性和易理解性。其次是算法所需要的存储空间少和执行更快等。 算法设计是一件非常困难的工作,常用的算法设计方法主要有迭代法、穷举搜索法、递推法、递归法、贪婪法、回溯法、分治法、动态规划法等。 一、迭代法 迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:(1)选一个方程的近似根,赋给变量x0; (2)将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0; (3)当x0与x1的差的绝对值还大于指定的精度要求时,重复步骤(2)的计算。 若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。上述算法用C程序的形式表示为: 【算法】迭代法求方程的根 { x0=初始近似根; do { x1=x0; x0=g(x1); /*按特定的方程计算新的近似根*/ } while ( fabs(x0-x1)>Epsilon); prin tf(“方程的近似根是%f\n”,x0); } 具体使用迭代法求根时应注意以下两种可能发生的情况: (1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制; (2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败。 【举例】求方程X2-X-1=0的正根,误差<0.05 解:(1)建立迭代公式 由于X=X2-1

vfp命令

VF命令一览表 一、命令 https://www.doczj.com/doc/0d3810106.html,e 表名打开表 2.List 显示表记录,但不能修改 3.browse 浏览表记录,可以修改 4.display 显示记录指针指向的记录 5.append 追加记录 6.append blank 追加空白记录7.insert blank 插入空白记录8.delete 逻辑删除记录,记录前出现星号9.pack 物理删除,将逻辑删除的记录彻底删除10.recall 记录恢复11.zap 删除表里的所有记录12.go n 指向第n条记录13.go top 指向第一条记录14.go bottom 指向最后一条记录15.skip n 往下跳n条记录16.skip -n 往上跳n条记录17.? 从屏幕的下一行的第一列起显示结果18.? ? 从当前行当前列起显示结果https://www.doczj.com/doc/0d3810106.html,e sb copy to sb() 复制sb表给sb()表20.recno() 记录号函数21.bof() 上溢出22.eof() 下溢出23.dimension x(4) 定义数组x,里面有四个元素,其中每个元素的默认值为.F. declare和dimension 相同24.replace 替换25.add 表示增加字段26.distinct 不重复记录27.error 错误28.continue 继续29.else if 否则30.column 列31.input 显示数值32.accept 显示字符串33.wait 是弹出的一个信息框34.drop 删除字段或删除表35.otherwise 其它情况36.check 规则37.cursor 临时表38.build 连编 二、VF里文件类型 1.项目 .pjx project 2.数据库 .dbc database 3.表 .dbf table 4.菜单.mnx .mpr men 5.程序 .prg 6.表单 .scx form 7.报表 .frx report 8.查询.qpr query 9.视图 .vue view 10.文件 .txt 11.备注型文件 .fpt 三、例题 1.creat table student(学号c(6),姓名c(8),性别c(2),年龄n(2)) 创建学生表

VB程序设计的常用算法

VB程序设计的常用算法 算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(10)。 将程序编写在一个GetTJput过程中,代码如下: Public Sub GetTJput() Dim a(1 To 100) As Integer Dim x(1 To 10) As Integer Dim i As Integer, p As Integer '产生100个[0,99]范围内的随机整数,每行10个打印出来 For i = 1 To 100 a(i) = Int(Rnd * 100) If a(i) < 10 Then Form1.Print Space(2); a(i); Else Form1.Print Space(1); a(i); End If If i Mod 10 = 0 Then Form1.Print Next i '统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来 For i = 1 To 100 p = a(i) Mod 10 ' 求个位上的数字 If p = 0 Then p = 10 x(p) = x(p) + 1 Next i Form1.Print "统计结果" For i = 1 To 10 p = i If i = 10 Then p = 0 Form1.Print "个位数为" + Str(p) + "共" + Str(x(i)) + "个" Next i End Sub 二、求两个整数的最大公约数、最小公倍数 分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数) (1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。 例如:求m=14 ,n=6的最大公约数. m n r

VFP函数大全

VFP函数大全 %运算符用于计算并返回两个数值表达式相除之后的余数 $(包含)运算符用于进行字符表达式之间的包含关系运算,如果一个字符表达式包含在另一个字符表达式之中,则函数返回真 ABS() 计算并返回指定数值表达式的绝对值 ACLASS() 用于将一个对象的父类名放置于一个内存数组中 ACOPY() 把一个数组的元素拷贝到另一个数组中 ACOS() 计算并返回一个指定数值表达式的余弦值 ADATABASES() 用于将所有打开的数据库名和它的路径存入一个内在变量数组中ADBOBJECTS() 用于把当前数据库中的连接、表或SQL视图的名存入内存变量数组中ADEL() 用于从一维数据中删除一个元素,或从二维数组中删除一行或者一列元素 ADIR() 将文件的有关信息存入指定的数组中,然后返回文件数 AELEMENT() 通过元素的下标,返回元素号 AFIELDS 将当前的结构信息存入数组中,然后返回表中的字段数 AFONT() 将可用字体的信息存入数组中 AERROR() 用于创建包含VFP或ODBC错误信息的内存变量 AINS() 在一维数组中插入一个元素或在二维数组中插入一行或一列元素 AINSTANCE() 用于将类的所有实例存入内存变量数组中,然后返回数组中存放的实例数ALEN() 返回数组中元素、行或者列数 ALIAS() 返回当前工作区或指定工作区内表的别名 ALLTRIM() 从指定字符表达式的首尾两端删除前导和尾随的空格字符,然后返回截去空格后的字符串 AMEMBERS() 用于将对象的属性、过程和成员对象存入内存变量数组中 ANSITOOEM() 将指定字符表达式中的每个字符转换为MS-DOS(OEM)字符集中对应字符APRINTERS() 将Print Manager中安装的当前打印机名存入内存变量数组中 ASC() 用于返回指定字符表达式中最左字符的ASCII码值 ASCAN() 搜索一个指定的数组,寻找一个与表达式中数据和数据类型相同的数组元素ASELOBJ() 将活动的Form设计器当前控件的对象引用存储到内存变量数组中 ASIN() 计算并返回指定数值表达式反正弦值 ASORT() 按升序或降序排列数组中的元素 ASUBSCRIPT() 计算并返回指定元素号的行或者列坐标 AT() 寻找字符串或备注字段在另一字符串或备注字段中的第一次出现,并返回位置 ATAN() 计算并返回指定数值表达式的反正切值 ATC() 寻找字符串或备注字段中的第一次出现,并返回位置,将不考虑表达式中字母的大小写 ATCLINE() 寻找并返回一个字符串表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号。不区分字符大小写 ATLINE() 寻找并返回一个字符表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号 ATN2() 根据指定的值返回所有4个像限内的反正切值 AUSED() 用于将一次会话期间的所有表别名和工作区存入变量数组之中 BAR() 从用DEFINE POPUP命令定义的菜单中返回最近所选择的菜单项的编号,或返回一个

C语言的六种常用算法

六种常用算法 一、有条不紊——递推法破解难题 问:“我对数据结构有了一定了解,但还是不太懂程序。从经典公式“程序=算法+数据结构”得知,是因为不了解算法。能不能介绍几种简单的算法,当然从最容易懂的那种开始了?” 答:“算法就是能够证明正确的解题步骤,算法有许多种,最简单的无非下面的六种:递推法、贪心法、列举法、递归法、分治法和模拟法。刚听名字挺吓人的,其实有好多程序我们平常都见过。这些算法当中,最最简单的莫过于递推算法了。下面举例说明。” 1、什么是递推法 递推法这种解题方法其实在我们编程的过程中用的很多,只不过没有将其上升到理论的高度罢了。所谓递推法,就是找出和时间先后相联系或和数的大小相联系的步骤,上一步和下一步和数字的增大或减小有一定的联系。我们要么从前向后(或从小到大)推导,也可从后向前(或从大到小)推导。由此得出两种推导方法:顺推法和倒推法。请看下面的示例。 示例:猴子分食桃子:五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢? 编程简析:怎样编程呢?先要找一下第N只猴子和其面前桃子数的关系。如果从第1只开始往第5只找,不好找,但如果思路一变,从第N到第1去,可得出下面的推导式: 第N只猴第N只猴前桃子数目 5 s5=x 4 s4=s5*5/4+1 3 s3=s4*5/4+1 2 s2=s3*5/4+1 1 s1=s2*5/4+1 s1即为所求。上面的规律中只要将s1-s5的下标去掉: s=x s=s*5/4+1 s=s*5/4+1 s=s*5/4+1 s=s*5/4+1 所以可以用循环语句加以解决。 综观程序的整体结构,最外是一个循环,因为循环次数不定,可以使用While循环,其结束条件则是找到第一个符合条件的数。为了做出上面while循环的结束条件,还需进一步分析上述规律的特点,要符合题目中的要求,s1-s4四个数必须全部为整数,这个可作为条件。具体实现请参看源程序。 int peach() { //最少最后应该是5 的倍数加1但同时又是4 的倍数, 从16 起加 int k = 0,s = 0, x = 16,i = 0; while( k< 4) { k = 0;

vfp函数命令大全

vfp函数大全 %运算符用于计算并返回两个数值表达式相除之后的余数 $(包含)运算符用于进行字符表达式之间的包含关系运算,如果一个字符表达式包含在另一个字符表达式之中,则函数返回真 ABS() 计算并返回指定数值表达式的绝对值ACLASS() 用于将一个对象的父类名放置于一个内存数组中 ACOPY() 把一个数组的元素拷贝到另一个数组中ACOS() 计算并返回一个指定数值表达式的余弦值 ADATABASES() 用于将所有打开的数据库名和它的路径存入一个内在变量数组中 ADB OBJECT S() 用于把当前数据库中的连接、表或SQL视图的名存入内存变量数组中 ADEL() 用于从一维数据中删除一个元素,或从二维数组中删除一行或者一列元素 ADIR() 将文件的有关信息存入指定的数组中,然后返回文件数 AELEMENT() 通过元素的下标,返回元素号AFIELDS 将当前的结构信息存入数组中,然后返回表中的字段数 AFONT() 将可用字体的信息存入数组中AERROR() 用于创建包含VFP或ODBC错误信息的内存变量 AINS() 在一维数组中插入一个元素或在二维数组中插入一行或一列元素 AINSTANCE() 用于将类的所有实例存入内存变量数组中,然后返回数组中存放的实例数 ALEN() 返回数组中元素、行或者列数 ALIAS() 返回当前工作区或指定工作区内表的别名 ALLTRIM() 从指定字符表达式的首尾两端删除前导和尾随的空格字符,然后返回截去空格后的字符串 AMEMBERS() 用于将对象的属性、过程和成员对象存入内存变量数组中 ANSITOOEM() 将指定字符表达式中的每个字符转换为MS-DOS(OEM)字符集中对应字符APRINTERS() 将Print Manager中安装的当前打印机名存入内存变量数组中 ASC() 用于返回指定字符表达式中最左字符的ASCII码值 ASCAN() 搜索一个指定的数组,寻找一个与表达式中数据和数据类型相同的数组元素 ASELOBJ() 将活动的Form设计器当前控件的对象引用存储到内存变量数组中 ASIN() 计算并返回指定数值表达式反正弦值ASORT() 按升序或降序排列数组中的元素ASUBSCRIPT() 计算并返回指定元素号的行或者列坐标 AT() 寻找字符串或备注字段在另一字符串或备注字段中的第一次出现,并返回位置 ATAN() 计算并返回指定数值表达式的反正切值ATC() 寻找字符串或备注字段中的第一次出现,并返回位置,将不考虑表达式中字母的大小写ATCLINE() 寻找并返回一个字符串表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号。不区分字符大小写 ATLINE() 寻找并返回一个字符表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号 ATN2() 根据指定的值返回所有4个像限内的反正切值 AUSED() 用于将一次会话期间的所有表别名和工作区存入变量数组之中 BAR() 从用DEFINE POPUP命令定义的菜单中返回最近所选择的菜单项的编号,或返回一个从VFP 菜单所选择的一个菜单命令 BARCOUNT() 返回DEFINE POPUP命令所定义的菜单中的菜单项数,或返回VFP系统菜单上的菜单项数 BARPROMPT() 返回一个菜单项的有关正文BETWEEN() 确定指定的表达式是否介于两个相同类型的表达式之间 BITAND() 返回两个数值表达式之间执行逐位与(AND)运算的结果 BITCLEAR() 清除数值表达式中的指定位,然后再返回结果值 BITLSHIFT() 返回将数值表达式左移若干位后的结果值 BITNOT() 返回数值表达式逐位进行非(NOT)运算后的结果值 BITOR() 计算并返回两个数值进行逐位或(OR)运算的结果 BITRSHIFT() 返回将一个数值表达式右移若干位后的结果值 BITSET() 将一个数值的某位设置为1,然后返回结果值 BITTEST() 用于测试数值中指定的位,如果该位的值是1,则返回真,否则返回假 BITXOR() 计算并返回两个数值表达式进行逐位异或(XOR)运算后的结果 BOF() 用于确定记录指针是否位于表的开始处CANDIDATE() 如果索引标记是候选索引标记则返回真,否则返回假 CAPSLOCK() 设置并返回CapsLock键的当前状态CDOW() 用于从给定Date或Datetime类型表达式

重庆普通专升本《计算机程序设计》中常用算法复习

重庆普通专升本《计算机程序设计》中常用算法复习 一、常用算法有8个方面: 1、递推算法(级数、数列求和、二分法、梯形法、穷举法等) 2、排序算法(选择法排序、冒泡法) 3、查找算法(顺序查找、折半查找、统计、求和、计数) 4、有序数列的插入、删除操作 5、求解算法(最大数、最小数、素数、最大公约数、最小公倍数) 6、矩阵的处理(生成矩阵、交换和基本运算) 7、递归算法(求阶乘、最大公约数) 8、字符串处理(插入、删除、连接和比较) 二、常用算法的应用举例:(有21个程序) 1、计算S=1+2+…+100的值。(求和、统计) 2、找出100~999之间的所有“水仙花数”(穷举法、统计) 3、从键盘输入10个数,然后找出其中的最大值和最小值。(找最大数、最小数) 4、任意输入n个数,按由小到大的顺序排列并显示输出。(排序算法--选择法排序) 5、(对字符串排序处理)有5个英文单词,分别为:Word,Excel,Powerpoint,Type,Angle,要求设计出如下程序: (1)在键盘上输入数N(本例输入5),把英文单词放入名为X大小为N 的数组中 (2)显示出X数组中的英文单词 (3)对数组中的英文单词从小到大排序 (4)显示出排序后X数组中英文单词 6、求5的阶乘值(5!=?) 7、计算t=1!+2!+……+10! (即求阶乘之和)。 计算t=1!+2!+……+10! 即求阶乘之和(双循环)。 8、多项式S=1+2+22+23+……+232,请设计一个程序,求S的值。 9、除了1和它本身之外不能被任何一个整数所整除的自然数叫质数,除去2之

外,其它质数都是奇数,又称为素数。请设计一个程序,在屏幕上输出3——15 0之间的所有素数。 10、设计1个程序,要求是:(查找算法、统计、求和、找素数或质数) (1)在键盘上输入1个不小于3的自然数N(例输入10),求出其不到第N 个自然数中奇数之和,并输出结果 (2)输出1到第N自然数中所有质数的个数 11、穷举法,整钱找零.prg 程序如下: *(1)穷举法整钱找零.prg"、 *整钱找零:100=x1*10+x2*5+x3*1 *x1,x2,x3>=1,x1+x2+x3=20 for x1=1 to 10 for x2=1 to 20 x3=20-x1-x2 if 100=x1*10+x2*5+x3*1 and x3>0 then ?x1,x2,x3 endif next x2 next x1 12、求级数.prg 程序如下: *求级数1.prg" *s=1+1/2-1/3+1/4+.... s=1 d=1 clear input "输入N:"to n for i=2 to n s=s+d*1/i

VFP命令大全

VFP命令、函数及程序语句大全(一) 学过VFP(Microsoft Visual FoxPro)的朋友都知道它是微软公司开发的数据库管理系统。它经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。本文便以VFP 6.0为例介绍它的命令、函数及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP的朋友提供复习的好机会。 一主要命令: 1、CREATE 作用:建立一个新的表。 格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下同。)说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会弹出对话框,要求用户输入想要建立的表名。 2、MODIFY STRUCTURE 作用:显示表文件结构,并允许修改此表的结构。 格式:MODIFY STRUCTURE 说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。 3、APPEND 作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。 格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。 4、INSERT 作用:在表文件中间插入一个新记录。 格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录; INSERT BEFORE 在当前记录前插入一记录; INSERT BEFORE BLANK 在当前记录前插入一空记录。 5、BROWSE 作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。 格式:BROWSE 6、USE 作用:打开和关闭表文件。 格式:USE [<文件名>] USE 说明:前一个命令用来打开<文件名>指定的表文件,该表如有备注型字段,则同时打开相应的备注文件(.fpt文件);后一个命令关闭当前打开的表文件。 7、LIST和DISPLAY 作用:显示表(.dbf)的内容、结构或状态。 格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>] [TO PRINT|TO FILE <文件>] LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>] LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>] 说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行操作,范围包括:RECORD n 第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记录、ALL 所有的记录。不选范围则隐含范围为ALL;FIELDS后跟字段名,字段名与字段名之间用逗号分隔。WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;FOR后的条件查找所有满足条件的记录。TO PRINT和TO FILE <文件>分别表示将显示结果在打印机上打印出来和将显示结果输出到

算法与程序框图汇总

算法与程序框图 一、程序框图与算法基本逻辑结构: 1.程序框图符号及作用: 程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形. 例:解一元二次方程:2 0(0)ax bx c a ++=≠ 2.画程序框图的规则: 为了使大家彼此之间能够读懂各自画出的框图,必须遵守一些共同的规则,下面对一些常用的规则做一简要介绍. (1)实用标准的框图符号. (2)框图一般按从上到下、从左到右的方向画. (3)一个完整的程序框图必须有终端框,用于表示程序的开始和结束. (4)除判断框外,大多数框图符号只有一个进入点和一个退出点,判断框是具有超过一个退出点的唯一符号,另外,一种判断框是“是”与“不是”两分支的判断,而且有且仅有两个结果;还有一种是多分支判断,有几个不同的结果.

3.算法的三种基本逻辑结构: (1)顺序结构 顺序结构是最简单的算法结构,语句与语句之间, 框与框之间是按从上到下的顺序进行的,它是由 若干个依次执行的处理步骤组成的,它是任何一 个算法离不开的基本结构.如图,只有在执行完步 骤n 后,才能接着执行步骤n+1. 例:.已知梯形的上底、下底和高分别为5、8、9,写出求梯形的面积的算法,画出流程图. 解:算法如下: S1 a ←5; S2 b ←8; S3 h ←9; S4 S ←(a +b )×h /2; S5 输出S . 流程图如下: (2)条件结构 一些简单的算法可以用顺序结构来实现,顺序结构中所表达的逻辑关系是自然串行,线性排列的.但这种结构无法描述逻辑判断,并根据判断结果进行不同的处理的操作,(例如遇到十字路口看信号灯过马路的问题)因此,需要另一种逻辑结构来处理这类问题. 条件结构的结构形式如图,在此结构中含有一个判断框,算法执行到此判断框给定的条件P 时,根据条件P 是否成立,选择不同的执行框(步骤A ,步骤B ),无论条件P 是否成立,只能执行步骤A 或步骤B 之一,不可以两者都执行或都不执行.步骤A 和步骤B 中可以有一个是空的. 例:某铁路客运部门规定甲、乙两地之间旅客托运行李的费用为 0.53,50, 500.53(50)0.85, 50, c ωωωω?≤?=? ?+-?>?其中ω(单位:kg )为行李的重量. 试给出计算费用c (单位:元)的一个算法,并画出流程图. 1S 输入行李的重量ω; 2S 如果50ω≤,那么0.53c ω=?, 否则500.53(50)0.85c ω=?+-?; 3S 输出行李的重量ω和运费c . 步骤n 步骤n+1 ↓ ↓ ↓ 开始结束b h a 5 89 S (+)×/2a b h 输出S 满足条件? 步骤A 步骤B 是否 满足条件? 步骤A 是否

VFP常用函数、属性、事件和方法

VFP常用命令,函数,属性,事件和方法一.常用命令 1.CREATE TABLE-SQL 创建一个含有指定字段的表。 2.ALTER TABLE-SQL 以编程方式修改表的结构。 3.SELECT 激活指定工作区。 4.USE 打开一个表及其相关索引文件,或打开一个SQL视图。5.CLOSE TABLES 关闭所有打开数据库中的所有表。 6.COPY STRUCTURE 用当前选择的表结构创建一个新的空自由表。 7.COPY TO 用当前选定表的内容创建新文件。 8.RENAME TABLE 重命名当前数据库中的表。 9.BROWSE 打开浏览窗口。 10.A PPEND 在表的末尾添加一个或多个新记录。 11.A PPEND FROM 从一个文件中读入记录,添加到当前表的尾部。 12.G O/GOTO 将记录指针移到指定记录上。 13.L OCATE 按顺序搜索表,从而找到满足指定逻辑表达式的第一个记录。14.S EEK 在一个表中搜索首次出现的一个记录。 15.S KIP 使记录指针在表中向前或向后移动。 16.C ONTINUE 继续执行先前的LOCA TE命令。 17.E DIT 显示要编辑的字段。 18.D ELETE 给要删除的记录做标记。 19.D ELETE-SQL 给要删除的记录做标记。 20.P ACK 从当前表中永久删除有删除标记的记录。 21.R ECALL 恢复所选表中带删除标记的记录。

22.Z AP 从表中删除所有记录。 23.I NSERT-SQL 在表尾追加一个包含指定字段值的记录。 24.R EPLACE 更新表的记录内容。 25.U PDATE-SQL 以新值更新表中的记录。 26.S ET EXCLUSIVE 指定Visual FoxPro在网络上是以独占方式,还是以共享方式打开表文件。 27.S ET FILTER 指定访问当前表中记录时必须满足的条件。 28.S ET DELETED 指定Visual FoxPro 是否处理标有删除标记的记录。 29.S ET INDEX 打开一个或多个索引文件,供当前表使用。 30.S ET ORDER 指定表的主控索引文件或标识。 31.G A THER 将当前选定表中的当前记录的数据替换为某个数组、内存变量组或对象中的数据。32.S CATTER 从当前记录中把数据复制到一组内存变量或数组中。 33.O PEN DATABASE 打开一个数据库。 34.S ET DATABASE 指定当前数据库。 35.D ELETE DATABASE 从磁盘上删除数据库。 36.D ISPLAY DA TABASE 显示有关当前数据库的信息。 37.M ODIFY DATABASE 打开数据库设计器,让用户能够交互地修改当前数据库。 38.V ALIDATE DA TABASE 保证当前数据库中表和索引位置的正确性。 39.S ELECT-SQL 从一个表或多个表中检索数据。 40.D O 执行一个Visual FoxPro 程序或过程。 41.D O FORM 运行用表单设计器创建的、编译过的表单或表单集。 42.R EPORT 根据MODIFY REPORT或CREATE REPORE创建的报表定义文件,显示或打印报表。43.C ALCULATE 对表中的字段或包含字段的表达式进行财务和统计操作。

常用算法源程序

常用算法源程序 1、常用算法: (1)求一个数各个位上的数值程序: Option Explicit Dim x As Integer Private Sub Command1_Click() '输入数据 x = InputBox("请输入一个整数:") Picture1.Print "输入的数据为:"; x End Sub Private Sub Command2_Click() '用除以10取余数的方法 Dim y% Picture1.Print "各位中的数是:" Do While x <> 0 y = x Mod 10 x = x \ 10 Picture1.Print y Loop End Sub Private Sub Command3_Click() Dim i% Dim y As String y = Trim(Str(x)) For i = 1 To Len(y) Picture1.Print Mid(y, Len(y) - i + 1, 1) Next i End Sub (2)进制转换程序: Function TranDec$(ByVal m%, ByVal r%) Dim StrDtoR$ Dim iB%, mr% StrDtoR = "" Do While m <> 0 mr = m Mod r m = m \ r If mr >= 10 Then StrDtoR = Chr(mr - 10 + 65) & StrDtoR '余数>=10 转换为A~F,最先求出的余数位数最低 Else StrDtoR = mr & StrDtoR '余数<10 直接连接,最先求出的余数位数最低 End If Loop TranDec = StrDtoR

foxpro命令大全

Visual foxpro 命令大全和函数大全 默认分类2009-09-14 23:42:07 阅读470 评论0 字号:大中小 ? 在下一行显示表达式串 ?? 在当前行显示表达式串 @... 将数据按用户设定的格式显示在屏幕上或在打印机上打印 ACCEPT 把一个字符串赋给内存变量 APPEND 给数据库文件追加记录 APPEND FROM 从其它库文件将记录添加到数据库文件中 AVERAGE 计算数值表达式的算术平均值 BROWSE 全屏幕显示和编辑数据库记录 CALL 运行内存中的二进制文件 CANCEL 终止程序执行,返回圆点提示符 CASE 在多重选择语句中,指定一个条件 CHANGE 对数据库中的指定字段和记录进行编辑 CLEAR 清洁屏幕,将光标移动到屏幕左上角 CLEAR ALL 关闭所有打开的文件,释放所有内存变量,选择1号工作区 CLEAR FIELDS 清除用SET FIELDS TO命令建立的字段名表 CLEAR GETS 从全屏幕READ中释放任何当前GET语句的变量 CLEAR MEMORY 清除当前所有内存变量 CLEAR PROGRAM 清除程序缓冲区 CLEAR TYPEAHEAD 清除键盘缓冲区 CLOSE 关闭指定类型文件 CONTINUE 把记录指针指到下一个满足LOCATE命令给定条件的记录,在LOCATE命令后出现。 无LOCATE则出错 COPY TO 将使用的数据库文件复制另一个库文件或文本文件 COPY FILE 复制任何类型的文件 COPY STRUCTURE EXTENED TO 当前库文件的结构作为记录,建立一个新的库文件 COPY STRUCTURE TO 将正在使用的库文件的结构复制到目的库文件中 COUNT 计算给定范围内指定记录的个数 CREATE 定义一个新数据库文件结构并将其登记到目录中 CREATE FROM 根据库结构文件建立一个新的库文件 CREATE LABEL 建立并编辑一个标签格式文件 CREATE REPORT 建立宾编辑一个报表格式文件 DELETE 给指定的记录加上删除标记 DELETE FILE 删除一个未打开的文件 DIMENSION 定义内存变量数组 DIR 或DIRECTORY 列出指定磁盘上的文件目录 DISPLAY 显示一个打开的库文件的记录和字段 DISPLAY FILES 查阅磁盘上的文件 DISPLAY HISTORY 查阅执行过的命令 DISPLAY MEMORY 分页显示当前的内存变量 DISPLAY STATUS 显示系统状态和系统参数

计算机编程常用算法

常用算法 要使计算机能完成人们预定的工作,首先必须为如何完成预定的工作设计一个算法,然后再根据算法编写程序。计算机程序要对问题的每个对象和处理规则给出正确详尽的描述,其中程序的数据结构和变量用来描述问题的对象,程序结构、函数和语句用来描述问题的算法。算法数据结构是程序的两个重要方面。 算法是问题求解过程的精确描述,一个算法由有限条可完全机械地执行的、有确定结果的指令组成。指令正确地描述了要完成的任务和它们被执行的顺序。计算机按算法指令所描述的顺序执行算法的指令能在有限的步骤内终止,或终止于给出问题的解,或终止于指出问题对此输入数据无解。 通常求解一个问题可能会有多种算法可供选择,选择的主要标准是算法的正确性和可靠性,简单性和易理解性。其次是算法所需要的存储空间少和执行更快等。 算法设计是一件非常困难的工作,经常采用的算法设计技术主要有迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法等等。另外,为了更简洁的形式设计和藐视算法,在算法设计时又常常采用递归技术,用递归描述算法。 一、迭代法 迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行: (1)选一个方程的近似根,赋给变量x0; (2)将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0; (3)当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。 若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。上述算法用C程序的形式表示为: 【算法】迭代法求方程的根 { x0=初始近似根; do { x1=x0; x0=g(x1);/*按特定的方程计算新的近似根*/

6种常用算法

六种常用算法 有条不紊——递推法破解难题 问:“我对数据结构有了一定了解,但还是不太懂程序。从经典公式“程序=算法+数据结构”得知,是因为不了解算法。能不能介绍几种简单的算法,当然从最容易懂的那种开始了?”答:“算法就是能够证明正确的解题步骤,算法有许多种,最简单的无非下面的六种:递推法、贪心法、列举法、递归法、分治法和模拟法。刚听名字挺吓人的,其实有好多程序我们平常都见过。这些算法当中,最最简单的莫过于递推算法了。下面举例说明。” 什么是递推法 递推法这种解题方法其实在我们编程的过程中用的很多,只不过没有将其上升到理论的高度罢了。所谓递推法,就是找出和时间先后相联系或和数的大小相联系的步骤,上一步和下一步和数字的增大或减小有一定的联系。我们要么从前向后(或从小到大)推导,也可从后向前(或从大到小)推导。由此得出两种推导方法:顺推法和倒推法。请看下面的示例。 示例:猴子分食桃子 五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢? 编程简析 怎样编程呢?先要找一下第N只猴子和其面前桃子数的关系。如果从第1只开始往第5只找,不好找,但如果思路一变,从第N到第1去,可得出下面的推导式: 第N只猴第N只猴前桃子数目

5 s5=x 4 s4=s5*5/4+1 3 s3=s4*5/4+1 2 s2=s3*5/4+1 1 s1=s2*5/4+1 s1即为所求。上面的规律中只要将s1-s5的下标去掉: s=x s=s*5/4+1 s=s*5/4+1 s=s*5/4+1 s=s*5/4+1 所以可以用循环语句加以解决。 综观程序的整体结构,最外是一个循环,因为循环次数不定,可以使用While循环,其结束条件则是找到第一个符合条件的数。为了做出上面while循环的结束条件,还需进一步分析上述规律的特点,要符合题目中的要求,s1-s4四个数必须全部为整数,这个可作为条件。具体实现请参看源程序。 语言、界面、源程序 (1)语言

相关主题
文本预览
相关文档 最新文档