NOIP(全国青少年信息学奥林匹克联赛)复习Pascal.ppt_第1页
NOIP(全国青少年信息学奥林匹克联赛)复习Pascal.ppt_第2页
NOIP(全国青少年信息学奥林匹克联赛)复习Pascal.ppt_第3页
NOIP(全国青少年信息学奥林匹克联赛)复习Pascal.ppt_第4页
NOIP(全国青少年信息学奥林匹克联赛)复习Pascal.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、复习回顾,基本结构,顺序结构,选择结构,循环结构,过程和函数,标准类型,整型integer0-23678,实型real两种表示:小数表示法、科学表示法,字符型char如:a、A、,布尔型boolean如:真true假false,文件类型file,常量:指在程序执行过程中值不能改变的量。,变量:指在程序执行过程中值可以改变的量。,表达式和函数:,常量的说明:如:圆周率Constpi=3.14;,注意:变量必须先说明再使用!变量说明:VARx:integer;,算术运算符:div(整除)34div5=6mod(取余)34mod5=4,常用函数:,函数名,功能,举例,Abs(x),求变量的绝对值,Abs(-5.4)=5.4,Sqr(x),求变量x的平方,Sqr(2)=4,Sqrt(x),求变量x的平方根,Sqrt(4)=2,Chr(x),取ASCII码的值,Chr(48)=0,Ord(x),取字符的ASCII值,ord(A)=65,Trunc(x),截尾函数,Trunc(1.99)=1,Round(x),舍入取整,Round(-3.9)=-4round(-3.1)=-3Round(3.9)=4round(3.1)=3,pred,前导函数,Pred(2)=1pred(b)=a,succ,后继函数,Succ(1)=2Succ(a)=b,表达式,1、写出一个整数被3整除所得余数的表达式。,xmod3,2、写出计算圆的周长表达式。,2*pi*r,3、将任一大写字母转换成小写字母。,Chr(ord(x)+ord(a)ord(A),4、写出表示年龄大于50岁的表达式。,N50,5、写出一个数既能被3整除又能被5整除的表达式。,(xmod3=0)and(xmod5=0),基本语句:,一、赋值语句变量:=表达式;,功能:先计算后赋值,二、输入语句read/readlnread(变量1,变量2,。)readln(变量1,变量2,。),功能:依次从键盘上读入数据。,三、输出语句write/writeln,write(变量1,变量2,。)writeln(变量1,变量2,。),例:从键盘输入两个数,交换后输出。,Programex_1(input,output);vara,b,c:integer;beginwriteln(请输入两个数:);read(a,b);c:=a;a:=b;b:=c;writeln(交换后的值是:,a:5,b:5)End.,程序首部,说明部分,语句部分,运行:请输入两个数:,34,交换后的值是:43,例:从键盘输入一个三位数,分离出百位、十位和个位并输出。,Programex_2(input,output);varx,ge,shi,bai:integer;beginwriteln(请输入一个三位数:);read(x);ge:=xmod10;bai:=xdiv100;shi:=(x-bai*100)div10;writeln(bai=,bai,shi=:10,shi,ge=:10,ge)End.,程序首部,说明部分,语句部分,运行结果:请输入一个三位数:,836,bai=8shi=3ge=6,四、选择结构的程序设计,格式一:If条件then语句1;,格式二:If条件then语句1else语句2;,格式一功能:如果条件成立则执行then后的语句1,否则执行该条件语句的下一条语句。,格式二功能:如果条件成立则执行then后的语句1,否则执行else后的语句2。,例:输入一个数X,要求不使用ABS函数,输出其绝对值。,分析:首先输入一个数给X,然后判断X是否小于0,如果是则(-X)为X的绝对值,否则输出X。,Programex_3(input,output);varx:real;beginreadln(x);ifx0thenwriteln(-x)elsewriteln(x)End.,例4、将输入的两个非负实数中较大的放在max里,小的放在min里,并输出。,算法:(1)输入两个数max,min(2)判断max是否小于min,如果小于min,则交换max和min的值,(3)输出max,min的值,Programex_4(input,output);varmax,min,t:real;beginread(max,min);ifmaxminthenbegint:=max;max:=min;min:=tend;writeln(max,min)End.,If语句嵌套,在格式一或格式二中,当语句1或语句2本身也是一个条件语句时,称该语句为条件语句嵌套。,注意:1、else语句总是和与它最近的那个还没有其他的else配对的if/then配对。如果内层的else子句要省,则写一个空语句或采用复合语句,即增加语句括号。,2、在书写程序时采用缩进式,以增强程序的可读性。,Case语句,Case表达式of常数表1:语句1;常数表2:语句2;。常数表n:语句n;Else语句n+1End;,表达式为有序类型,整型、布尔型、字符型,例5:输入两个数(不为0)及一个算术运算符,输出其运算结果。,Programex_5(input,output);varx,y,s:real;ch:char;beginwriteln(请输入x、y以及运算符:);readln(x,y);readln(ch);casechof+:s:=x+y;-:s=x-y;*:s=x*y;/:s=x/yend;Writeln(x,ch,y,=,s)end.,例6、打印某年某月有几天。,分析:某年某月的天数分为这几种情况:(1)每年的1,3,5,7,8,10,12这七个月每月为31天。(2)每年的4,6,9,11这四个月为30天;(3)2月又分为两种情况:闰年为29天,否则为28天。,判断闰年的条件:年数能被4整除,并且不能被100整除,但可以被400整除的年份为闰年。(yearmod4=0)and(yearmod1000)or(yearmod400=0),Programex_6(input,output);varyear,month,len:integer;beginwriteln(inputyearandmonth);readln(year,month);,Casemonthof1,3.5,7,8,10,12:len:=31;4,6,9,11:len:=30;2:beginif(yearmod4=0)and(yearmod1000)or(yearmod400=0)thenlen:=29elselen:=28endEnd;Writeln(len);End.,循环结构,一、计数循环,For控制变量:=初值to终值do,循环体语句;,For控制变量:=初值downto终值do,循环体语句;,控制变量为有序类型,执行过程:(1)先将初值赋值给控制变量;(2)比较控制变量与终值,如果超过则不执行循环体中的语句,结束循环;(3)否则执行循环体中的语句;(4)将控制变量的后继值赋给控制变量;(5)从(2)开始重复。,循环的执行次数为:|终值-初值|+1,例7:计算1+2+3+100之和。,Programex_7(input,output);varI,s:integer;begins:=0;forI:=1to100dos:=s+I;writeln(s);End.,循环体,循环执行次数为:(100-1)+1=100,执行结果为:5050,执行过程:,I,s初值为0,输出,1,0+1=1,s=s+I,=100,初值为1,终值100,2,=100,1+2=3,3,=100,3+3=6,99,=100,4851+99=4950,100,=100,4950+100=5050,5050,101,条件不成立退出循环,例8、编程找出四位整数abcd中满足下述关系的数:(ab+cd)(ab+cd)=abcd,分析:由题意知:abcd是个四位数,故其范围是:1000-9999,然后对每一个数看它的高两位和低两位数和的平方是否与该数相等。,分离高两位和低两位的方法是:,高位:ab=abcddiv100低位:cd=abcdmod100,Programex_8(input,output);varI,m,n,k:integer;beginforI:=1000to9999dobeginm:=Idiv100;n:=Imod100;k:=(m+n)*(m+n);ifk=Ithenwriteln(符合条件的四位整数是:,I)end;end.,本题采用穷举法,又叫枚举法,当型循环,While布尔表达式do语句,执行过程:先求布尔表达式的值,当其值为真时,重复执行指定语句;当其值为假时,终止循环。,注意:为了能使while循环正常终止,一定要有一条能改变布尔表达式值的语句,让表达式的值为假,从而使循环结束。,Programex_9(input,output);varx:integer;beginx:=1;whilex=ythenx:=ym:=m+1;untilm=n-1;writeln(n,个数中最大的是:,x);end.,多重循环:循环套循环,ForI:=初值1to终值1dobeginforj:=初值2to终值2dobeginend;end;,外循环,内循环,外循环体,内循环体,注意:1、循环次数为(|终值1-初值1|+1)*(|终值2-初值2|+1),2、外循环变化一次,内循环要从初值变化到终值一次。,例12、求100-999中的水仙花数。(如三位数abc=a3+b3+c3,则称abc为水仙花数。,用三重循环编程序:,Programex_12(input,output);vara,b,c:integer;beginfora:=1to9doforb:=0to9doforc:=0to9doifa*a*a+b*b*b+c*c*c=a*100+b*10+cthenwrite(a*100+b*10+c:6);readln;end.,运行结果:153370371407,例13四个学生上地理课时,回答我国四大淡水湖大小时这样说。甲说:“最大洞庭湖,最小洪泽湖,鄱阳湖第三”;乙说:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三”;丙说:“最小洪泽湖,洞庭湖第三”;丁说:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三”。其中每个学生仅答对一个,请编程确定湖的大小。,分析:本题为逻辑判断题,每个湖的大小不一样,所以分别用1、2、3、4表示它们的各自的大小。用四重循环来进行列举,然后再分别对他们所说的话作判断即可。,programex_13(input,output);vardong,hong,bo,tai:integer;beginfordong:=1to4doforhong:=1to4doifhongdongthenforbo:=1to4doif(hongbo)and(dongbo)thenbegintai:=10-dong-hong-bo;if(ord(dong=1)+ord(hong=4)+ord(bo=3)=1)and(ord(hong=1)+ord(dong=4)+ord(bo=2)+ord(tai=3)=1)and(ord(dong=3)+ord(hong=4)=1)and(ord(bo=1)+ord(tai=4)+ord(hong=2)+ord(dong=3)=1thenwriteln(dong:,dong,hong:,hong,bo:,bo,tai:,tai);end;end.,运行结果:dong:2hong:4bo:1tai:3,甲说:“最大洞庭湖,最小洪泽湖,鄱阳湖第三”;,程序如下:,例14用5元钱买100只纽扣,其中金属纽扣每只5角,有机玻璃和每只1角,小揿扣1分钱买3个,编程求出各种纽扣各买了多少只?,分析:用x、y、z分别表示金属纽扣,有机扣,揿扣的只数,依题意可得:,X+y+z=100(1),50X+10y+z/3=500(2),这是一个不定方程组,一般有多组解。由方程(1)可知X,Y,Z的范围,它们分别为:1x1001y1001x100,(2)式转化为:150X+30y+z=1500,Programex_14(input,output);varx,y,z:integer;beginforx:=1to100dofory:=1to100doforz:=1to100doif(x+y+z=100)and(150*x+30*y+z=1500)thenwrite(金属扣:,x,有机扣:,y,揿扣:,z)end.,用三重循环编程,程序如下:,法II在法I的基础上改进,由方程(2)可知1x10、1y50循环次数:10*50*100=50000次,是法I的5%,运行时间缩短了很多。,法III在法II的基础上可以将方程(1)改为:z=100-x-y,这样可以减少一重循环。使程序的运行时间变得更短。,Programex_14c(input,output);varx,y,z:integer;beginforx:=1to10dofory:=1to50dobeginz:=100-x-y;if(150*x+30*y+z=1500)thenwrite(金属扣:,x,有机扣:,y,揿扣:,z)end;end.,缩短多重循环的运行时间的改进方法是:(1)缩小终值与初值的距离(2)减少循环嵌套的层数,例15已知faibonacci(费波那契数列)的前几个数分别为0,1,1,2,3,5,编程求此数列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论