欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1615830       资源大小:23.09KB        全文页数:34页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    专升本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


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开