欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第一讲Pascal语言基础知识ppt课件.ppt

    • 资源ID:2107586       资源大小:184.50KB        全文页数:81页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第一讲Pascal语言基础知识ppt课件.ppt

    第一讲 Pascal语言基础,信息学奥赛的内容:程序=计算机语言+数据结构+算法,Free Pascal或delphi C+等,信息学奥林匹克竞赛属于智力与应用计算机解题能力的比赛,题目有相当的难度,解好这类题目,需要具备很强的综合能力1、观察和分析问题的能力;2、将实际问题转化为数学模型的能力;3、灵活地运用各种算法的能力;4、熟练编写程序并将其调试通过的能力;5、根据题目的要求,自己设计测试数据,检查自己的解法是否正确、是否完备的能力 能够参加信息学竞赛的选手应该具有很强的自学能力,需要学习有关组合数学、图论、基本算法、数据结构、人工智能搜索算法及数学建模等知识,还要学会高级语言和编程技巧,要具备很强的上机操作能力,考察的能力:,选手应具备的条件:前提:综合成绩突出1、扎实的数学基础。2、很强的自学能力。3、与同学之间的密切友好的合作与交流。4、持之以恒,坚持不懈的学习。5、耐得住枯燥与寂寞。6、不能以参加竞赛为理由而耽误了其他文化课的学习。,程序的基本结构,程序的上机调试和运行,语言基础一,例1:要将一张100元的大钞票,换成等值的10元、5元、2元、1元一张的小钞票,每次换成40张小钞票,每种至少1张。如,有一种换法:10元:9 张5元:1 张2元:2 张1元:1 张问:一共有多少种换法。,程序的上机调试和运行,program ex1;var x1,x2,x3,x4,n:integer;begin n:=0;for x1:=1 to 10 do for x2:=1 to 20 do for x3:=1 to 50 do for x4:=1 to 100 do if(10*x1+5*x2+2*x3+x4=100)and(x1+x2+x3+x4=40)then n:=n+1;writeln(n);end.,例2、已知:s=1+1/2+1/3+1/n求:使s的值大于10时最小的n。,var s:real;n:integer;begin s:=0;n:=0;while s=10 do begin n:=n+1;s:=s+1/n;end;writeln(n);end.,例3、编一个程序,从键盘输入一个真分数的分子和分母,输出它的小数形式,精确到小数点后1000位。,var n,m,r,q,i:integer;begin read(n,m);r:=n;write(0.);i:=1;while i=1000 do begin q:=10*r div m;r:=10*r mod m;write(q);i:=i+1;end;end.,上机调试运行步骤:,1、运行:Free Pascal2、filenew:新建文件3、compilemake:编译,找错误。4、run run:运行5、debugoutput:察看结果,program 程序名;可以省略var 变量说明;begin语句;语句;语句;end.,Pascal程序的基本结构,程序的基本结构,从这个简单的程序可以看到:一个PASCAL程序分为两个部分:程序首部和程序体。程序首部 程序首部是程序的开头部分,有保留字program后接程序名及程序参数表组成,由分号结束。程序名是用户自己定义的标识符,参数表一般是文件变量名,用于该程序与外界的数据交流。最常用的参数为input和output。在turbo pascal语言中,首部中的参数表可以省略,首部也可省略。程序体 程序体是程序的主体部分,由说明部分和执行部分两部分组成。说明部分:用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中第二行是变量说明,用来定义变量的名称、类型。PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称说明)。也就是说,不允许未说明先使用。执行部分:以begin开始,以end结束,其间有若干个语句,语句之间以分号隔开。一条语句执行一定的功能,所有语句完成程序设计的任务。允许一行写多个语句,也允许一个语句写几行,最后一行的end后加一.号表示结束。,2、完整的pascal程序框架:,program 程序名(程序参数表);label 标号说明;const 常量说明;type 类型说明;var 变量说明;function 函数说明;procedure 过程说明;begin 程序语句1;程序语句n;end.,程序首部,程序体,说明部分,执行部分,知识预备 基本符号、保留字、标识符一、变量的定义说明:二、Pascal数据类型(整型、实型)三、基本语句(赋值语句、输入语句read、输出语句write)四、算术运算符和算术表达式五、标准函数(数值型函数),语言基础一,基本符号、保留字、标识符,1基本符号:是ASCII字符集,主要有:26个英文字母(不分大小写,字符串中的字母例外。十个数字符号。特殊符号+-*/=():=.,;:.,2保留字:保留字是指pascal语言中一些有特殊含义的英文单词,它们已被pascal语言自己使用,都有专门的用途。Pascal 语言中保留字有36个,可分为以下六种类型:程序、函数、过程的符号:program,function,procedure 说明部分的专用定义符号:array,const,file,label,packed,var,record,set,type,of 语句专用符号:case,do,downto,else,for,goto,if,repeat,then,to,until,while,with,forward 运算符号:and,div,in,mod,not,or 分隔符号:begin,end 空指针常量:Nil7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE(fp新增保留字),3.标识符:标识符是以字母开头的字母数字序列(大小写等效,可跟下划线_),用来标识常量、变量、程序、函数等。Pascal中允许的标识符的有效长度为63。标识符分为两大类:标准标识符:标准常量:false,true,maxint(32767)标准类型:integer,real,char,boolean,text 标准文件:input,output 标准函数:abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,pred,round,sin,sqr,sqrt,succ,trunc 标准过程:get,new,pack,page,put,read,readln,reset,rewrite,unpack,write,writeln 自定义标识符 由用户自己在程序首部或说明部分进行定义,但要注意以下几点:不能与保留字同名;避免与标准标识符同名;最好有一定的含义,增加程序的可读性。例如:在程序中如用到数学中的,则在定义该常量时可用PI表示。,一、变量的定义说明:在程序中用到的所有变量必须事先定义。格式:Var:;:;,如:输入3个整数,求这3个数的平均值。Var a,b,c:integer;aver:real;,说明:1)、同一类型的变量可以放在一起,也可分开写,不同类型的不能放在一起。2)、变量名:可以是一个字母,也可以是多个字母和数字的组合,但字母开头。3)、不能重复定义变量。,二、Pascal数据类型,整型、实型、(字符型和布尔型),1、整型,类型数值范围 占字节数 Byte 0.255 1 Word 0.65535 2 Shortint-128.127 1 Integer-32768.32767;2 Longint-2147483648.2147483647 4 Longword 0.4294967295 4 Int64-9223372036854775808.9223372036854775807 8 QWord 0.18446744073709551615 8,2、实数 类型 范围 有效位数 占用字节 Real 2.9e-39.1.7e3811.12 6 Single 1.5E-45.3.4E38 7-8 4 Double 5.0E-324.1.7E308 15-16 8 Extended 1.9E-4951.1.1E4932 19-20 10 Comp-2E64+1.2E63-1 19-20 8,Var begin read(a,b);c:=a*b;d:=a/b;writeln(c);writeln(d);End.,?,例:输入:两个整数a、b(=3000),输出它们的乘积c,商d。,实数的定点型格式输出:实数表达式:域宽:小数位数T=63.123write(t);6.312300000000E+01write(t:6:2);63.12write(t:6:5);63.12300如果要求小数点后精确2位小数.Writeln(x:0:2);,a,b:integer;c:longint;d:real;,1、赋值语句赋值语句是最简单的语句.1)、赋值语句的格式 变量名:=表达式;其中“:=”称为赋值号。2)、执行过程 计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。如:A:=(9*8)-(2-1);A:=A+1,三、基本语句,、输入语句read和readln功能:从键盘读入数据项,并把它存到变量中去,使该数据能在以后的计算中使用。输入语句的一般形式为:read(v1,v2,vn);readln(v1,v2,vn);从键盘逐次读入数据,分别赋给变量v1,v2,vn,一行输入多个变量值时,要求数据之间用空格分隔,readln语句要求输入数据后必须回车,使得后继操作从下一行的头上开始。,read语句与readln语句区别是:1)read语句是一个接一个地读数据,在执行完本Read语句(读完本语句中变量所需的数据)后,下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。如:Read(a,b);Read(c,d);Read(e);如果输入数据行如下:123 456则a,b,c,d,e的值分别为1,2,3,4,5,如果后面无读语句则数据6是多余的,这是允许的。,Readln则不同,在读完本Readln语句中变量所需的数据后,该数据行中剩余的数据多余无用,或者说,在读完本Readln语句中变量所需数据后,一定要读到一个回车,否则多余的数据无用。设有下列语句:read(a,b,c);readln(d,e);readln;readln(f,g);其中,所有变量均为整型。设输入的数据如下:12 345678 910 11 12 13,Var a,b,c,d,e,f,g:integer;begin read(a,b,c);readln(d,e);readln;readln(f,g);writeln(a,b,c,d,e,f,g);end.,2)readln语句与read语句的第二个区别是:read 后一定要有参数表,readln可以不带参数表,即可以没有任何输入项,只是等待读入一个换行符(回车)。经常用于暂停程序的运行,直到输入一个回车,输出语句write和writeln功能:把程序计算的结果,按适当的形式输出到屏幕。1)、write语句格式Write(表达式1,表达式2,);如:write(x,5,a+b);write(My name is Liping);2)、writeln语句格式:Write(表达式1,表达式2,)或writeln,Write语句与writeln语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于:write语句将其后括号中的表达式一个接一个输出后,没有换行。而writeln语句则在输出各个表达式的值后换行。例如以下两个程序段的输出分别为:write(1,2,3,4);write(5,6);输出为:123456 writeln(1,2,3,4);write(5,6);输出为:1234 56,实数的输出格式实数(real)以浮点型格式输出。例如805.67对应的浮点数为8.056700000000E+02。这种实数表达方式很不方便。我们可以通过下述形式强迫实数以定点型格式输出:实数表达式:域宽:小数位数例如,t的值设为63.123。下面三条输出语句分别有它们右边所示的输出格式:write(t);6.312300000000E+01 write(t:6:2);63.12 write(t:6:5);63.12300 write(t:0:0);,vara,b,t:integer;begin read(a,b);t:=a;a:=b;b:=t;writeln(a=,a,b=,b)end.,例:输入两个整数a,b,交换他们的值,并输出.如:输入:30 34 输出:34 30,四、算术运算符和算术表达式,1.算术运算符运算符运算运算对象结果类型+加 整型、实型只要有一个运算对象是实型,结果就-减 整型、实型是实型,如果全部的运算对象都是整*乘 整型、实型型并且运算不是除法,则结果为整型/除 整型、实型若运算是除法,则结果是实型。div 整除整型整型mod取余整型整型,2、表达式是通过运算符把常量、变量、函数调用结合起来组成的。3+x1+b,上机练习题目:输入一个3位的正整数,输出他们的各位数字之和与乘积。如:输入:436输出:1372,五、标准函数,+a-b,算术函数函数标识符 自变量类型 意 义结果类型abs整型、实型绝对值同自变量sqrt 整型、实型平方根实型 int 整型、实型整数部分实型 exp整型、实型指数实型 ln 整型、实型自然对数实型 sqr 整型、实型平方同自变量 cos 整型、实型余弦实型 sin 整型、实型正弦实型 arctan 整型、实型反正切实型 frac 整型、实型小数部分实型,abs(-4)=4abs(-7.49)=7.49int(-3.71)=-3.0 sqrt(4)=2 Sqr(2)=4,正确的书写表达式:1)、,2)、xy3)、,2,上机练习1、输入三角形的三条边a,b,c,输出三角形的面积。(a,b,c是正整数100,满足三角形条件),上机练习2,vara,b,t:integer;begin read(a,b);t:=a;a:=b;b:=t;writeln(a=,a,b=,b)end.,例:输入两个整数a,b,交换他们的值,并输出.如:输入:30 34 输出:34 30,上机练习3,输入一个3位的正整数,输出他们的各位数字之和与乘积。如:输入:436输出:1372,程序的三种基本结构,一、顺序结构,二、选择结构(if、case),三、循环结构(for、while、repeat),例:输入三角形的三条边a,b,c,输出三角形的面积。(a,b,c是正整数100,满足三角形条件),一、顺序结构,var a,b,c:integer;p,s:real;begin readln(a,b,c);p:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c);writeln(s:0:2);end.,程序从第一句开始,依次顺序执行语句直到结束,中间无分支和循环,这种程序结构称为顺序结构,Readln(a,b,c)读入边长,求p,求s,输出面积s,流程图,改进:输入三角形的三条边a,b,c,如果能构成三角形则输出三角形的面积;如果不能构成三角形则输出”No answer”.,readln(a,b,c)读入边长,a,b,c能否构成三角形?,求p,s,输出面积,输出:No answer,YES,NO,var a,b,c:integer;p,s:real;begin readln(a,b,c);if(a+bc)and(a+cb)and(b+ca)then begin p:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c);writeln(s:0:2);end else writeln(No answer);end.,无“;”,二、选择结构1if 语句:功能:执行过程说明:1)该语句为一个语句;2)条件是一个布尔表达式或一个布尔变量,then 和else后的语句可以是单个语句,当需要多条语句时,用begin和end括起来构成复合语句。3)当布尔表达式的值为真,则执行then后面的语句,值为假时有两种情况:要么什么也不做,要么执行else后面的语句。注意:else前面没有分号.,格式一:if then;,格式二:if then else;,逻辑、算术、关系运算符的运算次序:函数、not括号*、/、div、mod、and+、-、or、=、,补充,例1:输入一个整数,判断他的奇偶性。(是偶数输出“”,奇数输出“”)。,方法一:Var a:integer;Begin readln(a);If a mod 2=0 then writeln(yes);if a mod 2 0 then writeln(no);End.,方法二:Var a:integer;Begin readln(a);If a mod 2=0 then writeln(yes)else writeln(no);End.,无“;”,例2:已知方程:ax2+bx+c=0输入系数a,b,c,a0,输出方程的解(考虑各种情况)。保留两位小数。(1):如果无实数解输出:no answer;(2):相同的实数解:输出一个即可。(3):两个不同的实数解:分别输出。如:,输入:1 3 2输出:X1=-1.00X2=-2.00,输入:2 1输出:X=-1.00,var a,b,c:integer;d,x1,x2:real;begin readln(a,b,c);d:=b*b-4*a*c;if d0 then begin x1:=(-b+sqrt(d)/(2*a);x2:=(-b-sqrt(d)/(2*a);writeln(x1=,x1:0:2);writeln(x2=,x2:0:2);end;end.,程序代码:program ex2(input,output):var a,b,c:integer;begin write(a,b,c(0):);readln(a,b,c);if(a+bc)and(a+cb)and(b+ca)then if(a*a+b*b=c*c)or(a*a+c*c=b*b)or(b*b+c*c=a*a)then writeln(a=,a,b=:5,b,c=:5,c,is rt triangle.)else writeln(a=,a,b=:5,b,c=:5,c,is not rt triangle.)else writeln(a=,a,b=:5,b,c=:5,c,is not triangle.)end.,【例3】:输入三角形的三边,判断它是否是直角三角形。,3case 语句:分情况语句(多分支语句)格式:case 表达式 of 常数表1:语句1;常数表2:语句2;常数表n:语句n;else 语句n+1 end;功能:执行过程说明:1)end 与case 对应 2)表达式的类型通常是整型、字符型 3)常量表是常量,其类型与表达式的类型要一致。常量表中的常量不能重复。,【例4】:输入两个数(均不为零)及一个算术运算符,输出其运算的结果程序代码:program ex3(input,output);varx,y,s:real;ch:char;begin writeln(input x writeln(x,ch,y,=,s)end.,三、循环结构,循环结构的三种形式:循环结构程序通常由三种的循环语句来实现。它们分别为 FOR循环、当循环while、直到repeat循环。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。因此,重复语句是由循环体及重复终止条件两部分组成。,1for语句,1for语句:(“计数循环”):就是将规定循环体重复执行的次数。格式:for 控制变量:=初值 to 终值 do 循环体语句;for 控制变量:=初值 downto 终值 do 循环体语句;2、for语句执行过程 先将初值赋给左边的变量(称为循环控制变量);判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤;如果末超过终值,则执行do后面的那个语句(称为循环体);循环变量递增(对to)或递减(对downt o);返回步骤;循环结束,执行for循环下面的一个语句。3、说明:1)初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须是整型、布尔型和字符型等顺序类型,不能为实型。2)递增按succ函数规律变化,递减按pred函数规律变化,整型按数值大小变化,如果为字符型量,按ASCII码表的顺序计算。3)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对控制变量进行赋值。4)当初值超过终值,不执行循环,循环次数为零。,【例1】:计算1+2+3+4+100之和。算法分析:对于求和,我们使用的是累加的办法。程序代码:program ex1(input,output);var i,sum:integer;begin sum:=0;for i:=1 to 100 do sum:=sum+I;writeln(sum=,sum)end.补充说明:类似sum迭加变量这样的功能称为“累加器”;类似i这样的变量称为“计数器”;“计数器”和“累加器”是在程序中经常使用的基本操作语句。,【例3】:键入一个自然数,输出其所有约数,计算出这些约数之和并输出。算法分析:解决这一问题的关键是找出约数,也就是判定一数能否被另一数整除。可以用x mod y=0,来找出所有约数。程序代码:program ex3(input,output);var i,x,y,sum:integer;begin write(x=);read(x);sum:=0;i:=0;for y:=1 to x do if x mod y=0 then begin write(y:8);i:=i+1;if i mod 5=0 then writeln;sum:=sum+y end;writeln(sum=,sum)end.,If语句,For语句,If语句作为For语句的循环体,【例4】:编程找出四位整数abcd中满足下述关系的数。(ab+cd)(ab+cd)=abcd算法分析:这道题属于搜索问题,因为是四位整数,其范围从10009999,所求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对每一个数,看它的高两位数与低两位数和的平方是否为该数。高两位数:abcd div 100=ab低两位数:abcd mod 100=cd程序代码:program ex4(input,output);var i,m,n,k:integer;begin for i:=1000 to 9999 do begin m:=i div 100;n:=i mod 100;k:=(m+n)*(m+N);If k=i then write(I:8)end end.补充说明:以上用的方法也叫“枚举法”,又称“穷举法”。它是用计算机解题的一种常用的办法。它的基本思路是:一一枚举各种可能的情况,并判断哪一种可能是符合要求的解。方法虽然很笨,然而与计算机高速的处理能力相结合,也不失为一种较有用的方法,2while语句:对于for循环有时也称为计数循环。适合用于事先知道循环次数.当循环次数未知,只能根据某一条件来决定是否进行循环时,用while 语句实现循环要更方便。(“当型循环”):当条件满足时反复执行循环体。格式:while 布尔表达式 do 语句;执行过程:while语句的执行过程为:判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;执行循环体语句(do后面的语句);返回步骤1;结束循环,执行while的下一个语句。说明:1)为了是while循环能正常终止,布尔表达式中的变量必须在循环体中的某语句中有所改变,即有可能是布尔表达式的值为假,使循环结束,否则将出现死循环。2)循环体中的语句一般是多条语句,用begin和end使其成为一条复合语句。,【例5】:输出1100之间的奇数。程序代码:program ex5(input,output);var x:integer;begin x:=1;while x100 do begin write(x:5);x:=x+2 endend.,【例6】:输入若干个字符,它的终止符是#,计算输入的字符中a(A)出现的次数。算法分析:设计数器i,置初值为0;出入字符;当字符不为#时循环:如果字符为a或A,则计数器加1;读入下一个字符;输出计数器的值,程序结束。程序代码:program ex6(input,output);var ch:char;i:integer;begin i:=0;read(ch);while ch#do begin if(ch=a)or(ch=A)then i:=i+1;read(ch)end;writeln(i=,i)end.,repeat语句:(“直到型循环”):反复执行循环体直到条件满足为止。格式:repeat 语句1;语句2;语句3;语句n until 布尔表达式;功能:执行过程:先执行指定的语句序列,然后判别表达式。,3 repeat语句:(“直到型循环”),说明:while语句和repeat语句都可以实现循环结构,但它们有四点不同:,【例7】:将例题6的程序用repeat语句改写。program ex7(input,output);var ch:char;i:integer;begin i:=0;repeat read(ch);if(ch=a)or(ch=A)then i:=i+1;until ch=#;writeln(i=,i)end.,【例8】:从n个数中挑出最大的数。算法分析:读入n值;读入第1个数,赋值给变量max;依次读入后n-1个数,与max比较,若数值大于max,则将此数值赋给max;输出最大数。程序代码:program ex8(input,output);var n,m,max,x:integer;begin writeln(input n:);read(n);writeln(input n nums:);read(max);m:=0;repeat read(x);if xmax then max:=x;m:=m+1 until m=n-1;writeln(the max num is:,max)end.,三、多重循环【例9】:求100999中的水仙花数。(若三位数abc,abc=a3+b3+c3,则称为水仙花数。如:153,13+53+33=1+125+27=153)算法设计:采用三重循环求解,用for循环。程序代码:program ex9(input,output);var a,b,c:integer;begin for a:=1 to 9 do for b:=0 to 9 do for c:=0 to 9 do if a*a*a+b*b*b+c*c*c=a*100+b*10+c then write(a*100+b*10+c:6);writelnend.,【例10】:试编写能打印如下输出图形的程序。程序代码:program ex10(input,output);var i,j,k:integer;begin for i:=6 downto 1 do begin for j:=1 to 6-i do write();for k:=2*i-1 downto 1 do write(#);writeln endend.,本讲要点,Pascal的程序结构基本符号、保留字、标识符数据类型、常量、变量及说明方法函数与表达式三种基本的程序结构 顺序结构 分支结构 循环结构,请讲例题上机练习,二、循环结构的综合练习,1、陶陶摘苹果(NOIP2009p)(apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。,【输入】第1行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。第2行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。【输出】输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。【样例输入】110100 200 150 140 129 134 167 198 200 111【样例输出】5,var h,x,sum,i:integer;begin sum:=0;readln(h);h:=h+30;for i:=1 to 10 do begin read(x);if x=h then inc(sum);end;writeln(sum);end.,2、灯的开关状态 有N个灯放成一排,从1到N依次顺序编号,开始时全部打开。有N个人也从1到N依次编号。1号人将灯全部关闭,2号人将凡是编号为2的倍数的灯打开;3号人将凡是编号为3的倍数的灯作相反处理(该灯如为打开的,则将它关闭;如关闭的,则将它打开)。以后的人都和3号人一样,将凡是自己编号倍数的灯作相反处理。编程实现:第N个人操作后,按顺序输出灯的状态。(1-表示灯打开,0-表示灯关闭)输入:n(n=100),灯的个数,输出:灯的状态,01序列,中间无空格。样例:输入:2输出:01,var n,m,i:integer;begin readln(n);for i:=1 to n do begin m:=trunc(sqrt(i);if m*m=i then write(0)else write(1);end;end.,编号i的灯的操作次数等于因数个数,只有完全平方数的因数个数为奇数.所以判断第i个灯的状态:如果i是完全平方数则状态为0,否则为1.,算法分析:,有多少盏灯关闭?,结论:编号为i的灯经过偶数次操作为1,奇数次操作为0.,先分析:编号为4、5、8、15、25、32、36灯最后的状态,3、津津的储蓄计划(NOIP2004T)(save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。,津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的前,不够这个月的原定预算。如果出现这种情况,津津不得不在这个月省吃俭用,压缩预算。现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。【输入文件】输入包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。【输出文件】输出一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X 表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。,【样例输入 1】29023028020030017034050908020060【样例输出 1】-7,【样例输入 2】29023028020030017033050908020060【样例输出 2】1580,Const m=300;Var save,left,x,i:integer;begin left:=0;save:=0;for i:=1 to 12 do begin read(x);if xm+left then begin writeln(-i);exit;end;,if m+left-x=100 then begin save:=save+100*(m+left-x)div 100);left:=(m+left-x)mod 100;end else left:=m+left-x;end;writeln(1.2*save+left:0:2);end.,

    注意事项

    本文(第一讲Pascal语言基础知识ppt课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开