整理VFP程序步骤.docx

上传人:b****4 文档编号:12413421 上传时间:2023-04-18 格式:DOCX 页数:31 大小:24.08KB
下载 相关 举报
整理VFP程序步骤.docx_第1页
第1页 / 共31页
整理VFP程序步骤.docx_第2页
第2页 / 共31页
整理VFP程序步骤.docx_第3页
第3页 / 共31页
整理VFP程序步骤.docx_第4页
第4页 / 共31页
整理VFP程序步骤.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

整理VFP程序步骤.docx

《整理VFP程序步骤.docx》由会员分享,可在线阅读,更多相关《整理VFP程序步骤.docx(31页珍藏版)》请在冰豆网上搜索。

整理VFP程序步骤.docx

整理VFP程序步骤

第一部分:

程序入门

一级

一、选择结构(IF-ELSE-ENDIF)

语句格式:

IF〈条件〉

〈语句序列1〉

[ELSE

〈语句序列2〉]

ENDIF

说明:

IF和ENDIF必须配对使用,而ELSE可选。

三个语句应各占一行。

若省略ELSE子句,条件为真时,则执行〈语句序列1〉,然后再执行ENDIF后的语句;否则,若条件为假,即执行ENDIF后的语句。

二、循环结构

1、条件循环:

语句格式:

DOWHILE〈条件表达式〉

       〈语句序列1〉

        [ LOOP]

       〈语句序列2〉

[EXIT]

〈语句序列3〉

ENDDO

说明:

系统执行该语句时,先测试条件表达式的值,若为真,则执行循环体,在循环体中修改循环条件,直到条件为假时,脱离循环,执行循环体ENDDO后的语句。

若遇到LOOP语句,则直接返回执行DO语句,测试条件以决定是否继续循环。

若执行循环体时遇到EXIT语句,则不执行下面的语句,直接跳出循环,执行ENDDO后面的语句。

注意:

DO WHILE  必须和ENDDO配合使用,两者缺一不可,DOWHILE语句前一定要有条件变量的初始值。

2、计数循环

 FOR 〈循环变量〉=〈循环初值〉TO 〈循环终值〉[STEP〈步长〉]

〈语句序列1〉

[LOOP]

〈语句序列2〉

[EXIT]

〈语句序列3〉

ENDFOR/NEXT

说明:

使用和DOWHILE基本一致,注意步长和ENDFOR语句。

三、程序举例:

A.简单整除,求和求个数。

Eg:

求出[10,100]内所有能被2整除的整数的和(2530),个数(46)

settalkoff

clear

n=0&&设置计数变量

s=0&&设置求和变量

fori=10to100

ifmod(i,2)=0

n=n+1&&满足条件计数变量加1

s=s+i&&满足条件,求和变量增加

endif

endfor

?

n,s

settalkon

return

A1.求出[10,100]内所有能被7和9中至少一个数整除的整数的个数(22),和(1250).

A2.求出[10,100]内所有能被7但不能被9整除的整数的个数(12),(665)

A3.求出[10,100]内所有能被7和9中的一个且只有一个数整除的整数的个数(21),(1187)

A4.编写程序,求出1~7000以内能被3或者7整除的数的个数(3000)。

A5.编写程序,求[1,500]既能被6整除又能被7整除的数之和。

(2772)

A6.求前[1,100]内能被6或8整除的所有自然数的平方根的和(将第1位小数四舍五入,结果只保留整数)。

(162)

A8.将大于1000且能被3和5中至少一个数整除的所有整数按从小到大顺序排列后,求前面20个数之和。

(20465)

settalkoff

clear

k=1

s=0&&设置求和变量

x=1000

dowhilek<=20

x=x+1

ifmod(x,3)=0ormod(x,5)=0

s=s+x&&满足条件,求和变量增加

k=k+1

endif

enddo

?

s

settalkon

return

A9将小于2000且能被4和6中至少一个数整除的所有整数按从小到大顺序排列后,求最后20个数之和。

(39390)

B类:

简单余数

Eg:

编写程序,求出100到500之间同时满足除5余4和除7余2条件的数的个数及和。

(12)(3678)

Settalkoff

S=0

N=0

ForI=100to500

Ifmod(I,5)=4andmod(I,7)=2

S=s+I

N=n+1

Endif

Endf

?

n,s

settalkon

return

B1、.编写程序,求在10~1000之间所有能被4除余2,被7除余3,被9除余5的数之和。

2000

B2.求出[200,800]内被除3余1并且被除5余3的整数的和。

20020

C类:

退出控制

Eg:

编写程序,求出1到6000之间的能被5整除的前若干个偶数之和,当和值大于650时退出并输出和值。

660

Settalkoff

S=0

ForI=1to6000

Ifmod(I,5)=0andmod(I,2)=0

S=s+I

Endif

Ifs>650

Exit

Endif

Endf

?

s

C1:

编写程序,求出1到5000之间的能被7整除的前若干个数之和,当和值大于等于1500时退出并输出和值。

1617

C2:

编写程序,已知:

S=2+4+8+16+32+…,求S不大于980的最大值。

510

Settalkoff

S=0

ForI=1to1000

X=2**i

S=s+x

?

x,s

Ifs>980

Exit

Endif

Endf

?

s-x

C3:

编写程序,已知:

S=1+3+5+7+9+…,求S不大于1000的最大值。

961

C4:

编写程序,已知:

S=2+4+8+16+32+…,求S不大于9000的最大值。

8190

C5.已知数列:

1,2,4,7,11,16,…,其规律是相邻两项之差依次是1,2,3,4,5,…。

试求出此数列中大于5000的最小的项。

5051

C6.求出50以内最大的自然数n,使得从1开始的连续n个自然数的倒数之和小于3.5。

(18)

settalkoff

clear

s=0

forn=1to50

s=s+1/n&&先求倒数再求和

ifs>=3.5

exit&&退出循环

endif

endfor

?

n-1&&为什么?

return

C7:

求出50以内最小的自然数n,使得从1开始的连续n个自然数的倒数之和大于3.6(21)

C8:

求出50以内最小的自然数n,使得从1开始的连续n个自然数的立方和小于20000(16)

C9.求出50以内最大的自然数n,使得从101开始的连续n个奇数之和小于2000。

(17)

settalkoff

clear

s=0

forn=1to50

a=99+2*n

s=s+a

ifs>2000

exit

endif

endfor

?

n-1

return

C10.求出100以内使得算式1/(1*2)+1/(2*3)+…+1/(n*(n+1))的值小于0.952的最大的自然数n。

19

C11.某国在2000年时人口总数为1亿,若以每年3%的速度递增,试求出至少要到哪一年该国人口总数才会翻一翻。

2024

settalkoff

clear

s=1

forn=2001to2100

s=s*1.03

ifs=2&&应改为ifs>=2

loop&&应改为exit

endif

endfor

?

n

settalkon

return

C12.某国今年的人口总数为1亿,若以每年4%的速度递增,试求出至少要再过几年该国人口总数才会翻一翻。

18

C13.一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最小的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程超过678米。

13

settalkoff

clear

h=100

s=0应改为:

s=100

forn=2to100

h=h*3/4

s=s+h应改为:

s=s+2*h

ifs>678

exit

endif

endfor

?

n

settalkon

return

C14.一球从100米高处落至平地,并且连续多次再反弹再落下,假设每次反弹的高度都是前一高度的3/4倍,试求出最大的自然数n,使得此球从开始下落至第n次着地时在垂直方向所经过的总路程不超过590米。

6

第二部分:

算法举例

D类:

多循环控制

穷举法:

穷举法就是将所有可能的方案都一一测试,找出其中符合指定要求的。

Eg.把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问有多少种方案?

(461)

settalkoff

clea

n=0

foryi=1to100&&1分的最少1枚,最多100枚。

forer=1to50

forwu=1to20

ifyi+er*2+wu*5=100

n=n+1

endif

endfor

endfor

endfor

?

n

settalkon

return

d1.把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后硬币总数最多的与硬币总数最少的枚数之差是多少?

(73)

d2.把一张一元钞票,换成一分、二分和五分硬币,每种至少1枚,问兑换后其中

二分的硬币恰有20枚的方案共有多少种?

(11)

d3.有60个学生一起买小吃,共花钱100元,其中每个大学生花3元,

每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种

不同的解(去掉某类学生为0的)?

19

D4.有5羊4犬3鸡2兔值钱1496,4羊2犬6鸡3兔值钱1175,3羊1犬7鸡5兔值钱958,2羊3犬5鸡1兔值钱861,求兔值多少钱?

(鸡13,兔29犬121,羊177)

(修改并调试下列程序)

settalkoff

fory=1to300

forc=1to400

forj=1to500

fort=1to400

if5*y+4*c+3*j+2*t=1496and4*y+2*c+6*j+3*t=1175;

3*y+1*c+7*j+5*t=958and2*y+3*c+5*j+1*t=861

?

y,c,j,t

endif

endf

endf

endf

endf

settalkon

E类:

简单位数运算

Eg:

编写程序,求三位数的奇数中,所有各位数字之和是15的倍数的数的和。

19731

Settalkoff

S=0

ForI=100to999

A=int(I/100)

B=int(mod(I,100)/10)

C=mod(I,10)

Ifmod(I,2)=1andmod(a+b+c,15)=0

S=s+I

Endif

Endf

?

s

e1:

编写程序,求三位数的奇数中,所有各位数字之和是12的倍数的数的个数。

38

e2:

编写程序,求三位数的偶数中,所有各位数字之和是15的倍数的数的个数。

34

e3:

编写程序,计算在0~50的范围内有多少个数,其每位数的乘积小于每位数的和。

26

e4:

编写程序,计算1000以内有多少个这样的数,其个位数为6且该数能被9整除。

11

e5:

编写程序,统计200~400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数4

e6:

编写程序,求四位数的偶数中,所有各位数字之和是24的倍数的数的个数。

187

settalkoff

n=0

forI=1000to9999

a=int(i/1000)

b=int(mod(I,1000)/100)

c=int(mod(I,100)/10)

d=mod(I,10)

ifmod(I,2)=0andmod(a+b+c+d,24)=0

n=n+1

endif

endf

?

n

e7:

编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和。

161095

e8:

编写程序,求在四位数的偶数中,所有各位数字之积(且不为0)是18的倍数的数的和。

8638596

e9:

编写程序,计算100-10000以内个位上的数小于百位上的数的所有数之和。

23314500

(改错并调试下列程序)

settalkoff

clea

n=100

fori=100to10000

bw=mod(i,1000)

gw=mod(i,10)

ifgw

n=n+1

endif

endfor

?

n

return

F类:

回文数

Eg:

所谓回文数是从左至右与从右至左读起来都是一样的数字,如:

121是一个回文数。

编写程序,求出100-200的范围内所有回文数的和。

1460

Settalkoff

S=0

ForI=100to200

A=int(i/100)

B=int(mod(I,100)/10)

c=mod(I,10)

Ifa=c

S=s+i

endif

endf

?

s

f1:

所谓回文数是从左至右与从右至左读起来都是一样的数字,如:

121是一个回文数。

编写程序,求在100-900的范围内所有能被3整除的回文数的个数。

26

f2:

所谓回文数是从左至右或从右至左读起来都是一样的数字,如:

121是一个回文数。

编写程序,计算从1981年开始到3000年为止,共有多少个年号是回文数年号。

11

f3:

求出[123,456]内恰好有两个数字相同的所有整数之和。

26406

(改正并调试下列程序)

settalkoff

clear

s=0

forx=123to456

a=int(x/100)

b=int((x-a*100)/10)

c=mod(x,1)

ifa=banda!

=cora!

=banda=c

s=s+x

endif

endfor

?

s

settalkon

return

G类:

水仙花数

Eg:

“水仙花数”是指这样的数,其各位数字的立方和等于该数本身。

编写程序求100至400的范围内有多少个水仙花数。

3

Settalkoff

n=0

ForI=100to400

A=int(i/100)

B=int(mod(I,100)/10)

c=mod(I,10)

Ifa^3+b^3+c^3=i

N=n+1

endif

endf

?

n

g1:

"水仙花数"是指这样的数,其各位数字的立方和等于该数本身。

编写程序求100至999的范围内有多少个水仙花数。

4

g2:

"水仙花数"是指这样的数,其各位数字的立方和等于该数本身。

编写程序,计算从100年开始到2000年为止,共有多少个年号是水仙花数年号。

4

g3:

设某四位数的各位数字的平方和等于198,问满足这种条件的最大数和最小数之和是多少?

12749

(改正并调试下列程序)

settalkoff

clea

min1=1000

max1=1000

forx=1000to9999

a=int(x/1000)

b=int((x-a*1000)/100)

c=int(x/100)/10

d=mod(x,10)

ifa*a+b*b+c*c+d*d=198

ifmax1

x=max1

endif

ifmin1>x

min1=x

endif

endif

endfor

?

max1+min1

settalkon

return

H类:

位数及多条件运算

Eg:

编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。

110

settalkoff

n=0

forI=1000to9999

a=int(i/1000)

b=int(mod(I,1000)/100)

c=int(mod(I,100)/10)

d=mod(I,10)

ifmod(I,8)=0anda+b=b+c

n=n+1

endif

endf

?

n

h1:

编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是18的倍数,且C=7,A+B=C+D,即第1位数加上第2位数等于第3位数加上第4位数。

9

h2:

编写程序,统计1000~9999之间的所有满足以下条件的四位数的个数。

该四位数是一个完全平方数,且其第1位与第3位数字之和为10,第2位与第4位数字之积为12。

2

settalkoff

n=0

forI=1000to9999

a=int(i/1000)

b=int(mod(I,1000)/100)

c=int(mod(I,100)/10)

d=mod(I,10)

ifa+c=10andb*d=12andint(sqrt(i))=sqrt(i)&&注意判定完全平方数

n=n+1

?

i

endif

endf

?

n

h3:

编写程序,统计1000~9999之间的所有满足以下条件的四位数的个数。

该数是一个完全平方数,且其第1、2位数字之和为10,第3、4位数字之积为18。

1

h4:

求满足条件A*B=54321且使A+B的值最小的自然数对A、B中较大的一个数。

(提示:

设A<=B,当A越大时A+B越小)953

settalkoff

clear

c=54321

k=int(sqrt(c))

fora=1tok

b=int(c/a)

ifa*b=c

max=b

endif

endfor

?

max

settalkon

return

h5:

求满足条件A*B=54321的所有自然数对A、B对应的A+B的最小值。

(提示:

设A<=B,当A越大时A+B越小)1010

h6:

设a=234,b=569,求a/b的精确值中小数点后前40位数字中数字8的个数。

(提示:

基于人工计算的思想)6

settalkoff

clear

a=234

b=569

n=0

fork=1to40

a=a*10

q=int(a/b)

ifq=8

n=n+1

endif

a=mod(a,b)&&余数是下次运算时的被除数

endfor

?

n

settalkon

return

h7:

求出将十进制整数98765432等值转换为二进制形式表示后其中数字0的个数。

(提示:

模拟人工计算的“2除取余”法)14

h8:

求出将十进制整数99887766554等值转换为十六进制形式表示后其中字母C的个数。

(提示:

模拟人工计算的“16除取余”法)2

h9:

对自然数A、B、C,若A

试求出弦为25000的勾股弦数组的个数。

5

settalkoff

clear

c=25000

n=0

fora=1toc

b=int(sqrt(c*c-a*a))

ifa*a+b*b=c*canda

n=n+1

endif

endfor

?

n

settalkon

return

h10:

对自然数A、B、C,若A

试求出弦为1300的勾股弦组数。

7

h11:

求方程3x-7y=1在条件|x|<100且|y|<40下的整数解的个数。

26

settalkoff

clear

n=0

forx=-99to99

y=int((3*x-1)/7)

if3*x-7*y=1andabs(y)<40

n=n+1

endif

endfor

?

n

settalkon

return

h12:

求方程4x+9y=1000的正整数解的个数。

27

h13:

求方程9x+4y=2000的所有正整数解的|x-y|的最小值。

6

settalkoff

clear

min=500&&求最小值时初值必须要足够大

forx=1to230

y=int((2000-9*x)/4)

z=abs(x-y)

if9*x+4*y=2000andy>0andmin>z&&取最小值并保证都是正数解

?

min

min=z

endif

endfor

?

min

settalkon

return

h14:

求方程9x+4y=2000的所有正整数解的|x-y|的最大值。

487

h15:

找满足以下条件:

X^2+Y^2=41^2且X+Y之值最大的二个正整数X,Y,求X+Y之值.49

h16:

对自然数A、B、C,若A

试求出弦为[100,300]内符合条件的数有多少组?

63

(改正并调试下列程序)

settalkoff

clear

n=0

fora=100to300

forb=1to300

forc=1to300

ifa*a+b*b=c*c

n=n+a+b+c

endif

endfor

endfor

endfor

?

n

settalkon

return

I类:

等差数列或一般数列

Eg:

编写程序,求一正整数等差数列的前三项的和,该数列前四项之和是26、之积是880。

15

clea

settalkoff

fora1=1to7

ford=1to7

ifa1+(a1+d)+(a1+2*d)+(a1+3*d)=26anda1*(a1+d)*(a1+2*d)*(a1+3*d)=880

?

a1,d

?

a1+(a1+d)+(a1+2*d)

endif

endf

endf

i1:

编写程序,求一正整数等差数列的前五项的立方和,该数列前四项之和是26、之积是880。

4720

i2:

已知数列:

1、2、4、7、10、15、…,其特点是:

相邻两项之差恰好构成自然数列:

1、2、3、4、5、…。

求此数列的前100项中能被4整除的项的个数。

25

(改正并调试下列程序)

settalkoff

clear

a=1

k=0

forn=1to100

a=a+n

ifmod(n,4)=0

k=k+1

endif

endfor

?

k

settalkon

return

J类:

完数

Eg:

一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:

6=1+2+3,则6就是一个完数。

求出200到500之间所有的完数之和。

496

settalkoff

clea

s=0

fori=200to500

k=0&&k是因子的和变量

fora=1toi-1&&a是I的真因子

ifmod(i,a)=0

k=k+a

endif

endf

ifk=I&&I的因子求完后,看因子和是否等于原来的数i

?

I&&显示有几个完数

s=s+i

endif

endf

?

s

j1:

一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:

6=1+2+3,则6就是一个完数。

求出1000以内的完数的个数。

3

j2:

一个数如果刚好与小于它的所有因子之和相等,则称该数为一个“完数”,求出1000以内的所有完数的平方和。

246836

K类:

递推

Eg:

已知一个数列的前3个数为0,0,1,以后每个数为前3个数的和,编程序求此数列的第36个数。

334745777

settalkoff

clea

f1=0

f2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1