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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

一、常用算法有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

d=-d

?S

next i

?"s=",s

13、求数列.prg

程序如下:

*求数列2.prg"

fibnocsi数列

f1=1

f2=1

??f1,f2

for i=1 to 20

f2=f2+f1

f1=f2-f1

??f2

next i

14、生成矩阵.prg

程序如下:

*(4)生成矩阵.prg"

clear

dime a(5,5)

for i=1 to 5

for j=1 to 5

do case

case i

a(i,j)=2

case i=j

a(i,j)=1

otherwise

a(i,j)=3

endcase

next j

next i

for i=1 to 5

for j=1 to 5

?? a(i,j)

next j

?

next i

15、查找算法(顺序查找.prg)

程序如下:

*(1)顺序查找.prg"

clear

dime a(10)

for i=1 to 10

a(i)=int(rand()*100)

??a(i)

next i

input "输入要查找的数:" to x

for i=1 to 10

if a(i)=x

?"找到:",x,i

return

endif

next i

?"没有找到!"

16、查找算法(折半查找.prg")

程序如下:

*(2)折半查找.prg"(先排序,后查找) clear

dime a(10)

n=10

for i=1 to 10

a(i)=int(rand()*100)

??a(i)

next

*排序

for k=1 to n-1

for j=k+1 to n

if a(k)>a(j)

t=a(k)

a(k)=a(j)

a(j)=t

endif

endfor

? a(k)

endfor

?a(n)

return

*折半查找

input "输入要查找的数:"to x

l=1

h=10

do while l<=h

m=int((l+h)/2)

if a(m)=x then

exit

相关文档
最新文档