




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中学信息学奥林匹克竞赛培训教程Pascal语言和程序设计基础(第一部分)第一部分 Pascal语言和程序设计基础预备知识基本程序结构和几个概念::标识符 保留字 常量 变量 运算符 表达式 标准数据类型Pacal语言程序结构Program prog_name;var 变量申明;begin 程序体;end.例如:program pname;const n=4;type arr=array 1.4 of integer;var i:integer; a
2、:arr;beginfor i:=1 to n do read(ai);readln;for i:=n downto 1 do write(ai:4);writeln;end.以上是一个PASCAL程序。从键盘读入4个数据,逆序输出。一般来说,一个PASCAL程序包括以下几个部分:程序头:program pname; 其中,program是保留字,表示程序从这个地方开始,pname是标识符,是程序的名字,可由程序员自定。保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。如上,“program”就有“程序从这里开始”这样一种特别的意义,而“co
3、nst”就有“常量说明从这里开始”的意义。我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是以字母开头的字母数字串,其长度最大为8个字符。用来表示常量、变量、类型、文件、过程、函数和程序的名字。如“pname”、“i”、“j”、“a1”就是合法的标识符;但“1a”、“#a”是非法的标识符。有一点要注意的是,在PASCAL中,字母除了作为字符值或字符串值之外,其大小写是无关的。如标识符“A1”和“a1”在PASCLA看来是同一标识符。在PASCAL中除了保留字和自定义的标识符外,还有一类有特殊含义的标识符,这类标识符称为标准标识符。它们是用来标记程序中经常引用的
4、处理对象,如常量、函数。(PASCAL定义的保留字和标准标识符附后) 标识符在命名的时候要注意:1、名字要易记易读,有意义。如8皇后问题程序名可以是“queen”也可以是“huanghou”等;2、不能用保留字、标准标识符作为自定义的标识符。说明部分:const n=4;type ar=array 1.4 of integer;var i:integer; a:ar;其中,const部分是常量说明,说明一些在以下部分用到的,在整个程序执行过程不改变值的量。这些量PASCAL称为常量。在程序中用到这个值的地方均用常量名来代替。如上题中定义“n=4”指本程序处理4个数值,在下面的程序体中就用“n”
5、来代替具体的值(如for i:=1 to n)。如果要改变处理数据个数,则只在常量说明部分修改“n=4”这一句就行了,而不用在程序中每一个用到的地方都加以修改。这样不但在编写程序的时候很方便,也增加了程序的可读性,修改时更方便。常量说明在保留字“const”下开始。可以有多个语句。常量说明语句的格式是:“常量名=值;”。如“n=4;”。n是常量名,4是该常量的值,“;”是语句分隔符。type部分是类型说明,说明一些在以下部分用到的数据类型。如数组、记录、指针等。类型说明在保留字“type”下开始。可以有多个语句。类型说明语句的格式是:“类型名=类型说明;”。如“ar=array 1.4 of
6、integer;”。ar是类型名,array 1.4 of integer是类型说明,“;”是语句分隔符。var部分是变量说明。变量是指在程序执行过程中可以通过赋值语句或读语句来改变值的量。所有在程序中使用的变量都应该先在变量说明部分说明。PASCAL中引用的每个变量都有“名字”和“类型”属性。变量说明“说明”的主要工作是告诉PASCA下面程序中要用到这个名字的量,同时这个量的类型是什么。变量说明在保留字“var”下开始。可以有多个语句。变量说明语句的格式是:“变量名:变量类型;”。其中,如果有多个变量同一类型,则变量名与变量名之间用逗号分隔,变量名与变量类型之间用冒号分隔。如“i:integ
7、er;”(i是变量名,integer是类型名)、“i、j:integer;”(i、j是变量名,integer是类型名)变量说明要注意:1、有效变量名称不能大于8个字符;2、变量名称必须以字母开头;3、在同一个有效范围内变量名称必须唯一。各个说明部分均以该部分的保留字开始。如“const”开始常量说明;“type”开始类型说明;“var”开始变量说明。一个程序包含多少种类型的说明,看需要而定,不是每一个程序都必须同时包含这三种说明。如果程序不须要用到常量,则常量说明部分可以省略;如果不须要用到类型说明,则类型说明可省 PASCAL还有一条规则:先说明后引用。即
8、所有在程序体中用到的“名字”必须都在说明部分说明过才能引用,否则就会出错,通不过编译,也执行不了。如上,类型“ar”先在类型说明中定义,然后在变量说明中引用;变量i在变量说明中定义,在程序中引用。 程序体:beginfor i:=1 to n do read(ai);readln;for i:=n downto 1 do write(ai:4);writeln;end.程序体是以begin end.括起来的语句系列。“end”后面是一个小圆点,标识着程序结束,整个程序只有一个是一个程序的主要部分。编程要完成的工作大部分都在这里完成。程序体中每一语句均以“;”作为结束符。
9、在书写程序时,以“分层缩进”的风格来写,以便提高程序的可读性。所谓的“分层缩进”是指在逻辑上同一级的语句其起始点对齐,下一级的语句向右缩进。运算符 表达式PASCAL中的运算符有算术运算符和关系运算符。和我们在数学课中学的基本一样但在写法上有些不同,在写程序时要特别注意写法的不同: + 加号;- 减号;* 乘号( 数学中写为 × );/ 除号( 数学中写为 ÷);MOD 取余 如:8 MOD 2=0,7 MOD 2=1,2 MOD 3=2;DIV 取整 如:8 DIV 2=4,7
10、 DIV 2=3,2 DIV 3=0。在PASCAL只有上面6种数学运算。其它的就只能利用这6种运算的组合通过语句来实现。如a2(a的平方)可以化成a*a。> 大于;< 小于;<> 不等于(数学中写为 );<= 小于等于(数学中写为);>= 大于等于(数学中写为 ),变量、常量通过运算符连接起来的式子我们称为表达式。一个单独的变量或常量也是表达式。如a、a+3、a*3+b都是表达式。写表达式时要注意PASCAL表达式跟我们已经熟悉的数学表达式在格式上的区别:数学表达式PASCAL表达式注意2a2*a*号不能省略a÷ba/b除号的
11、写法aba<>b不等号的写法aba<=b小于等于号的写法标准数据类型:整型 实型 字符型 布尔型 数据类型可以理解为一个取值范围和定义在这取值范围上的运算规则。想一想我们对于数的理解:小学学自然数,范围是从0开始,那时候不知道有小数,也不知道有负数,允许的运算是+、-、×、÷,而且对于减法规定被减数要大于减数。到了中学,数的范围扩大了,整数包括正数和负数,减法运算也不再有额外的规定的了。同理,在PASCAL中“数据类型”也是一个取值范围和在它上面定义的运算规则。PASCAL中定义好的
12、标准数据类型一共有4个:整型、实型、字符型、布尔型,分别用保留字integer、real、char、boolean来标记它们。其取值范围和运算如下: 整型(integer):范围 -3276832767;运算 + - * / mod div 实型(real):范围 运算 + - * /字符型(char):范围 可显示的ASCII字符 布尔型(boolean):范围
13、160; true false 运算 and or not在PASCAL中可使用的基本符号有: (1)大写字母 AZ ;小写字母az ;数字09 (2)其它字符 + * / = > < >= <= <> := ( )
14、. , : $ (* *) 其中,有些符号是以双字符作为一个整体,拆开后就失去原有的意义。如“<>”是一个表示“不等于”的关系运算符,如拆开后就变成了两个关系运算符,分别表示“小于”、“大于”。PASCAL使用的保留字有: AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、FILE、FOR、FUNCTION、GOTO 、IF、IN、LABEL、MOD、NIL、NOT、OF、PACKED、PROCEDURE、PROGRAM、RECORD、REPEAT、SET、THEN、TO、TYPE、U
15、NTIL、VAR、WHILE、WITH、FORWARD常用的标准标识符有: 标准常量:FALSE TRUE MAXINT MAXLONGINT 标准类型:INTEGER BOOLEAN REAL CHAR TEXT 标准文件:INPUT OUTPUT 标准函数:ABS ACTAN CHR COS EOF
16、0; ELON EXP LN ODD ORD PRED ROUND SIN SQR SQRT SUCC TRUNC 标准过程:ASSIGN GET NEW DISPOSE PACK PU
17、T READ READLN RESET REWRITE UNPACK WRITE WRITELN函数格式:function fun_name(参数表):数据类型;var 变量声明;begin 函数体;end;例题:写出计算两个整数a,b的和函数add(a,b)。过程格式:procedure proc_name(参数表);var 变量声明;begin 过程体
18、;end;例题:写出在屏幕打印一行文字:”hello,Pascal language is very easy!”函数和过程的调用:例题:从键盘输入:a,b两个数,输出由这两个数为直角边的三角形的面积。【xoi00_01.pas】program xoi00_01;function area(const a,b:real):real;var s:real;begin s:=a*b/2.0; area:=s;end;procedure myproc;var a,b:real; s:real;begin write('Please input two number a,b:'); r
19、eadln(a,b); s:=area(a,b); writeln('the area of trian is: ',s:5:2);end;= main program =begin myproc;end.练习:一、 判断以下标识符的合法性:a3 3a a17 abcd ex9.5 二、 将下列的数学表达式改写成PASCAL表达式:b2-4ac 三、 求下列表达式的值:20 mod 19, 15 mod 9, 7 div 8 ,19 div 3,(4>5) and (7<8),(8>9) or ( 9<10),2 and (3=3) or (3<7
20、)第一节 顺序结构操作一操作二顺序结构是程序设计中最简单的结构,也是最基本的结构,它就是按照程序书写的顺序逐句执行程序中的指令。流程图如下:例题:计算圆的周长的过程:输入圆的半径;(操作一)计算圆的周长;(操作二)输出圆的周长;(操作三)基本的程序语句:赋值语句:赋值语句是最简单的语句,其一般形式为:<变量>:=<表达式>“:=”称为赋值号,赋值语句的作用是计算表达式的值,并赋给变量。对于任何一个变量必须首先赋值,然后才能引用,否则,未赋初值的变量将以一个随机值参与运算。另外,赋值号两边的类型必须相同,但表达式值为整数时,它可自动化为实型后赋给该实型变量,即符合赋值相容
21、。如:Pi:=3.14;R:=2;Age:=20;S:=Pi*R*R例:关于赋值的例子prssogram example;var a,b:integer;begina:=3;b:=2;a:=a+b;writeln(a);writeln(b);end.输入语句通过计算机的外设把数据送到计算机内存的过程称为输入。Turbo Pascal语言的输入语句有如下两种形式:read(<变量名表>);readln(<变量名表>);<变量名表>是一个或几个由逗号隔开的变量标识符,他们必须在程序说明部分预先说明,他们可以是整型、实型或字符型,布尔型不可以直接读入。例如a,b,
22、c为整型变量,read(a,b,c)之后,键盘输入:20 30 40 <CR>(<CR>表示回车),结果:a=20,b=30,c=40readln语句和read语句不同之处在于输入数据到各变量之后,readln自动换行,从下一行开始再输入数据。一个read语句执行完后,数据行中多余的未读数据可以被下一个输入语句读入;而一个readln于执行完后,数据行中多余未读数据就没有用了。readln语句中可以不包含变量名表。即有以下等价情况:read(a,b);readln等价于readln(a,b)输入语句输入的数据类型必须和变量一一对应。如果输入的是一串整数或实数,数据间用空
23、格或回车分隔;若输入的是一串字符,则不用分隔。输出语句输出是将内存中的数据送到外设的过程。Turbo Pascal的输出语句有两种形式:write(<输出项表>);writeln(<输出项表>);其中<输出项表>是一串用逗号分隔的常量、变量、函数名、表达式或字符串。如果是变量、函数名、表达式,则将其计算结果输出;如果是常量或字符串,则直接输出其值。write和writeln的区别在于:write语句是输出项输出后,不换行,光标停留在最后一项后,writeln语句按项输出后,自动换行,光标则停留在下一行的开始位置。writeln语句允许不含有输出项,即仅wri
24、teln;表示换行。Turbo Pascal语言把输出项的数据显示占用的宽度称为域宽,你可以根据输出格式的要求在输出语句中自动定义每个输出项的宽度。定义宽度时分为单域宽和双域宽。单域宽输出格式:writeln(I:n);在n个字符宽的输出域上按右对齐方式输出I的值,若n大于I的实际位数,则在I值前面补(n-I的实际位数)个空格。若I的实际位数大于n,则自动突破限制。n必须是整数。双域宽输出格式:writeln(a:n:m);双域宽主要用于实型数据的输出。n的用法同上。在n个字符宽的输出域上按右队齐方式用小数点形式输出a的数值,m是小数点后的位数。原来的数据按该该格式指定的小数位数四舍五入。若m
25、=0 ,则不输出小数部分和小数点,原数据四舍五入取整。n,m必须是整数。 例:输出语句的例子program shuchu;const s='pascal'var i:integer;r:real;c:char;b:boolean;begini:=12345;r:=123.45c:='a'b:=true;writeln('i=');writeln(i:6);writeln('r=',r,r:6:1);writeln('c=',c,c:10);writeln('b=',b,b:10)end. 复合语句复
26、合语句是由若干语句组成的序列,语句之间用分号“;”隔开,并且以begin和end括起来,作为一条语句。复合语句的一般形式:begin语句1;语句2;语句n;end;例:变量值的交换program swap;vara,b,t:integer;begin a:=10;b:=20;begint:=a;a:=b;b:=t;end;writeln('a=',a,'b=',b)end. 例题1:输入圆的半径,求出圆的周长和面积:Progam CalCircle;var R,C,S:Real;变量声明beginwrite(输入圆的半径:);readln(R);C:=2*Pi*
27、R;write(周长=,C);readln;S:=Pi*sqr(R);sqr(R)=R*Rwrite(面积=,S);readln;end.例题2:找出下面程序中的语法错误。Program Example1;计算圆环面积的程序,R2表示外圆环的半径,R1表示内圆环的半径,R2>R1var R1,R2:Real;begin S=(R2+R1)*(R2-R1)*Pi Pi=3.14为常数 writeln(s)end;纠正以后的程序Program Example1;计算圆环面积的程序,R2表示外圆环的半径,R1表示内圆环的半径,R2>R1var R1,R2:real; S:real;每一个
28、变量都必须声明begin S=(R2+R1)*(R2-R1)*Pi; Pi=3.14为常数 writeln(s); 语句必须以“;”结束end.主程序必须以“.”结尾练习:编写程序实现以下功能:1、输入三角形三边的长,计算三角形的面积。计算公式:Pascal程序中计算平方根的函数为:sqrt(x);x:real; x0基本要求:有友好的输入输出界面,不需要考虑输入的a,b,c是否可以构成三角形,假设输入的数据符合要求。第二节 IF分支结构例题: 输入一个考试分数,如果大于等于60就说恭喜你考试及格,如果小于60就说真差劲,要努力哦!program JudgeScore;输入分数score;如果
29、Score60那么 输出“恭喜你考试及格”否则 输出“真差劲,要努力哦”“如果.那么”形式的判断在Pascal中使用If语句来实现。IF语句是由一个布尔表达式和两个供选择的操作序列组成。运行时根据布尔表达式求值结果,选取其中之一的操作序列执行。有两种形式的IF语句:if<布尔表达式>then <语句>;if<布尔表达式>then <语句1>else <语句2>;当布尔表达式的值为真,则执行then后面的语句,值为假时有两种情况:要么什么也不做,要么执行else后面的语句。注意else前面没有分号,因为分号是两个语句之间的
30、分隔符,而else并非语句。如果在该处添了分号,则在编译的时候就会认为if 语句到此结束,而把else当作另一句的开头,输出出错信息。前面例题的Pascal程序代码:Program JudgeScore;var score:real;声明分数变量scorebeginreadln(score); 输入分数if score>=60 then begin score代表分数的变量writeln(恭喜你,考试及格!);end else beginwriteln(真差劲,要努力哦!);end; end if score>=60end.例:求y=f(x),当x>0时,y=1,当x=0时,
31、y=0,当x<0时,y=-1program lianxi;var x,y:real;beginif x>0 then y:=1;if x=0 then y:=0;if x<0 then y:=-1;writeln('y=',y);end.在Turbo Pascal语言if语句中被构造的语句只能是一条语句,当条件选择某个分支的计算要用多个语句描述时,就必须把该分支用begin和 end括来,写成复合语句。在用if语句连续嵌套时,如果你插入适量的复合语句,有利于程序的阅读和理解。例:当x>0时候,计算x*x,并且输出x和x*x。program lianxi;
32、var x,x1:real;beginreadln('x=',x);if x>= then beginx1:=x*x;writeln('x*x=',x1);writeln('x=',x);end;end.当if 语句嵌套时,Turbo Pascal约定else总是和最近的一个if配对。前面介绍了If语句的使用情况,下面来概括if判断语句的使用方法。分支结构的基本情况:if 条件成立 then begin 处理;end;下一语句;if 条件成立 then begin操作B;end else if 条件不成立 then begin 操作A;en
33、d;下一语句;练习:写出下列关系表达式和逻辑表达式的Pascal语句:1、 区分合格和不合格:x >= 602、 60分到70分之间: ( x >= 60 ) and ( x <=70 )3、判别闰年的条件(年份能被4整除,并且不能被100整除;或者能被400整除的整数年份):(y mod 4 = 0) and (y mod 100 <> 0 ) or (y mod 400 = 0)编写程序实现下列功能:1、从键盘读入一个数,判断它的正负。是正数,则输出"+",是负数,则输出"-"2、输入a,b,c三个不同的数,将它们按由小
34、到大的顺序输出3、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超50公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。4、打印某年某月有多少天。(提示:A、闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。B、利用MOD运算可以判断一个数能否被另一个数整除) 5、从键盘输入3个数a,b,c输出其中最大的数。第三节 Case分支结构case语句是由一个表达式和众多可选择的操作序列组成。运行时,根据表达式的求值结果,在众多的分支中选取一个分支执行。其形式为:case表达式of常量1:语句1;常量2:语句2;常量n:语句n;
35、else语句 n+1; 可选项end;表达式只能是顺序类型(除了实型以外的简单类型),其值必须是唯一确定并且和表达式类型相同。case语句执行和表达式值相匹配的case常数所指向的那条语句,如果没有相匹配的值,则执行else部分(如果有的话)或者什么也不做。在else前面的语句末尾有分号,这是和if语句不同的。Case表达式的应用:例题:输入一个考试分数(整数),根据分数情况报告相应的信息。要求:假设输入的分数为0,100之间的整数。Program JudgeScore2;var x:real;begin read(x);输入一个分数case x of 0.59:writeln(不
36、及格;60.89:writeln(及格);90.100;writeln(优秀);elsewriteln(错误的分数);end;case x ofend.例:根据学生的成绩给予相应的等级,对应关系如下:以下program chengji;var s:real;ch:char;beginwrite('input the score: ');readln(s);if(s>=0)and(s<=100)thencase s div 10 of10,9:ch:='A'8:ch:='B'7,6:='C'else ch:='D
37、'end;writeln(s,'-',ch);end.练习:1、我们把字母作如下的分类:大写字母:A.Z;小写字母:a.z;数字:0.9;其他字母,编写一个程序,根据上述分类的方法,输入一个字母,报告该字母所属的类型。2、某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。 第四节 for循环结构程序设计时我们经常要做一些重复的任务通过反复的执行某一个动作来完成任务,编写这一类程序我们使用循环结构来实现。如计算1+2+3+.+100。Pascal中循环结构通过使用For、
38、While、Repeat三种语句来实现。For语句是形式最简单的循环语句。例题1:输入正整数N,计算分析:1+2+3+N,因此我们必需重复的执行S:=S+i,其中S代表和,S=1i=1S=1+2i=2S=1+2+3i=3S=1+2+3+4i=4.S=1+2+3+4+Ni=Ni从1变化到N,计算前I项的和:1+2+3+I,写成Pascal代码如下:For i:=1 to N DO S:=S+i;i从1变化到N重复执行S:=S+i完整的程序如下:Program Example1_4Var N,I,S:integer;Begin Write(输入正整数N:);Readln(N); S:=0; For
39、 I:=0 to n do S:=S+I; Writeln(1+2+3+,n,=,s);End.FOR 循环有两种形式:升序形式:for <控制变量>:=<初值> to <终值> do <语句>降序形式:for <控制变量>:=<初值> downto <终值> do <语句>for语句功能描述:虽然for循环形式简单,但是执行的机制却很复杂。其基本过程如下:1. 计算初值并记忆2. 判断初值是否超出终值、如果超过则执行步骤7,否则执行步骤33. 把初值赋给控制变量4. 执行do后面的语句(循环体)5
40、. 判断控制变量的值 是否达道终值,如果是则执行步骤6,否则执行步骤76. 控制变量取下一个值(升序取后继,降序取前驱)7. (循环结束)执行下一语句.例题:编写程序输出序号从32到126的ASCII字符与对应代码之间的对应关系。每行输出5个字符,输出结果如下如所示。(Example4_2)program example4_2;var i, j: byte;begin for i := 32 to 126 do begin if (j mod 5 = 0) then writeln; write(i: 5, chr(i): 2); j := j + 1;end;end. 程序说明:标准函数ch
41、r(i)可以得到代码为i的字符。j mod 5 求 j模5的余数。语句if (j mod 5 = 0) then writeln;用于控制换行,每行写5个字符的对应关系。语句write(i: 5, chr(i): 2);用于格式化输出结果。编程完成下列计算:1、2、3、 把数码1,2,3,4,9分成3组,每组构成一个3位数,使这3个3位数恰好成1:2:3,该怎样分?求出所有的解答来。(如:192,384,576就是一组解答)4、 求出所有的三位数,它除以11所得余数等于它的三个数字的平方和。第五节 while、repeat循环结构While语句是另外一种实现循环的语句,一般形式如下:While
42、 <条件> do <语句>While循环的执行过程如下:1. 判断条件是否成立,条件成立时执行步骤2,否则执行步骤42. 执行do后面的语句(循环体)3. 返回步骤14. 结束循环,执行下一语句注意:一定要有使条件取假(False)的时候,否则会出现死循环。例题:从键盘输入一批学生考试数据,统计这些数据中大于80的数的个数。分析:因为学生的人数没有确定,因此不方便用for循环来完成此项工作,但是用while循环比较容易实现。(example4_3)while score>=0 do 输入一个学生成绩score;计算总分;Pascal代码: while score
43、>= 0 do begin readln(score); total := total + score; end;完整的程序代码:program example4_3;var score: integer; total: integer; c: char;begin writeln('输入学生分数:'); readln(score); total:=0; while score >= 0 do begin readln(score); total := total + score; end; writeln('总分为:',total); read(c
44、);end.Repeat语句与while语句基本类类似,只是while先判断条件,reapeat语句先执行循环体然后再判断。Repeat <语句>循环体部分Until <条件>循环结束条件执行过程如下:1. 执行循环体2. 判断条件,如果布满足重复1,否则 执行步骤33. 结束循环,执行下一语句例题:改写Example4_3程序使用Repeat循环语句实现。(Example4_4)program example4_4;var score: integer; total: integer; c: char;begin writeln('输入学生分数:');
45、 total := 0; repeat readln(score); total := total + score; until score < 0; writeln('总分为:', total); read(c);end.练习:1、 计算下列式子的值:(1) 1+3+5+99(2) 1+2+4+8+128+256+512+1024(3) 1+(1+2)+(1+2+3)+(1+2+3+4+N)2、 有一分数序列:求出这个数列的前20项的和。3、 求水仙花数。所谓水仙花数,是指一个三位数,如果满足,则abc是水仙花数。4、 输入一个整数,计算它各位上数字的和。(注意:是任意
46、位的整数)5、 输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)6、 求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。)7、 编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,26代替字母Z,如遇空格则打印一个星号*,英文句子以.结束。8、 “百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡
47、,那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。9、 输入一个正整数N,把它分解成质因子相乘的形式。如:36=1×2×2×3×3; 19=1×19(提示:设因子为I,从2开始到N,让N重复被I除,如果能整除,则用商取代N,I为一个因子;如果不能整除,再将I增大,继续以上操作,直到I等于N。)10、 编程实现:求之值,其中a是一个数字。例如:(当n=5时),n由键盘输入。11、 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如:6的因子为1、2、3,而6123,因此6是“完数”。编程序找出1000以内
48、的所有完数。12、 编一程序,输入a,b,c,d,e,f,然后解出方程组的解。第六节 数据类型简单数据类型Pascal语言基本数据类型由:integer(longint,shortint,byte),real,char,Boolean.等构成。自定义数据类型:我们可以 在基本数据类型的基础上定义新的数据类型,类型定义的保留字为“Type”,格式为:TYPE <类型标识符>=<数据类型>如:Type MyLong=Longint;枚举类型: “枚举”的意思就是把所需要的对象都一个一个的列举出来。比方说星期是一个只有7个元素的数据,因此我们可以定义一种数据类型TWeekDa
49、y代表星期,如果一个变量定义为TWeekDay类型,那么他的取值范围就是Sunday.Saturday,另外颜色TColor也一样。习惯上我们在 自定义类型名称前加上“T”,如TColor,TWeekDay,而且单词以大写字母开始。Type TWeekDay=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday); TColor=(Red,Yellow,Blue,Green.Purple,White,Black);枚举变量的第一个代表0,第二个 代表1,以此类推,如上面定义的TweekDay类型,Sunday=0,Monday=1,
50、Saturday=6。例题:输入今天的日期数字:0Sunday,1Monday,6Saturday,输出明天的日期,用英文单词表示。【xoi00_02.pas】program xoi00_02;Type TWeekDay=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);var today,tomorrow:TWeekDay; number,i:integer;begin write('Enter today number:');readln(number); if (number<0) or (numb
51、er>6) then writeln('Error number') else begin today:=Sunday; for i:=0 to number-1 do today:=succ(today); if today=Saturday then tomorrow:=Saturday else tomorrow:=succ(today); write('Tomorrow is:'); case tomorrow of Sunday:writeln('Sunday'); Monday:writeln('Monday')
52、; Thursday:writeln('Thusday'); Wednesday:writeln('Wednesday'); Thursday:writeln('Thursday'); Friday:writeln('Friday'); Saturday:writeln('Saturday'); end;if today=saturday then end;if (number<0) or (number >6)end.子界类型:子界类型是在其它的离散类型的值域中取出一部分构成独立的类型。子界类型的一般
53、定义形式如下:TYPE <子界类型标识符>=<下界常量>.<上界常量>如: TYPE Tmonth=1.12;TYPE Tscore=0.100;例按月、日、年顺序读入一日期,输出该日期是这一年中的第几天。program date;var year:0.2010;month,i:1.12;day:1.31;dayth:integer;beginread(month,day,year);dyath:=0;for i:=1 to month-1 docase i of1,3,5,7,8,10,12:dayth:=dayth+31;2:if (year mod 4
54、=0)and(year mod 100<>0)or(year mod 400 =0)then dayth:=dayth+29else dayth=:=dayth+28;4,6,9,11:dayth:=dayth+30;end;dayth:=dayth+day;writeln(dayth)end.数组类型:定义数组:Type 数组类型标识符=Array下标类型 OF 数组元素类型数组元素类型本身也可以是复杂的自定义类型,如子界类型,数组类型,记录等。例如:定义存放学生姓名的字符数组:TYPE TName=Array1.20 of Char;定义一个存放班级学生(50人)名单的数组:T
55、YPE TStudents=Array1.50 of TName也可以这么定义:TYPE TStudents=Array1.50 of Array1.20 of Char;例1:输入5个考分数,计算它们的总分。【xoi00_03.pas】program xoi00_03;Type TScore=Array1.5 of integer;var score:TScore; i:integer;sum:integer;begin for i:=1 to 5 do begin write('Enter Number #',i); readln(scorei); end; sum:=0;
56、 for i:=1 to 5 do begin sum:=sum+scorei; end; writeln('Total Score is:',sum);end.例2:从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。program p1;var a: array1.10 of integer; i, s: integer;begin for i := 1 to 10 do read(ai); for i := 10 downto 1 do write(ai, ' '); writeln; s := 0; for i := 1 to 10
57、 do s := s + ai; writeln('s=', s);end.例3:用筛法求100以内的素数(质数)。分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了重复这个删数过程,直到在所找到的素数后再也找不到一个非0数。把所有非0数输出。program p2;var a: array1.100 of integer; i, j, k: integer;begin for i := 1 to 100 do ai := i; a1 := 0; i := 2; while i <= 100 do begin k := i; while k <= 100 do begin k := k + i; ak := 0; end; -上面将所有ai的倍数清0 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025包头市喜桂图文化旅游开发有限公司招聘讲解员15人笔试参考题库附带答案详解
- 2025年企业安全培训考试试题附参考答案(完整版)
- 2025班组安全培训考试试题答案a4版
- 2025生产经营单位安全培训考试试题附参考答案【黄金题型】
- 2025无线网络基站租赁合同
- 2025合同自我评估示范文
- 2025上海市新全日制劳动合同书
- 2025复印机购销合同 复印机购销合同范本
- 2025建筑材料供货合同模板
- 2025年房屋买卖合同范本2
- 2024辽宁沈阳水务集团有限公司招聘20人笔试参考题库附带答案详解
- 建筑工地物业服务合同模板7篇
- 《计算机发展史》课件
- 2025年安徽芜湖市阳光电力维修工程有限责任公司招聘笔试参考题库附带答案详解
- 2024-2025学年统编版语文八年级上册期末易错题:现代文阅读(记叙文)(含答案)
- 学校食堂每日食品安全检查记录台账(日管控)
- 《ERP总体介绍》课件
- 企业利他培训
- DB32-T 4569-2023 发泡陶瓷保温板 保温系统应用技术规程
- 2025年职教高考对口升学 护理类 专业综合模拟卷(4)(四川适用)(原卷版)
- 酒业销售有限公司组织架构及岗位职责
评论
0/150
提交评论