当前位置:文档之家› 重庆普通专升本《计算机程序设计》中常用算法复习

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

重庆普通专升本《计算机程序设计》中常用算法复习一、常用算法有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=20for x1=1 to 10for x2=1 to 20x3=20-x1-x2if 100=x1*10+x2*5+x3*1 and x3>0 then?x1,x2,x3endifnext x2next x112、求级数.prg程序如下:*求级数1.prg"*s=1+1/2-1/3+1/4+....s=1d=1clearinput "输入N:"to nfor i=2 to ns=s+d*1/id=-d?Snext i?"s=",s13、求数列.prg程序如下:*求数列2.prg"fibnocsi数列f1=1f2=1??f1,f2for i=1 to 20f2=f2+f1f1=f2-f1??f2next i14、生成矩阵.prg程序如下:*(4)生成矩阵.prg"cleardime a(5,5)for i=1 to 5for j=1 to 5do casecase i<ja(i,j)=2case i=ja(i,j)=1otherwisea(i,j)=3endcasenext jnext ifor i=1 to 5for j=1 to 5?? a(i,j)next j?next i15、查找算法(顺序查找.prg)程序如下:*(1)顺序查找.prg"cleardime a(10)for i=1 to 10a(i)=int(rand()*100)??a(i)next iinput "输入要查找的数:" to xfor i=1 to 10if a(i)=x?"找到:",x,ireturnendifnext i?"没有找到!"16、查找算法(折半查找.prg")程序如下:*(2)折半查找.prg"(先排序,后查找) cleardime a(10)n=10for i=1 to 10a(i)=int(rand()*100)??a(i)next*排序for k=1 to n-1for j=k+1 to nif a(k)>a(j)t=a(k)a(k)=a(j)a(j)=tendifendfor? a(k)endfor?a(n)return*折半查找input "输入要查找的数:"to xl=1h=10do while l<=hm=int((l+h)/2)if a(m)=x thenexitelseif a(m)>x thenh=m-1elsel=m+1endifendifenddoif l<=h then?"找到",M,a(m)else?"没有找到!"endif17、求解算法(最大公约数)程序如下:*(1)最大公约数input"输入M:" to minput"输入N" to nif n=0 then?"数据有错!"exitendifr=mod(m,n)do while r>0m=nn=rr=mod(m,n)enddo?"最大公约数是:",n18、求解算法(最小公倍数)程序如下:*(2)最小公倍数input"输入M:" to minput"输入N" to na=mb=nif n=0 then?"数据有错!"exitendifr=mod(m,n)do while r>0m=nn=rr=mod(m,n)enddo?"最大公约数是:",n?"最小公倍数是:",a*b/n 19、有序数列的插入操作程序如下:* 有序序列插入操作.prg"set talk offclear*定义数组input '输入n=?' to ndime a(10)*给数组提供值for k=1 to ninput '逐个输入数据'to a(k)endfor*排序开始for k=1 to n-1for j=k+1 to nif a(k)>a(j)t=a(k)a(k)=a(j)a(j)=tendifendfor? a(k)endfor?a(n)*插入数据input "输入要插入的数:" to x a(7)=xfor i=n to 1 step -1if a(i)>x thena(i+1)=a(i)elseexitendifnext ia(i+1)=x?"插入一个元素后:"for i=1 to n+1?? a(i)next i20、有序数列的删除操作程序如下:* 有序序列删除操作.prg"cleardime a(11)n=10for i=1 to 10a(i)=int(rand()*100)??a(i)nextfor i=1 to n-1for j=n to i+1 step -1if a(j)<a(j-1)t=a(j)a(j)=a(j-1)a(j-1)=tendifnext jnext i?"sort:"for i=1 to n?? a(i)next i*找出删除位置input "输入要删除的位置数:" to xif x>10 or x<1 then?"输入位置有错!"returnendiffor i=x to 9if a(i)>x thena(i)=a(i+1)elseexitendifnext i?"删除一个元素后:"for i=1 to n-1?? a(i)next i说明:字符串处理(插入、删除、连接和比较)与有序数列的插入、删除操作相似。

相关主题