第十课字符与字符串处理.doc_第1页
第十课字符与字符串处理.doc_第2页
第十课字符与字符串处理.doc_第3页
第十课字符与字符串处理.doc_第4页
第十课字符与字符串处理.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

第十课字符与字符串处理一、字符、字符串类型的使用(一)字符类型字符类型为由一个字符组成的字符常量或字符变量 。字符常量定义:const字符常量=字符字符变量定义:Var字符变量:char;字符类型是一个有序类型, 字符的大小顺序按其ASC代码的大小而定。函数succ、pred、ord适用于字符类型。例如:后继函数:succ(a)=b前继函数:pred(B)=A序号函数:ord(A)=65例1 按字母表顺序和逆序每隔一个字母打印。即打印出:a c e g I k m o q s u w yz x r v t p n l j h f d b程序如下:program ex8_1;var letter:char;beginfor letter:=a to z doif (ord(letter)-ord(a)mod 2=0 then write(letter:3);writeln;for letter:=z downto a doif (ord(letter)-ord(z)mod 2 =0 then write(letter:3);writeln;end.分析:程序中,我们利用了字符类型是顺序类型这一特性,直接将字符类型变量作为循环变量,使程序处理起来比较直观。(二)字符串类型字符串是由字符组成的有穷序列。字符串类型定义: type =stringn;var字符串变量: 字符串类型标识符;其中:n是定义的字符串长度,必须是0255之间的自然整数,第0号单元中存放串的实际长度,程序运行时由系统自动提供,第1n号单元中存放串的字符。若将stringn写成string,则默认n值为255。例如:typeman=string8;line=string;varname:man;screenline:line;另一种字符类型的定义方式为把类型说明的变量定义合并在一起。例如:VARname:STRING8;screenline:STRING;Turbo Pascal中,一个字符串中的字符可以通过其对应的下标灵活使用。例如:varname:string;beginreadln(nsme);for i:=1 to ord(name0)dowriteln(namei);end.语句writeln(namei)输出name串中第i个字符。例2 求输入英文句子单词的平均长度.程序如下:program ex8_2;varch:string;s,count,j:integer;beginwrite(The sentence is :);readln(ch);s:=0;count:=0;j:=0;repeatinc(j);if not (chj in :,;,!,?,., ) then inc(s);if chj in ,.,!,? then inc(count);until (j=ord(ch0) or (chj in .,!,?);if chj. then writeln(It is not a sentence.)else writeln(Average length is ,s/count:10:4);end.分析:程序中,变量s用于存句子中英文字母的总数,变量count用于存放句子中单词的个数,chj表示ch串中的第j个位置上的字符,ord(ch0)为ch串的串长度。程序充分利用Turbo Pascal允许直接通过字符串下标得到串中的字符这一特点,使程序比较简捷。二、字符串的操作(一)字符串的运算和比较 由字符串的常量、变量和运算符组成的表达式称为字符串表达式。字符串运算符包括:1+:连接运算符例如:Turbo +PASCAL的结果是Turbo PASCAL。若连接的结果字符串长度超过255,则被截成255个字符。若连接后的字符串存放在定义的字符串变量中,当其长度超过定义的字符串长度时,超过部份字符串被截断。例如:varstr1,str2,str3:string8;beginstr1:=Turbo ;str2:=PASCAL;str3:=str1+str2;end则str3的值为:Turbo PA。2=、=、=:关系运算符两个字符串的比较规则为,从左到右按照ASC码值逐个比较,遇到ASC码不等时,规定ASC码值大的字符所在的字符串为大。例如:ABAC 结果为真;122 结果为真;PASCAL =PASCAL 结果为假;例3 对给定的10个国家名,按其字母的顺序输出。程序如下:program ex8_3;var i,j,k:integer;t:string20;cname:array1.10 of string20;beginfor i:=1 to 10 do readln(cnamei);for i:=1 to 9 dobegink:=i;for j:=i+1 to 10 doif cnamekcnamej then k:=j;t:=cnamei;cnamei:=cnamek;cnamek:=t;end;for i:=1 to 10 do writeln(cnamei);end.分析:程序中,当执行到if cnamekcnamej时,自动将cnamek串与cnamej串中的每一个字符逐个比较,直至遇到不等而决定其大小。这种比较方式是计算机中字符串比较的一般方式。三、字符串的函数和过程Turbo Pascal提供了八个标准函数和标准过程,见下表,利用这些标准函数与标准过程,一些涉及到字符串的问题可以灵活解决。函数和过程名功 能说 明copy(s,m,n)取s中第m个字符开始的n个字符若m大于s的长度,则返回空串;否则,若m+n大于s的长度,则截断length(s)求s的动态的长度返回值为整数pos(sub,s)在s中找子串sub返回值为sub在s中的位置,为byte型insert(sour,s,m)在s的第m个字符位置处插入子串sour若返回串超过255,则截断delete(s,m,n)删除s中第m个字符开始的n个字符串若m大于s的长度,则不删除;否则,若m+n大于s的长度,则删除到结尾str(x:w:d,s)将整数或实数x转换成字符串sw 和 d是整型表达式,意义同带字宽的write语句val(s,x,code)将字符串S 转换成整数或实数x若S中有非法字符,则code存放非法字符在S中的下标;否则,code为零。code为整型upcase(ch)将字母ch转换成大写字母若ch不为小写字母,则不转换例4 校对输入日期(以标准英语日期,月/日/年)的正确性,若输入正确则以年月日的方式输出。程序如下:program ex8_4;constmax:array1.12 of byte=(31,29,31,30,31,30,31,31,30,31,30,31);varst:string;p,w,y,m,d:integer;procedure err;beginwrite(Input Error!);readln;halt;end;procedure init(var x:integer);beginp:=pos(/,st);if (p=0) or (p=1) or (p3) then err;val(copy(st,1,p-1),x,w);if w0 then err;delete(st,1,p);end;beginwrite(The Date is :);readln(st);init(m);init(d);val(st,y,w);if not (length(st)4) or (w0) or (m12) or (dmaxm) then err;if (m=2) and (d=29)then if y mod 100=0then beginif y mod 4000 then err;endelse if y mod 40 then err;write(Date : ,y,.,m,.,d);readln;end.分析:此题的题意很简单,但在程序处理时还需考虑以下几方面的问题。1判定输入的月和日应是位或位的数字,程序中用了一个过程inst,利用串函数pos,求得分隔符/所在的位置而判定输入的月和日是否为位或位,利用标准过程val判定输入的月和日是否为数字;2判定月和日是否规定的日期范围及输入的年是否正确;3若输入的月是2月份,则还需考虑闰年的情况。例5 对输入的一句子实现查找且置换的功能。程序如下:program ex8_5;vars1,s,o:string;i:integer;beginwrite(The text:);readln(s1);write(Find:);readln(s);write(

温馨提示

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

评论

0/150

提交评论