ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:23.09KB ,
资源ID:12916816      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12916816.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(专升本VF程序设计复习资料CH2算法.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

专升本VF程序设计复习资料CH2算法.docx

1、专升本VF程序设计复习资料CH2算法CH2 结构化程序设计语句和算法一、 顺序结构1. 求园的面积ClearInput “请输入园的半径:” to rS=pi()*r2?”园的面积是:”,s2. 鸡兔同笼问题二、 选择结构2.1 if1. 判断闰年ClearInput “请输入年份:” to yIf (y%4=0 and y%1000) or y%400=0 ?y,”是闰年!”Else ?y,”是闰年!”endifcancel2.2 do case2. 判断学生成绩等级clearinput 请输入学生成绩: to xif x100 or x=90 ?等级为A case x=80 ?等级为B c

2、ase x=70 ?等级为C case x=60 ?等级为D other ?等级为Eendcaseendifcancel3. 判断一个数是否是水仙花数。clearinput m= to mx=int(m/100)y=int(m%100)/10)z=m%10if x3+y3+z3=m ?m,是水仙花数else ?m,不是水仙花数 endifcancel三、 循环结构3.1 Do while循环1. s=1+2+3.+100ClearI=1S=0Do while in)的最大公倍数和最小公约数。采用辗转相除法:m除以n,得余数r;如果r不等于0,则将n赋予m,r赋予n,再用m除以n,得余数r;依次

3、类推,直到r0为止,此时的n就是最大公约数。M和n的乘积除以最大公约数就是最小公倍数。Cancelinput输入M: to minput输入N to nx=my=nif n=0 then ?数据有错,不能为0! exitendif r=mod(m,n)do while r0 m=n n=r r=mod(m,n)enddo?最大公约数是:,n?最小公倍数是:,x*y/ncancel9. 判断某个数是否是素数。(除了1和它本身之外不能被任何一个整数所整除的自然数叫质数,除去2之外,其它质数都是奇数,又称为素数)在程序设计中,经常要记录一些状态,作为判断的条件。因此需要在程序中设置一些标志,通常标志

4、是整型变量。如:设置变量f用于记录是否为素数, f=0是素数;f=1不是素数。程序:clearinput m= to mf=.T.for i=2 to m-1 if m%i=0 f=.F. exit endifnextif f=.T. ?yeselse ?noendifcancel 10. 输出100-1000以内的所有素数,并计算这些素数之和。(输出时按照每行5个数据方式输出)。(在3.2中6题的基础上进行扩充)clearcount=0s=0for m=100 to 1000 f=.T. for i=2 to m-1 if m%i=0 f=.F. exit endif next if f=.

5、T. ?m count=count+1 if count%5=0 ? endif endif s=s+mnext?s=,scancel 12、 显示所有的水仙花数。clearfor m=100 to 999 x=int(m/100) y=int(m%100)/10) z=m%10 if x3+y3+z3=m ?m,yes endifnextcancel12、 猴子摘桃问题。已知猴子第一天摘了2个桃子,第二天摘的桃子是第一天的2倍多一个;以此类推,第n天摘了多少个桃子? clearinput 请输入第几天: to nx=2for i=2 to n x=x*2+1next?共摘了:,xcancel

6、13、 计算 t=1!+2!+n! (即求阶乘之和)clearinput n= to nsum=0for i=1 to n f=1 for j=1 to i f=f*j next sum=sum+fnext?sum=,sumCancel14、 计算 t=1!+1/2!+1/3!+1/n! (即求阶乘之和)clearinput n= to nsum=0for i=1 to n f=1 for j=1 to i f=f*j next sum=sum+1/fnext?sum=,sumCancel15、 穷举法:百钱买百鸡问题。clearfor x=1 to 19 for y=1 to 33 z=10

7、0-x-y if z%3=0 if 5*x+3*y+z/3=100 ?x,y,z endif endif nextnextcancel16、 设计1个程序,要求是:(查找算法、统计、求和、找素数或质数)(1)在键盘上输入1个不小于3的自然数N(例输入10),求出其不到第N个自然数中奇数之和,并输出结果(2)输出1到第N自然数中所有质数的个数clearinput n= to ns=0x=0if n=A and upper(b)=0 a_nd ba(i) minx =a(i) minp=i endifnext?min=, minx?position=,minpcancel 求最大数和其位置:cle

8、ardimen a(10)for i=1 to 10 input 输入数据: to a(i)nextmaxx=a(1)maxp=1for i=2 to 10 if maxx a(j) minx=a(j) minp=j endif next if minpi temp=a(minp) a(minp)=a(i) a(i)=temp endifnextfor i=1 to 10 ?a(i)nextcancel4. 冒泡法排序cleardimension a(10)for i=1 to 10 a(i)=int(rand()*90+1) ?a(i)next?for i=1 to 9 for j=1 to

9、 10-i if a(j)a(j+1) then temp=a(j) a(j)=a(j+1) a(j+1)=temp endif nextnextfor i=1 to 10 ?a(i)nextcancel5. 随机产生20个20-99之间的整数,先按照每行5个数据方式输出,再进行升序排列,再按照每行5个数据方式输出cleardimension a(10)*数组赋值for i=1 to 10 a(i)=int(rand()*90+1) ?a(i) if i%5=0 ? endifnext*排序for i=1 to 9 minx=a(i) minp=i for j=i to 10 if minxa

10、(j) minx=a(j) minp=j endif next if minpi temp=a(minp) a(minp)=a(i) a(i)=temp endifnext*换行?*排序结果输出for i=1 to 10 ?a(i) if i%5=0 ? endifnextcancel6. (对字符串排序处理)有5个英文单词,分别为:Word,Excel,Powerpoint,Type,Angle,要求设计出如下程序:(1)在键盘上输入数N(本例输入5),把英文单词放入名为a大小为N的数组中(2)显示出X数组中的英文单词(3)对数组中的英文单词从小到大排序(4)显示出排序后X数组中英文单词cl

11、earinput 请输入字符串总个数: to ndimen a(n)for i=1 to n input 请依次输入字符串: to a(i)nextfor i=1 to n ?a(i)next?排序后的字符串为:for i=1 to n-1 minword=left(a(i),1) minp=i for j=i+1 to n_ if minwordleft(a(j),1) minword=left(a(j),1) minp=j endif next if minpi temp=a(i) a(i)=a(minp) a(minp)=temp endifnextfor i=1 to n ?a(i)n

12、extcancel7. 查找算法(顺序查找.prg)又称线性查找,是一种最简单的查找方法。从第1个元素到最后1个元素,逐个进行比较,直至找到为止。cleardime a(10)for i=1 to 10 a(i)=int(rand()*100) ?a(i)next iinput 输入要查找的数: to x for i=1 to 10 if a(i)=x ?找到:,x,i cancel endifnext i?没有找到!cancel8. 查找算法(折半查找.prg):先排序,后查找,是查找一个已排好序的表的最好方法。算法思想: 将有序数列的中点设置为比较对象,如果要找的元素值小于该中点元素,则将

13、待查序列缩小为左半部分,否则为右半部分。即通过一次比较,将查找区间缩小一半。 二分查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,二分查找的先决条件是查找表中的数据元素必须有序。cleardimen a(10)*数组初始化for i=1 to 10 a(i)=int(rand()*100+1) ?a(i)next*利用选择法排序?for i=1 to 9 minnum=a(i) p=i for j=i+1 to 10 if minnuma(j) then minnum=a(j) p=j endif next if pi then temp=a(i) a(i)=a(p) a

14、(p)=temp endif ?a(i)next i*折半查找 input please input number; to kl=1h=10flag=0do while lk then h=m-1 else l=m+1 endifenddo if flag=1 then ?find else ?not findendif cancel9. 有序数列的插入算法。(在定义数组时就多定义一个元素,如n=9,dime a(10))(有序数列插入1.prg)算法:先将数列排好序,再将要插入的数据从数列中最后一个元素开始比较,如果数列中的元素大于待插入数据,则将数列中的数据后移,如果小于待插入数据则停止比

15、较;然后再将待插入数据放入比它小的数据的后面。clear*输入数据到数组input 输入n= to ndime a(n+1)for i=1 to n input 依次输入数据: to a(i)next*显示输入的数据for i=1 to n ?a(i)next*排序for i=1 to n-1 for j=1 to n-i if a(j)a(j+1) temp=a(j+1) a(j+1)=a(j) a(j)=temp endif nextnext*显示排序后的数据?for i=1 to n ?a(i)next*输入要插入的数据input 请输入要插入的数据: to kfor i=n to 1

16、step -1 if a(i)k a(i+1)=a(i) else exit endifnexta(i+1)=k*显示插入后的结果for i=1 to n+1 ?a(i)nextcancel10. 有序序列删除操作算法:先将数列排好序,再从第一个元素开始,找到后将待删除数据后面的数据依次前移。clear*输入数据到数组input 输入n= to ndime a(n)for i=1 to n input 依次输入数据: to a(i)next*显示输入数据值for i=1 to n ?a(i)next*排序for i=1 to n-1 for j=1 to n-i if a(j)a(j+1) t

17、emp=a(j+1) a(j+1)=a(j) a(j)=temp endif nextnext*显示排序后的数据?for i=1 to n ?a(i)next*输入要删除的数据input 请输入要删除的数据: to kflag=.f.for i=1 to n if a(i)=k flag=.t. exit endifnextif flag=.t. for j=i+1 to n a(j-1)=a(j) ? *显示删除后的序列 for i=1 to n-1 ?a(i) next next else ?没有需要删除的数据!endif 11. 字符串处理(插入、删除、连接和比较)与有序数列的插入、删除

18、操作相似,但不需要排序插入:clear*输入数据到数组input 请输入字符串: to str1n=len(str1)dime a(n+1)*将字符串中的字符依次给数组a的各个元素for i=1 to n a(i)=substr(str1,i,1)next*输入要插入的字符input 请输入要插入的字符: to mycharfor i=n to 1 step -1 if a(i)mychar a(i+1)=a(i) else exit endifnexta(i+1)=mychar*显示插入后的结果for i=1 to n+1 ?a(i)nextcancel删除clear*输入数据到数组inpu

19、t 请输入字符串: to str1n=len(str1)dime a(n)*将字符串中的字符依次给数组a的各个元素for i=1 to n a(i)=substr(str1,i,1)next*输入要删除的字符input 请输入要删除的字符: to mycharflag=.f.for i=1 to n if a(i)=mychar flag=.t. exit endifnextif flag=.t. for j=i+1 to n a(j-1)=a(j) next *显示删除后的结果 for i=1 to n-1 ?a(i) nextelse ?没有找到需要删除的字符! endif cancel4

20、.2二维数组1) 定义: dime a(3,4) 表示定义了一个3行4列的数组,共有3*4=12个元素,每个元素引用a(i,j)表示;a(1,1)a(1,2)a(1,3)a(1,4)a(2,1)a(2,2)a(2,3)a(2,1)a(3,1)a(3,2)a(3,3)a(3,4)2) 二维数组初始化For i=1 to 3 For j=1 to 4 Input “请依次输入元素值:” to a(i,j) nextnext其中input语句也可以改为由随机函数rand()来赋值:a(i,j)=int(rand()*(终值-初值+1)+初值)3) 二维数组输出For i=1 to 3 For j=1 to 4 ?a(i,j) Next ?next1. 生成如图矩阵cleardime a(5,5)for i=1 to 5 for j=1 to 5 do case case ij a(i,j)=2 case i=j a(i,j)=1 otherwise a(i,j)=3 endcase next j next ifor i=1 to 5 for j=1 to 5 ? a(i,j) next j ? next i

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

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