2022年字符和字符串类 .pdf

上传人:C****o 文档编号:34256457 上传时间:2022-08-15 格式:PDF 页数:8 大小:55.99KB
返回 下载 相关 举报
2022年字符和字符串类 .pdf_第1页
第1页 / 共8页
2022年字符和字符串类 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年字符和字符串类 .pdf》由会员分享,可在线阅读,更多相关《2022年字符和字符串类 .pdf(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一、字符、字符串类型的使用(一) 字符 类型字符类型为由 一个字符 组成的字符常量或字符变量,字符常量定义: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 y z x r v t p n l j h f d b 程序如下:progra

2、m ex8_1; var letter:char; begin for letter:=a to z do if (ord(letter)-ord(a)mod 2=0 then write(letter:3); writeln; for letter:=z downto a do if (ord(letter)-ord(z)mod 2 =0 then write(letter:3); writeln; end. 分析 :程序中,我们利用了字符类型是顺序类型这一特性,直接将字符类型变量作为循环变量,使程序处理起来比较直观。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -

3、- - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - (二) 字符串 类型字符串是由字符组成的有穷序列 ,字符串类型定义: type =stringn; var 字符串变量 : 字符串类型标识符; 其中: n 是定义的字符串长度,必须是0255 之间的自然整数,第 0 号单元中存放串的实际长度,程序运行时由系统自动提供,第1n 号单元中存放串的字符,若将stringn写成 string,则 默认 n 值为 255。例如: type man=string8; line=string; var name:man

4、; screenline:line; 另一种字符类型的定义方式为把类型说明的变量定义合并在一起。例如: VAR name:STRING8; screenline:STRING; Turbo Pascal中,一个字符串中的字符可以通过其对应的下标灵活使用。例如: var name :string;begin readln (nsme );for i:=1 to ord(name0) do writeln(namei); end. 语句 writeln(namei)输出 name串中第 i 个字符。【例 2】求输入英文句子单词的平均长度程序如下:program ex8_2; var 名师资料总结

5、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - ch:string; s,count,j:integer; begin write(The sentence is :); readln(ch); s:=0; count:=0; j:=0; repeat inc(j); if not (chj in :,;,!,?,., ) then inc(s); if chj in ,.,!,? then inc(count); until (j=ord(

6、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 允许直接通过字符串下标得到串中的字符这一特点,使程序比较简捷。二、字符串的操作(一)字符串的运算和比较由字符串的常量、变量和运算符组成的

7、表达式称为字符串表达式,字符串运算符包括:+:连接运算符例如: Turbo +PASCAL的结果是 Turbo PASCAL 若连接的结果字符串长度超过255,则被截成255 个字符;若连接后的字符串存放在定义的字符串变量中,当其长度超过定义的字符串长度时,超过部份字符串被截断。例如: var str1,str2,str3:string8; begin 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - str1:=Turbo ;

8、str2:=PASCAL; str3:=str1+str2; end. 则 str3的值为: Turbo PA =、=:关系运算符两个字符串的比较规则为,从左到右按照ASC 码值逐个比较,遇到ASC 码不等时 , 规定 ASC 码值大的字符所在的字符串为大。例如: ABAC 结果为真12cnamej then k:=j; t:=cnamei;cnamei:=cnamek;cnamek:=t; end; for i:=1 to 10 do writeln(cnamei); end. 分析 :程序中,当执行到if cnamekcnamej时,自动将cnamek 串与 cnamej 串中的每一个字符

9、逐个比较,直至遇到不等而决定其大小。这种比较方式是计算机中字符串比较的一般方式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 三、字符串的函数和过程Turbo Pascal提供了八个标准函数和标准过程,见下表,利用这些标准函数与标准过程,一些涉及到字符串的问题可以灵活解决。函数和过程名功 能说 明CONCAL(ST1,.,STN) 将 N个字符串连接起来等效于 ST1+.+ST2 ,是 函数COPY (S,M,N) 取 S中第

10、 M个字符开始的N个字符若 M大于 S的长度,则返回空串;否则,若M+N大于s 的长度,则截断,是函数LENGTH (S) 求 s 的动态的长度返回值为整数,是函数POS (SUB,S) 在 S中找子串 SUB返回值为 SUB在 S中的位置,为byte 型,是 函数UPCASE(CH) 将字母 CH转换成大写字母若 CH不为小写字母,则不转换,是函数INSERT (SOUR,S,M) 在 S的第 M个字符位置处插入子串 SOUR若返回串超过255,则截断,是 过程DELETE (S,M,N) 删除 S中第 M个字符开始的N个字符串若 M大于 S的长度,则不删除;否则,若M+N 大于 S的长度,

11、则删除到结尾,是过程STR (X:W:D,S) 将整数或实数X 转换成字符串 SW和 D 是整型表达式,意义同带字宽的write语句,是过程VAL(S,X,CODE) 将字符串 S 转换成整数或实数 X若 S中有非法字符,则CODE 存放非法字符在S中的下标;否则, CODE 为零 ,CODE为整型,是 过程FILLCHAR (S,N,CH) 给 S填充 N 个相同的 CH用于初始化数组或字符串,N常用 SIZEOF(S)代替,是过程注:关于字符串的几点说明空串表示为 ,其长度为,不等于含有一个空格的串 ,它的长度为;如:A:=;就是将 A字符串置空FILLCHAR可以用于字符串变量和任何类型

12、数组变量的初始化,比如:FILLCHAR(A,SIZEOF(A),0) 将整型数组A全置FILLCHAR(B,SIZEOF(B),TRUE) 将布尔型数组B全置FILLCHAR(C,SIZEOF(C),A) 将整型字符串C全置 A 【例 4】 校对输入日期 ( 以标准英语日期,月/日/ 年) 的正确性,若输入正确则以年月日的方式输出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 程序如下 : program ex8_4; co

13、nst max:array1.12 of byte =(31,29,31,30,31,30,31,31,30,31,30,31); var st:string; p,w,y,m,d:integer; procedure err; begin write(Input Error!); readln; halt; end; procedure init(var x:integer); begin p:=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

14、,p); end; begin write(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) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - then if y mod 100=0 then begin i

15、f y mod 4000 then err; end else if y mod 40 then err; write(Date : ,y,.,m,.,d); readln; end. 分析 :此题的题意很简单,但在程序处理时还需考虑以下几方面的问题。 1 判定输入的月和日应是位或位的数字,程序中用了一个过程inst ,利用串函数pos,求得分隔符 / 所在的位置而判定输入的月和日是否为位或位,利用标准过程val 判定输入的月和日是否为数字; 2 判定月和日是否规定的日期范围及输入的年是否正确; 3 若输入的月是2 月份,则还需考虑闰年的情况。【例 5】对输入的一句子实现查找且置换的功能(找到

16、某个子串并换成另一子串)。程序如下 : program ex8_5; var s1,s,o:string; i:integer; begin write(The text:); readln(s1); write(Find:);readln(s); write(Replace:);readln(o); i:=pos(s,s1); while i0 do begin delete(s1,i,length(s); insert(o,s1,i); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - i:=pos(s,s1); end; writeln(s1); readln; end. 分析 : 程序中, 输入要查找的字符串及要置换的字符串,充分用上了字符串处理的标准过程delete 、 insert及标准函数 pos。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com