资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2019/12/19,成功学校程序设计兴趣小组 B班,#,2024/11/30,成功学校程序设计兴趣小组 B班,1,文本文件的概念,在,Lazarus,中,文件,被定义为同一种类型的元素组成的顺序集合,.,文件具有,3,个特点,:,1,、顺序性,2,、永久性,3,、容量大,文件使用的重要性,在我们信息学竞赛的复赛中所有的数据都是在文本文件中读取的,而所有的输出结果都要输出到文本文件中,所以毫不夸张的说在信息学竞赛的复赛中如果你不懂得熟练的使用文件那么你一分也得不到。,在通常的使用中我们只使用文本文件这种类型(,TEXT,);,2024/11/30,成功学校程序设计兴趣小组 B班,2,文本文件 (,TEXT,)的概念,文本文件的内容有,ASCII,字符集中的字符组成,因此文本文件也称,ASCII,码文件,它可以用,DOS,中的,type,命令列出内容。文本文件具体是由一系列行组成,每一行可以包括,0,个或多个字符型成分,并以也行结束符结尾。,文本文件读写上只能按次序顺序读写。,2024/11/30,成功学校程序设计兴趣小组 B班,3,适用文本文件的函数和过程除了用于类型文件操作的过程和函数外主要还有:,(,1)readln,过程形式:,readln(f,var,表,);,或,readln(f,);功能:从磁盘文件,f,中,将数据依次读到,var,表表示的各变量中(其中,readln(f),只读数据),并将文件指针移到行结束符后,就是下一行开头。(,2,),writeln,过程形式:,writeln(f,var,表,),或,writeln(f);,功能:将,var,表所表示的各个变量的值依次写到磁盘文件,f,上去(,writeln(f),不写值),然后再写一个行结束符。(,3,),append,过程形式:,append(f);,功能:打开一个已经存在的磁盘文件,其文件名必须和,assign,过程中的变量名,f,相对应,该文件只能写,此时文件指针指向文件尾。(,4,),eoln,函数形式:,eoln(f);,功能:若文件指针指向行结束符或文件结束符,则返回,true,,否则返回,false,。,2024/11/30,成功学校程序设计兴趣小组 B班,4,使用文件的步骤,()说明文件类型,定义文件标识符,()建立内部文件与外部文件的联系;,()打开文件;,()对文件进行操作;,()关闭文件。,2024/11/30,成功学校程序设计兴趣小组 B班,5,文本文件的读、写过程,对文本文件的写操作步骤:,assign(f,str);,rewrite(f);,或,append(f);,write(f,var,表,);,或,writeln(f);,close(f);,对文本文件的读操作步骤:,assign(f,str);,reset(f);,readln(f,var,表,);,或,readln(f);,close(f);,2024/11/30,成功学校程序设计兴趣小组 B班,6,题目:随机产生,30,个随机整数存放于文本文件,zhoufei.txt,中,program zhoufei;,const n=30;,var ra:text,;,定义,RA,为文本文件类型,i:integer;,begin,randomize;,assign(ra,zhoufei,txt,);,将外部文件名赋予文件变量,rewrite(ra,);,建立并打开这个文件,for i:=1 to n do writeln(ra,random(100,);,输出结果到文件中,close(ra),;,关闭文件,end.,2024/11/30,成功学校程序设计兴趣小组 B班,7,习题一,:,陶陶摘苹果,(apple.pas),【,问题描述,】,陶陶家的院子里有一棵苹果树,每到秋天树上就会结出,10,个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个,30,厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。,现在已知,10,个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。,假设她碰到苹果,苹果就会掉下来,。,2024/11/30,成功学校程序设计兴趣小组 B班,8,输入、输出要求,【,输入文件,】,输入文件,apple.in,包括两行数据。第一行包含,10,个,100,到,200,之间(包括,100,和,200,)的整数(以厘米为单位),分别表示,10,个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。,第二行只包括一个,100,到,120,之间(包含,100,和,120,)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度,。,【,输出文件,】,输出文件,apple.out,包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。,【,样例输入,】,100 200 150 140 129 134 167 198 200 111,110,【,样例输出,】,5,2024/11/30,成功学校程序设计兴趣小组 B班,9,Program apple;,Var f1,f2:text;,Begin,Assign(f1,apple.in,);,Assign(f2,apple.out,);,Reset(f1);,Rewrite(f2);,*,Close(f1);,Close(f2);,End.,2024/11/30,成功学校程序设计兴趣小组 B班,10,2.,明明的随机(,random.pas/c/cpp,),【,问题描述,】,明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了,N,个,1,到,1000,之间的随机整数(,N100,),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成,“,去重,”,与,“,排序,”,的工作。,2024/11/30,成功学校程序设计兴趣小组 B班,11,【,输入文件,】,输入文件,random.in,有,2,行,第,1,行为,1,个正整数,表示所生成的随机数的个数:,N,第,2,行有,N,个用空格隔开的正整数,为所产生的随机数。,【,输出文件,】,输出文件,random.out,也是,2,行,第,1,行为,1,个正整数,M,,表示不相同的随机数的个数。第,2,行为,M,个用空格隔开的正整数,为从小到大排好序的不相同的随机数。,【,输入样例,】,10,20 40 32 67 40 20 89 300 400 15,【,输出样例,】,8,15 20 32 40 67 89 300 400,2024/11/30,成功学校程序设计兴趣小组 B班,12,3,奖学金,(scholar.pas/c/cpp),【,问题描述,】,某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前,5,名学生发奖学金。期末,每个学生都有,3,门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。,任务:先根据输入的,3,门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前,5,名学生的学号和总分。注意,在前,5,名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:,7 279,5 279,这两行数据的含义是:总分最高的两个同学的学号依次是,7,号、,5,号。这两名同学的总分都是,279,(总分等于输入的语文、数学、英语三科成绩之和),但学号为,7,的学生语文成绩更高一些。如果你的前两名的输出数据是:,5 279,7 279,则按输出错误处理,不能得分。,2024/11/30,成功学校程序设计兴趣小组 B班,13,【,输入,】,输入文件,scholar.in,包含,n,+1,行:,第,1,行为一个正整数,n,,表示该校参加评选的学生人数。,第,2,到,n,+1,行,每行有,3,个用空格隔开的数字,每个数字都在,0,到,100,之间。第,j,行的,3,个数字依次表示学号为,j,-1,的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为,1,n,(恰好是输入数据的行号减,1,)。,所给的数据都是正确的,不必检验。,【,输出,】,输出文件,scholar.out,共有,5,行,每行是两个用空格隔开的正整数,依次表示前,5,名学生的学号和总分。,2024/11/30,成功学校程序设计兴趣小组 B班,14,【,输入输出样例,1】,scholar.in,scholar.out,6,90,67,80,87,66,91,78,89,91,88,99,77,67,89,64,78,89,98,6,265,4,264,3,258,2,244,1,237,【,限制,】,50%,的数据满足,:,各学生的总成绩各不相同,100%,的数据满足,:,6=n=300,【,输入输出样例,2】,scholar.,in,scholar.,out,8,80,89,89,88,98,78,90,67,80,87,66,91,78,89,91,88,99,77,67,89,64,78,89,98,8,265,2,264,6,264,1,258,5,258,2024/11/30,成功学校程序设计兴趣小组 B班,15,根据下列程序代码写程序的功能。,program test5_1;,var f,g:text;,ch:char;,begin,Assign(f,ex5_1.txt,);,Assign(g,exout5_1.txt,);,Reset(f); rewrite(g);,While not eof(f) do,begin,while not eoln do,begin,read(ch); write(ch);,End;,readln(f);,writeln(g);,End;,Close(f);,Close(g);,End.,
展开阅读全文