信息学奥赛全部内容知识(5)

2020-04-13 22:33

信息学奥林匹克竞赛辅导

var day:riqi; ch1:zimu; 也可以直接定义: day:1..31; year:0..200; ch1:'A'..'Z'; 8.2 枚举类型:

通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序是一致的。枚举类型的形式: (标识符1,……,标识符n) 例如:

type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday) 枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:< type daystype=('sun','mon','tue','wed','thu','fri','sat')

枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的: type daytype1=(monday,tuesday); daytype2=(monday,wednesday);

可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(monday,tuesday,sunday) 枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始。

例如:已经定义daystype

ord(sunday)=0,succ(sunday)=monday,pred(friday)=thursday

但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。Turbo Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。 例如:枚举值的输出 case day of

sunday:write('sunday'); monday:write('monday'); tuesday:write('tuesday'); wednesday:write('wednesday'); thursday:write('thursday'); friday:write('friday'); saturday:write('saturday'); end; 练习:

1.按月、日顺序输入今年的一个日期,输出该日是星期几?已知今年元旦是星期一。

第 46 页 共 278 页

信息学奥林匹克竞赛辅导

第九章 集合类型

9.1 集合 9.1 集合 1.集合的定义:

type 类型名=set of 基类型 例如: type

num=set of char; var n:num; 或 var

n: set of char; 2.集合的表示:

用一组方括号括号一组元素来表示,元素之间用逗号分隔。如: [A,B,C,D]--有四个枚举量的集合 ['A','B','C','D']--有四个字符的集合 [1..20]--包含了1到20中所有整数的集合 [0]--只有一个元素0的单元素集 []--空集 3.集合的运算:

(1)并(a+b):属于a或属于b [0..7]+[0..4]的值为[0..7] (2)交(a*b):既属于a又属于b [0..7]*[0..4]的值为[0..4] (3)差(a-b):属于a但不属于b [0..7]-[0..4]的值为[5..7] (4)相等(a=b):a,b的元素完全一样 [0..7]=[0..4]的值为false (5)不等(<>):元素不一样 [0..7]<>[0..4]的值为true (6)包含于(<=):

[0..7]<=[0..4]的值为false (7)包含(>=):

[0..7]>=[0..4]的值为true (8)成员(in):

1 in [0..4]的值为true

第 47 页 共 278 页

信息学奥林匹克竞赛辅导

4.注意事项:

(1)集合运算相当快,在程序中常用集合表达式来描述复杂的测试。如

A)条件表达式: (ch='T') or (ch='t') or (ch='Y') or (ch='y') 可用集合表达式表示为:

ch in ['T','t','Y','y']

B)if (ch>=20) and (ch<=50) then ...; 可写成:

if ch in [20..50] then ...;

(2)集合类型是一种使用简便,节省内存面又运算速度快的数据类型。

(3)Turbo Pascal规定集合的元素个数不超过256个(当实际问题所需的元素个数大于256时, 可采用布尔数组代替集合类型)。所以如下定义是错误的: var i: set of integer; (4)集合类型变量不能进行算术运算,了不允许用读/写语句直接输入/输出集合。 所以集合的建立:

A)要通过赋值语句实现;

B)或先初始化一个集合,然后通过并运算向集合中逐步加入各个元素. (5)集合元素是无序的,所以ord,pred和succ函数不能用于集合类型的变量。 练习:

编程读入两个字符串,然后输出如下信息:

(1)出现在某一个字符串中至少一次的字母和数字; (2)同时出现在两个字符串中至少一次的字母和数字;

(3)出现在一个字符串中而不出现在另一个字符串中的字母和数字; (4)不出现在任何字符串中的字母和数字。

第十章 记录与文件类型

10.1 记录类型 10.2 文件类型

10.1 记录 1.记录的定义:

type 类型标识符=record 字段名1:类型1; 字段名2:类型2; ...

字段名n:类型n; end; 如: type

第 48 页 共 278 页

信息学奥林匹克竞赛辅导

studata=record num:string[6]; name:string[8]; sex:boolean;

s:array[1..5] of real; end; var

student:studata;

students:array[1..10] of studata; 2.记录的运用:

(1)对记录中和个域的引用,要写出记录名和域名,如:student.num (2)开域语句:with。 with 记录名 do 语句; 或

with 记录名1,记录名2,... do 语句; 注意:

1. 在do后面语句中使用的记录的域时,只要简单地写出域名就可以了, 域名前的记录变量和\均可省略。

2. 在关键字with后面,语句可以是一个简单语句,了可以是一个复合语句。 3. 虽然在with后可以有多个记录变量名,但一般在with后只使用一个记录变量名。 10.2 文件

文件是一种构造型的数据类型。在程序中都需要产生一些输出,也需要接受若干个输入。这些输入、输出实际上是用文件的方法来实现的,在Pascal中用标准文件“input”和“output”来实现,它们分别对应标准输入设备和标准输出设备(可省略不写)这也就是一些程序的程序书写如下的原因了:

program ex(input,output); ...

但有时大量数据的读入和输出都是来是磁盘文件,这就要求我们必须熟练掌握对磁盘文件的操作。

对于我们来说,我们只必须掌握文本文件(或称正文文件,text)的读写即可: 1.文本文件的定义:

文本文件不是简单地由某类型的元素序列所组成,它的基本元素是字符,由它们构成行,若干行组成一份原文。由于各行的长度可以不同,所以文本文件只能顺序地处理。文本文件的定义如下: var fp:text; 2.文本文件的读操作:

第 49 页 共 278 页

信息学奥林匹克竞赛辅导

(1)调用assign过程,把磁盘文件赋予文本文件变量; assign(fp,filename);

(2)调用reset过程,为读操作做准备; reset(fp);

(3)在需要读数据的位置调用read过程或readln过程。 readln(fp,var1,var2,...,varn); 3.文本文件的写操作:

(1)调用assign过程,把磁盘文件赋予文本文件变量; assign(fp,filename);

(2)调用rewrite过程,为读操作做准备; rewrite(fp);

(3)在需要读数据的位置调用write过程或writeln过程。 writeln(fp,var1,var2,...,varn); 4.文本文件的关闭操作: close(fp); 5.文本文件的其他操作:

(1)EOF(fp)—布尔函数,用于判断文件结束否。 (2)EOLN(fp)—布尔函数,用于判断行结束否。 例1:下面是一个建立和使用文件的程序: program wenjian; const n=3; m=2; type student=record name:string;

score:array[1..m] of 0..100; end;

var st:array[1..n] of student; stfile:file of student ; sumst:array[1..n] of integer; sumsub:array[1..m] of integer; sum:integer; procedure newfile; var i,j:integer; begin

assign(stfile,'score.fil'); rewrite(stfile); for i:=1 to n do begin

writeln('Input student ',i,' name and ',m,' score');

第 50 页 共 278 页


信息学奥赛全部内容知识(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2005-2006学年度第二学期教科研计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: