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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

PASCAL提高教程.docx

1、PASCAL提高教程PASCAL提高教程 第一讲 素数及其应用一、什么是素数素数,也叫质数,例如:2、3、5、7、11、13等等。素数是这样定义的:若正整数p恰好只有1及本身p两个正因数,则p称为素数。若正整数p有多于两个正因数,则p称为合数。依定义,全体正整数按其正因数的多少可分成三类:1、只有一个正因数;2、全体素数:只有两个正因数;3、全体合数:有多于两个的正因数。所以1既不是素数,也不是合数。 二、素数的求法1、根据定义的常规求法:如果要判断数p是否是素数,可将2到p-1之间的数与p进行试除,只要p除以其中某个数k的余数为0,那么说明k是p的另一个因数,因此p不是素数;反之,如果2到p

2、-1之间所有的数都不能被p整除,那么可以判断p是一个素数。程序:Program Lt1_1;Begin Write(p = ); ReadLn(p); For k := 2 to p-1 do If p mod k=0 Then Begin WriteLn(p, is not a prime number !); Halt; End; WriteLn(p, is a prime number !);End.2、一种改进的快速方法筛法给定正整数p后,我们可以提供一种可以求不大于p的所有的素数的方法。假定p=50,将2到50之间的整数按顺序排列如下:2 3 4 5 6 7 8 9 10 11 12

3、 14 15 16 17 1819 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3435 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50依次划去2、3、5、7的倍数,数表中没有被划去的数即为不大于50的素数。程序:Program Lt1_2;Const p = 50;Var a : Array1.p of Boolean; i,j,k : Integer;Begin Fillchar(a,Sizeof(a),True); For i := 2 to Trunc(Sqrt(p) do If ai Then For

4、j := 2 to p div i do ai*j := False; For i := 2 to p do If ai Then Write(i:5);End. 三、应用举例1.从小到大找出5个素数,使后面的数比前面的数都大12.(答案:5,17,29,41,53)2.哥德巴赫猜想:任何大于2的偶数,都可以写成两个素数的和的形式,例如:18=5+13。满足条件的表达式不一定是唯一的,例如:10=3+7=5+5=7+3。其中我们将3+7与7+3两种写法认为是重复的,因此10有2种不重复的分解方法。请你编一个程序,对于键盘输入的一个大于2小于1000的偶数,输出所有满足要求的不重复的表达式。3.

5、分解质因数:任意一个合数,均可唯一表示为素数的乘积,例如:6=2*3,100=2*2*5*5。现在由键盘输入一个不超过5000的合数p,请编一个程序,将p表示成为素数的乘积的形式。4.“漂亮数”:一个自然数,若它的质因数至少是两重的(相同质因数的个数至少两个,如36=22*3),则称该数为“漂亮数”,请编程序找出100以内的“漂亮数”。 第二讲 字符串及其应用字符串是Turbo Pascal中有效的,应用广泛的数据类型,下面我们将通过例题学习关于字符串的一些标准过程和函数.常用的字符串标准函数和过程例3.1编一个程序,从键盘上输入一个算术表达式,判别该表达式中,左圆括号与右圆括号是否正确配对,

6、如正确,打印YES,否则打印NO.由于算术表达式中可以包含有数字,运算符,括号等,所以可以将它们作为字符串看待,用一个字符串变量来存储.同时,可以将字符串当成一个一维的字符型数组进行处理.算术表达式中括号匹配的检测方法:设一个计数器T为0,将表达式串从向右扫描,当遇到左括号(时将T加1,遇到右括号时将T减1,直到结束,若期间T小于0或扫描结束后T不为0,都表明括号不匹配.例3.2回文数:一个两位以上的整数,如果左右对称就称回文数,7491947和3883都是回文数.编程序找出不超过40000的且是完全平方数的回文数. 习题:1.有一个各位数字都不相同的三位数,如果将此数码重新排列,必可得到一个

7、最大数和一个最小数,些两数之差正好就是原来的三位数,求这个三位数.2.求所有不超过1000的这样的整数,它的平方的末两位数字相同,但不为0.3.统计一个句子中单词的平均长度.以I come from Beijing.为例,测试程序.4.在小于10N的全部自然数中,找出含奇数个5的自然数,并统计个数,N由键盘输入(N0 Do RepeatBegin a := y mod 10; a := y mod 10; y := y div 10; y := y div 10; Until y=0;End;(2)字符串分离法将数值量转化为字符串,再用字符串的相应操作实现,具体方法在下讲中讨论.例2.2.有一

8、个两位数,加6后再把个位数与十位数互换,得到一个新的两位数,这样加6再互换共三次后,又得到了原来的两位数,求原来的两位数.分析:若某两个位数为ab(其中a是第一个数码,b是第二个数码),则可以用a*10+b合成它们的数值.习题:1.有一个各位数字都不相同的三位数,如果将此数码重新排列,必可得到一个最大数和一个最小数,些两数之差正好就是原来的三位数,求这个三位数.2.回文数:一个两位以上的整数,如果左右对称就称回文数,7491947和3883都是回文数.编程序找出不超过40000的且是完全平方数的回文数.3.把一个两位素数写在另一个两位素数之后,得到一个四位数,它能被这两个素数之和的一半整除,求

9、出所有这样的素数对.4.把一个六位的平方数截成两个三位数时,这两个三位数之差的绝对值是1(如5732=328329).问这样的六位平方数共有哪些?5.求所有不超过1000的这样的整数,它的平方的末两位数字相同,但不为0. 第四讲 逻辑判断逻辑判断是一种常见的题型,计算机解题时的主要策略是穷举各种可能的情况,其中的关键在于怎样描述条件.例4.1四大湖问题:上地理课时,四个学生回答我国四大淡水湖的大小时说:A学生:洞庭湖最大,洪泽湖最小,鄱阳湖第三.B学生:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三.C学生:洪泽湖最小,洞庭湖第三.D学生:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三.对于每个湖

10、的大小,每人仅答对一个,请计算机帮助判断四个湖的大小.分析:如何判断每人仅答对一个是个棘手的问题,程序中给出了一种巧妙的方法.例4.2配备侦察员问题:某侦察队长接到一项紧急任务,要他在代号为A,B,C,D,E,F的六个队员中选出若干人去侦破一件案子.人选的配备必须注意到下列各点:(1)A,B两人中至少去一人.(2)A,D不能一起去.(3)A,E,F三人中要派两人去.(4)B,C两人都去或都不去.(5)C,D两人中去一人(6)如D不去,则E也不去.请问应该让谁去? 习题 :1.有一块金属,三人对它进行判断:A说:它不是铁,也不是钢.B说:它不是铁,而是铜.C说:它不是铜,而是铁.结果有一个人全说

11、错了,一个人全说对了,一个人对一句错一句.请你判断这块金属到底是什么?2.X,Y,Z三名观众对田径场上100米决赛进行预测:X:A能得金牌,B能得银牌.Y:C能得金牌,D能得第四.Z:D能得金牌,B能得铜牌.结果每个人都只猜对了一半,求A,B,C,D四名选手的名次. 第九讲 杂题应用本讲通过一些问题对上阶段学习的知识进行巩固.例9.1澳门回归:1953年,葡萄牙人借口曝晒水浸货物,进入澳门.1957年他们又通过贿赂守澳中国官员,得以在澳门半岛定居.鸦片战争以后,葡萄牙不断扩大其侵略地盘,至此,澳门沦为葡萄牙的殖民地.为了收复澳门,我国政府同葡萄牙政府进行多次谈判,于1987年4月13日签署了关

12、于澳门问题的联合声明.两国政府声明:澳门是中国的领土,中国政府将于1999年12月20日对澳门恢复行使主权.毫无疑问,澳门的回归将成为香港回归后又一件举世瞩目的大事.你的任务是编写一个倒计时程序,计算1999年的某一日期距澳门回归还剩多少天.日期通过键盘输入,输入日期的格式为mm/dd,其中mm表示月,dd表示日.例如输入:12/04时,你的程序应输出:16.例9.2奇偶校验当一个布尔矩阵每行与每列的和都是偶数时,那它就有奇偶校验的功能.下面是一个有奇偶校验的4*4矩阵:1 0 1 00 0 0 01 1 1 10 1 0 1每行的和分别为:2,0,4和2.每列的和分别为2,2,2和2.你的任

13、务是写一程序读入一个矩阵,并检查它是否具有奇偶校验的功能.如果没有,你的程序应再检查是否能只改变矩阵中的某一位使之具有奇偶校验的功能.如果还是没有,这个矩阵将被指明不再作为奇偶校验使用.输入:输入数据由文本文件input.txt读入,文件中可以有多个等处理矩阵,对每个矩阵的描述是这样的:第一行包含一个整数n(n100),表示矩阵的大小.接下来的n行,每行有n个非0即1的整数,表示矩阵的元素.同一行相邻的两个整数之间用一个空格分隔.输入数据以n的值为0时表示结束.输出:对每组输入数据只输出一行.如果矩阵已经具有奇偶校验的功能,则输出OK;如果改变某一位后矩阵具有奇偶校验功能,输出Change b

14、it (i,j),其中i和j表示被改变的元素在矩阵中的行和列;如果还是不行,则应输出Corrupt.输入样例: 输出样例:4 OK1 0 1 0 Change bit (2,3)0 0 0 0 Corrupt1 1 1 10 1 0 141 0 1 0 0 0 1 0 1 1 1 10 1 0 141 0 1 00 1 1 01 1 1 10 1 0 10例9.3编码问题:设有一个数组A:ARRAY0.N-1 OF INTEGER;数组中存放的元素为0N-1之间的整数,且AIAJ(当IJ)时.例如:N=6时,有:A=(4,3,0,5,1,2),此时数组编码的定义如下:A0的编码为0,AI的编码

15、为:在A0,A1,.,AI-1中比AI小的值的个数(I=1,2,.,N-1).因此例子所组的数组的编码为:B=(0,0,0,3,1,2)请编一个程序解决以下问题:(1)给出数组A后,求出其编码B,(2)给出数组A的编码后,求出A中的原数据.例9.4有一个自然数,它的最末一个数是2,将2移到这个数的最前面后得到一个新数,此是新数恰好是原数的2倍,求原数是多少?第十讲 数制转换我们日常生活中使用的大多是十进制计数法,而在计算机科学中,还经常会出现二进制,八进制和十六进制计数法.这一讲我们将学习一些常用的进位计数制和它们之间相互转换的方法.一.进位计数制1.十进制数十进制数有十个基数,即0,1,2,

16、3,4,5,6,7,8,9.十进制数是逢十进位.2.二进制数二进制数有两个基数,即0,1.二进制数是逢二进位.3.八进制数八进制数有八个基数,即0,1,2,3,4,5,6,7.八进制数是逢八进位.4.十六进制数十六进制数有十六个基数,即0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.十六进制数是逢十六进位.以下是二进制,十进制和十六进制数码转换表: 二.各种数制之间的转换1.R进制数转化成十进制数.把任意R进制数转化成十进制数的方法是:将这个R进制数按权展开求和,所得的结果即为对应的R进制数.(11011)2=1*24+1*23+0*22+1*21+1*20=16+8+2+1=

17、(27)10(123)8=1*82+2*81+3*80=64+16+3=(83)10(1AB)16=1*162+10*161+11*160=256+160+11=(427)102.十进制数转换成R进制数将十进制数转换成R进制数的一种常用方法是:除以R取余法.例如,将(123)10转换成二进制数. 余数 2 | 123 .1 转换后的低位数 - 2 | 61 . 1 - 2 |30 . 0 - 2 |15 . 1 - 2 | 7 .1 - 2| 3 . 1 - 1 转换后的高位数结果:(123)10=(1111011)2十进制 十六进制 二进制 0 0 0 1 1 1 2 2 10 3 3 11

18、 4 4 100 5 5 101 6 6 110 7 7 111 8 8 1000十进制 十六进制 二进制9 9 100110 A 101011 B 101112 C 110013 D 110114 E 111015 F 111116 10 10000 二.各种数制之间的转换1.R进制数转化成十进制数.把任意R进制数转化成十进制数的方法是:将这个R进制数按权展开求和,所得的结果即为对应的R进制数.(11011)2=1*24+1*23+0*22+1*21+1*20=16+8+2+1=(27)10(123)8=1*82+2*81+3*80=64+16+3=(83)10(1AB)16=1*162+1

19、0*161+11*160=256+160+11=(427)102.十进制数转换成R进制数将十进制数转换成R进制数的一种常用方法是:除以R取余法.例如,将(123)10转换成二进制数. 余数 2 | 1 2 3 1 转换后的低位数 2 | 6 1 1 2 | 3 0 0 2 |1 5 1 2 | 7 1 2| 3 1 1 转换后的高位数结果:(123)10=(1111011)2习题:1.归并有序表: A和B是两个已经按从小到大排列好的有序表,编程由这两个子表中的元素归并得到一个新的有序表C。2.1987乘幂的尾数:M和N是自然数,NM=1,而1987.M与1987.N的末三位数相同,求最小的M和

20、N。分析:(1) 本题只须记录1987的乘幂的末三位数,故不必高精度计算; (2) 用数组a1.n存储1987的1至n次幂的末三位数; (3) n的初始值为2,计算1987的n次幂的末三位数,并和1987的1至n-1次幂进行比较,若无相等的,则n=n+1,重复(3);否则,第一次找到相等的,即是所求的m,n值。3.求序列的第300项: 把所有3的方幂及互不相等的3的方幂和排列成一个递增序列:1,3,4,9,10,12,13,.,求这个序列的第300项。分析:本题可以用一个线性表来记录这个递增的序列,通过递推可以将整个序列构造出来。方法如下: (1)数组a存放线性表,t为尾指针,b存放3的幂,初

21、始时t=1,b=1; (2)将b放入表尾,尾指针加1;atb;tt+1; (3)将b依次与1至t-1的元素相加,按顺序放入表尾; (4)重复(2),(3),直至第300项放入表中。4.迷宫问题:下图是一个6*8的迷宫,其中阴影部分表示不能通行的中径,要求寻找从从上角的起点到右下角终点的一条最短的路径.第十二讲 图及图的最短路算法一.图及其存储结构图是另一种有层次关系的非线性的数据结构.在日常生活中有图的许多实例,如铁路交通网,客运航空线示意图,化学结构式,比赛安排表等.下面的几个例子都可称为图.在实际运用中,我们可以用图来表示事物间相互的关系, 从而根据需要灵活地构建数学模型.例如:图(A),

22、可以用点来表示人,如果两个人相互认识,则在表示这两个人的点之间连一条线.这样从图中我们就可以清楚地看到,这些人之间相互认识的关系.图(B):可以用点表示城市,若两城市间有连线则表示可在这两城市架设通信线路,线旁的数字表示架设这条线路的费用.图(C):4个点表示4支足球队, 它们进行循环比赛,若甲队胜乙队,则连一条由甲队指向乙队的有向线段. 在上面三个例子中,(A),(B)又可称为无向图,(C)称为有向图,其中(B)是一个有权图.图的一种常用存储方式是邻接矩阵法.邻接矩阵是用一个二维数组表示图的有关信息,比如图A的邻接矩阵为:在邻接矩阵中,第i行第j表示图中点i和点j之间是否有连线,若有则值为1

23、,否则为0.比如说:点v1和v2之间有连线,则矩阵的第一行第二列的值为1.而矩阵的第四行行三列的值为0说明图中点v4和v3之间没有连线.图A是一个无向图,它的邻接矩阵是一个关于主对角线对称的矩阵.而有向图的邻接矩阵则不一定是对称的.比如图C 的邻接矩阵为: 二.图的最短路算法例12.1下图是一个铁路交通图的例子.图中的顶点表示车站,分别用1,2,.,6编号,两个点之间的连线则表示铁路线路,而线旁的数字则表示该条线路的长度.要求编一个程序,求出任意两个车站之间的最短路径.这里介绍一种编程简单的算法Floyd算法,算法中应用了动态规划的思想.令Dk(i,j)表示将第1,2,.,k个点作为中间点考虑

24、进来后点i到点j的最短路径的长度,而A(i,j)表示点i与点j之间直接通路的路长,我们有以下关系成立: Dk(i,j)=MinDk-1(i,j),Dk-1(i,k)+A(k,j)当k取到N时,DN(i,j)即为点i到点j之间的最短路的长度.例12.2流动书店:某市的几所学校联合起来,准备合资兴建一间流动书店,当某学校需要购书时,流动书店的流动售书车可以马上出发开往该校.为了节约开支,这几所学校决定把流动书店建在某所学校内,并且为了使书以尽快运到其他学校,流动书店所在的学校距最远的一所学校的距离要尽可能地短.你的任务是编写一个程序,对于给出的某些学校间的距离,把适合建流动书店的学校找出来.输入:学校间的距离通过一个文本文件H08.DAT读入.文件的第一行是一个正整数N(1Nn时,要么“大头”吃的果子数小于k,要么有的组未吃到果子。反之,如果k+m-1n,九龙头必能按照题意要求吃尽n个果子。由于“大头” 吃的果子

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

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