重庆普通专升本《计算机程序设计》中常用算法复习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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