信息学竞赛复赛_第1页
信息学竞赛复赛_第2页
信息学竞赛复赛_第3页
信息学竞赛复赛_第4页
信息学竞赛复赛_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、信息学竞赛复赛PASCAL的文件输入和输出一、复赛中文件操作的有关过程或函数1、说明文件变量Pascal中所有变量都要先说明后使用,文件变量也一样。信息学复赛中使用的输入输出文件是文本文件,要将其说明为text类型。例如: var f1,f2:text; 将f1、f2均说明为text文件2、指定变量所代表的文件为了简化程序的书写,在程序中要使用文件名的地方均可用指定的文件变量来代表。assign(<文件变量>,<文件名>)例如: 过程: assign(f1, 'sun.in') 作用: 指定文件变量f1 代表实际文件'sun.in',以后

2、对文件'sun.in'的操作均可用变量f1代表 说明: 被代表的文件名可以为直接的字符串常量形式的,也可以是字符串变量,但在调用本过程前,真实的文件名必须已存入到该字符串变量中. 3、以读方式打开文件 预先已将输入数据存放在输入文件中,这时要在程序中打开它,以便从中读取数据。reset(<文件变量>)例如:过程:reset(f1);作用:以只读的方式打开一个已经存在的磁盘文件,其文件名必须先由assign过程赋给变量f1,文件打开后指针指向第一个数据。4、从文件中读取(输入)数据read(<文件变量>,<变量表>)readln(<文件变

3、量>,<变量表>)readln(<文件变量>)例如:过程:read(f1,x,y1,st);作用:从文件中读出三个数,分别存到变量x,y1,st中。指针移到本次被读出的第三个数之后,下次再执行该过程时从新位置继续读数。过程:readln(f1,x,y1,st);作用:与前者的不同之处是:从文件中读出三个数后,指针移到下一行开头,下次再执行该过程时从新一行开始继续读数。过程:readln(f1);作用:不读数,只将指针移到下一行开头。5、建立并以写方式打开文件 要由程序建立一个新文件,以便将结果写入(输出)到该文件中。rewrite (<文件变量>)例如

4、:过程:rewrite(f2);作用:建立由f2 代表的一个新文件,此时的文件还没有任何内容,随后可以在程序中调用其它过程写入数据。6、将数据写入文件write(<文件变量>,<数据表>)writeln(<文件变量>,<数据表>)writeln(<文件变量>)例如:过程:write(f2,100,pp)作用:将100和pp的值写入f2代表的文件中。过程:writeln(f2,100,pp)作用:将100和pp的值写入f2代表的文件中,并换行。过程:writeln(f2)作用:不写入数据,只在文件中换行。7、关闭文件当文件使用完后,一般

5、都需要关闭,以防止文件意外损坏。CLOSE(<文件变量>)例如: 过程: close(f1) 作用: 关闭f1对应的文件8、文件结束函数当要连续读入很多数时,有时需要检查文件是否还有数可读。 EOF(<文件变量>)例如: 函数: eof(f1) 作用: 若文件到了最后,则函数返回“true”,否则返回“false”。二、例题 例1:求三个数的和及平均数。用键盘输入、屏幕输出数据的程序为:program pg1;var x,y,z,ss,pp:real;begin read(x,y,z); ss:=x+y+z; pp:=ss/3; writeln(ss:10:2,pp:1

6、0:2) 以10位长、2位小数的格式输出结果;对于实型数,若不进行格式设定,将会以科学记数法的形式给出结果 end.从文件da.in中输入数据,将结果写入文件da.out的程序为:program pg1;var x,y,z,ss,pp:real; f1,f2:text; 说明两个文件变量,分别代表输入和输出文件begin assign(f1, 'da.in'); 指定用f1代表输入文件“da.in” assign(f2, 'da.out'); 指定用f1代表输出“da.in” reset(f1); 以读方式打开已存在的文件“da.in” read(f1,x,y,

7、z); 从输入文件中读入三个数 ss:=x+y+z; pp:=ss/3;rewrite(f2); 建立输出文件“da.out”,暂没有内容 writeln(f2,ss:10:2,pp:10:2); 将变量ss、pp的值写入文件“da.out” close(f1);close(f2) 关闭两个文件end.注意:(1)过程read(x,y,z)与read(f1,x,y,z)的不同之处是:前者从键盘读入(输入)数据,后者从f1代表的文件中读入(输入)数据;(2) 过程write(ss:10:2,pp:10:2)与writeln(f2,ss:10:2,pp:10:2)的不同之处是:前者将结果显示在屏幕

8、上,后者将结果写入(输出)到f2代表的文件中。说明:输入文件中的各数用空格隔开,若是字符串还要用单引号引住。da.in 中的内容结果: da.out 中的内容10 25 100 135.00 45.00 若输入、输出文件名用字符串变量表示,则以上程序可改为:program pg1;var x,y,z,ss,pp:real; nm1,nm2:string; 说明两个字符串变量 f1,f2:text; begin nm1:= 'da.in'nm2:= 'da.out' 存放输入和输出文件名 assign(f1, nm1); assign(f2, nm2); rese

9、t(f1); read(f1,x,y,z); ss:=x+y+z; pp:=ss/3;rewrite(f2); writeln(f2,ss:10:2,pp:10:2); close(f1);close(f2) end.例2:问题描述计算一批学生的平均成绩。输入格式在第一行输入第一个学生的姓名;在第二行输入第一个学生的成绩;在第三行输入第二个学生的姓名;在第四行输入第二个学生的成绩;后面各人的成绩依此类推输入。输出格式在同一行输出平均成绩的英文提示和平均成绩。输入样例li95peng95chen85输出样例Aver=91.67程序program pg2;var n:integer; n用于统计学

10、生人数 sc,s,p:real; sc存放成绩,s存放成绩和,p存放平均分 nam,pstr:string; nam存放学生姓名,pstr存放字符串形式的平均分 f1,f2:text;对应输入输出文件的两个变量begin assign(f1, 'grade.in'); 指定文件变量代表的文件 assign(f2, 'grade.out'); reset(f1); 打开输入数据文件 s:=0;n:=0; 初始成绩总和为0,人数为0 while not eof(f1) do 若文件未结束,则继续 begin readln(f1,nam,sc); 从f1代表的文件中读

11、入某学生的姓名和成绩 s:=s+sc ; n:=n+1; 累加成绩,并将人数加 end; p:=s/n; 计算平均成绩 str(p:15:2,pstr); 将平均成绩转换为字符串,存放到pstr while copy(pstr,1,1)=' ' do 去掉字符串前的空格, 以使 pstr:=copy(pstr,2,length(pstr)-1); “Aver=”的“=”后不出现空格 rewrite(f2); 建立输出文件“grade2.out”,暂没有内容 writeln(f2,'Aver='+pstr); 将结果合成一个字符串写入文件中 close(f1);c

12、lose(f2) end.输入输出文件中的内容grade1.in 中的内容结果: grade2.out 中的内容li95peng95chen85Aver=91.67三、使用文件进行输入输出的有关注意事项1、在程序调试期间,一般先采用键盘输入和屏幕输出,待调试完成后,再改为文件输入和输出。实际的文件名必须要单引号引住。2、在改为文件输入和输出后,还需要进行验证修改是否正确。可按如下步骤进行:用dos下的edit命令或windows的记事本建立一个输入文件,将要验证的输入数据按格式要求输入到文件中。注意文件名要与程序中指定的文件名相同。运行程序。这时程序应会生成指定的输出文件,并将结果写入其中。用dos下的type 命令或在windows中打开结果文件,查看内容是否为正确。在输入文件中修改输入数据,重复-若干次。3、建立输入数据文件时要注意:同一行数据间用空格;每个字符串必须单独占一行,因为在读入字符串时,程序是将一行作为一个字符串读入的;输入最后一个数据后不可再按多余的键,否则程序会误认下一行还有数据;(若按了,可在该数后按多次“DEL”键删除该无形回车符)4、教师可以使用dos 的文件比较命令比较程序的输出文件是否与标准答案的输出文件一致。例如:若

温馨提示

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

评论

0/150

提交评论