




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
字符数组和字符串类型,一、子界与枚举类型,Pascal有丰富的数据类型,在程序设计中有特殊而方便的应用。类型定义的语法格式:type=;=;=;,子界与枚举1.子界类型:当某些变量的取值范围很具体时,可用子界类型,它更符合实际、便于查错和节省内存。定义如下:typeriqi=1.31;zimu=A.Z;varday:riqi;ch1:zimu;也可以直接定义:day:1.31;year:0.200;ch1:A.Z;,2、枚举类型,通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序是一致的。枚举类型的形式:(标识符1,标识符n)例如:typedaystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday)枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:STUDENT321,(4)字符串过程和函数,,1、length(st)返回串的长度,结果为整型。,2、Pos(st1,st2)在st2中查找st1的起始位置,找到则返回该位置值,否则返回值为0。,3、Str(value,st)过程,将数value转化为数字串st。,4、val(st,value,code)过程,将数字串st转化为数value,code返回检测出错的第一个字符位置,未出错时返回0。,5、copy(st,pos,num)函数,在st串中从pos位置开始顺序截取长度为num的字串,其结果为字符串类型。,如:x:=length(abcde),St1:=are;st2=Youareastudent.;X:=Pos(st1,st2);,X的值为6,X的值为5,Value:=375.2;Str(value,st);,St为375.2,St:=327.2ab01;Val(st,value,code);,Val为327.2,Code为6,St:=youareastduent.;Pos:=1;num:=4;ch:=copy(st,pos,num);,Ch为you,例4.12随机输入一些国家的英文名字,以end作为输入结束标志,按字母顺序排序后输出。,Programex4_12;Constn=100;Vara:array1.nofstring30;i,j,m,b:integer;k:string30;Beginm:=0;writeln(Inputcountryname:);repeatm:=m+1;readln(am);untilam=end;,Fori:=1tom-2doforj:=i+1tom-1doifaiajthenbegink:=ai;ai:=aj;aj:=k;end;writeln(output:);Fori:=1tom-1doWriteln(ai);Writeln(*end*);Readln;End.,作业,随机输入一个长度不超过的字符串,使用copy,delete,insert函数将其倒置后输出,例:求n个字符串的最长公共子串,n20,字符长度不超过255。如:n=3,由键盘依次输入三字符串为whatislocalbus?namesomelocalbus.localbusishighspeedI/Obusclosetotheprocessor.则最长公共子串为“localbus”,算法分析:(1)公共子串只有存在或不存在两种可能,用布尔变量处理;(2)先设第一个子串为母串,即子串1母串1,长度为k,则利用pos函数去检测子串1是否为公共子串,若是则结束,否则,取子串1的两个长度为k1,k2的子串,重复上面的操作,直到找到公共子串或长度为0的公共子串。(3)考虑特殊情况,即仅输入一个子串的时候。,输入一行字符,包含若干个单词。约定相邻的两个单词用空格隔开,编程统计单词的个数。,分析:将所有字符存储在一个字符串中,然后对字符扫描,并对空格字符进行判断,从而统计其中单词的个数。,先用length函数取得字符串的长度,然后再进行扫描。,Programex6-12(input,output);varst:string;ch1,ch2:char;I,L,num:integer;beginreadln(st);L:=length(st);求st实际长度I:=1;num:=0;num记录单词个数,I记录扫描位置whileI)and(I=L)doI:=I+1;指针移到单词后的空格end;writeln(total:,num);end.,输入两个整数x、y,输出它们的和。(0=x,y=10100),分析:题目中给出的X、Y的范围远超过了整数、实数的最大范围,故只能采用字符串来进行处理。为便于相加,将各数位存储在整数数组X、Y中。,Programex6_13(input,output);varst:string;x,y:array0.101ofinteger;I,j,l1,l2:integer;beginwrite(x=);read(st);l1:=length(st);forI:=0to101doxI:=0;forI:=l1downto1doxl1-I:=ord(stI)-ord(0);write(y=);read(st);l2:=length(st);forI:=0to101doyI:=0;forI:=l2downto1doyl1-I:=ord(stI)-ord(0);ifl1B+A,但是当A=B+C时,按字符串的大小定义有AB,些时有可能出现A+BB,按这一定义将所有的数字字符串从大到小排序后连接起来所得到的数字字符串即是问题的解。排序时先将所有字符串中的最大值选出来存在数组的第一个元素中,再从第二至最后一个元素中最大的字符串选出来存在数组的第二个元素中,直到从最后二个元素中选出最大的字符串存在数组的倒数第二个元素中为止。,programexample2_7;constmaxn=20;typestringtype=string80;vari,j,n:integer;temp:stringtype;num:array1.maxnoflongint;digitstr:array1.maxnofstringtype;,beginwrite(Inputn:);readln(n);write(Input,n,integerdata(0):);fori:=1tondoread(numi);readln;fori:=1tondodigitstri:=;fori:=1tondowhilenumi0dobegindigitstri:=chr(ord(0)+numimod10)+digitstri;numi:=numidiv10将数转换成字符串end;fori:=1ton-1doforj:=i+1tondoifdigitstri+digitstrj0):121213321121Inputn:4In
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论