为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

字符串函数与过程

2020-03-08 13页 doc 36KB 3阅读

用户头像

is_594905

暂无简介

举报
字符串函数与过程字符串、字符数组      一、字符、字符串类型 字符 是一个有序的, 字符的大小顺序按其ASCⅡ代码的大小而定。函数succ、pred、ord适用于字符类型。 ord(ch)求字符ch对应的ASCII代码值;如 ord ( 'A' )结果为65; 相反:chr(65)结果为 'A'。 字符串:  字符串是由字符组成的有穷序列。  为了使程序能够处理文字信息,Turbo Pascal特别引入了字符串类型,其值表示一个具有可变长度的字符序列。 字符串类型定义: var 字符串变量: string [n]  或者stri...
字符串函数与过程
字符串、字符数组      一、字符、字符串类型 字符 是一个有序的, 字符的大小顺序按其ASCⅡ代码的大小而定。函数succ、pred、ord适用于字符类型。 ord(ch)求字符ch对应的ASCII代码值;如 ord ( 'A' )结果为65; 相反:chr(65)结果为 'A'。 字符串:  字符串是由字符组成的有穷序列。  为了使程序能够处理文字信息,Turbo Pascal特别引入了字符串类型,其值表示一个具有可变长度的字符序列。 字符串类型定义: var 字符串变量: string [n]  或者string 其中正整数n(1~255)表示构成字符串的字符最多个数,即string字符串类型的字符串其最大长度不能超过255。而字符串的实际长度决定程序运行时的实际字符个数,可以由函数length返回。若字符串说明中没有指定长度,则默认n值为255。 字符数组也叫紧缩数组  字符串变量其实就是紧缩型的一维字符数组。字符串变量可以象数组一样使用,且又具有与一般数组不同的附加特征,更便于字符串的操作。例如: 允许对字符串整体输入输出,如,read(ch); weite(ch);等都是合法的; 允许把字符串直接写在文本文件中; 允许对字符串变量进行赋值;等等。 下面两个定义是等价的: var ch:packed array[1..10] of char; var ch:string[10];              string[10]第0单元中存放串的长度,第1~10号单元中存放串的字符 字符串常量可以通过常量说明语句 const 字符串常量名:string[n]='字符串'; 规定其常量的串长n,并赋初值。例如:const head:string[7]='zhoufei'; 例1、输入一串字符,字符个数不超过100,且以“.”结束。 判断它们是否构成回文。 分析:回文指从左到右和从右到左读一串字符的值是一样的,如12321,ABCBA,AA等。先读入要判断的一串字符,放入数组中,并记住这串字符的长度,然后首尾字符比较,并不断向中间靠拢,就可判断出是否为回文。 var letter:array[1..100]of char; i,j:0..100;      ch:char; begin  write('input a string:'); read(ch); i:=0; while ch<>'.' do                        { 读入一个字符串以'.'号结束 } begin i:=i+1; letter[i]:=ch; read(ch) end; j:=1;                                          while (j=i then writeln('Yes.') else  writeln('No.'); end. 数组letter定义为: var letter:array[1..100]of char; 占用100个字长。 说明可改为紧缩方式定义:var letter:packed array[1..100]of char; 在32位微机中只占用25个字长。   Turbo Pascal中,一个字符串中的字符可以通过其对应的下标灵活使用。 例2、var name:string;  i:integer; begin readln(name); for i:=1 to ord(name[0])do writeln(name[i]); end. 语句writeln(name[i])输出name串中第i个字符。 二、字符串的操作 由字符串的常量、变量和运算符组成的表达式称为字符串表达式。字符串运算符包括: 1、连接运算符 +: 如:'Turbo '+'PASCAL'的结果是'Turbo PASCAL'。 若连接的结果字符串长度超过255,则被截成255个字符。若连接后的字符串存放在字符串变量中,当其长度超过定义的字符串长度时,超过部份字符串被截断。 例如:var str1,str2,str3:string[9]; begin  str1:='Turbo ';str2:='PASCAL'; str3:=str1+str2 end. 则str3的值为:'Turbo PAS'。 2、关系运算符 =、〈〉、〈、〈=、〉、〉=: 两个字符串的比较规则为,从左到右按照ASCⅡ码值逐个比较,遇到ASCⅡ码不等时,规定ASCⅡ码值大的字符所在的字符串为大。 例如:'that'< 'this'    结果为true; '12'< '2'        结果为true; 'PASCAL '= 'PASCAL'  结果为false; 例3、 对给定的10个国家名,按其字母的顺序输出。 var i,j:integer;  t:string[20]; const name:array[1..10] of string[20]=( 'China', 'France', 'Canada', 'Australia', 'Spain', 'American', 'Sweden', 'Poland', 'Turkey', 'Japan'); begin for i:=1 to 9 do for j:=i+1 to 10 do    if name[i]>name[j] then begin t:=name[i]; name[i]:=name[i]; name[i]:=t  end; for i:=1 to 10 do writelname[i]); end. 例4  输入一串字符,字符个数不超过100,且以"·"结束,判断它们是否构成回文 分析:所谓回文指从左到右和从右到左读一串字符的值是一样的,如12321、ABCBA、AA等;先读入要判断的一串字符(放入数组letter中),并记住这串字符的长度,然后首尾字符比较,并不断向中间靠拢,就可以判断出是否为回文。 源程序如下: program ex5_5; var   letter:array[1..100] of char; i,j:0..100; ch:char; begin {读入一个字符串以'.'号结束} write('input a string:'); i:=0;read(ch); while ch<>'.' do begin i:=i+1;letter[i]:=ch; read(ch) end; {判断它是否是回文} j:=1; while (j=i then writeln('Yes.') else writeln('No.'); end.   三、字符串的函数和过程 Turbo Pascal提供了八个函数和标准过程,利用它们可以灵活解决字符串解题中的一些问题。设变量s,str,str1,str2均为字符串类型(string){多个字符};ch为字符类型(char){单个字符} 标准函数有: (1)copy(str,n,m)从字符串str的左边第n个开始截取m个字符;若pos大于st的长度,则返回空串。  如:copy(' Pascal ' ,3,2)的结果为'sc ' ; (2)concat(str1,str2)将两个字串连接成为一个新的字串; 如:s:=str1+str2;同等于两串字符相加 (3)Length(str)求字串str的长度(字符个数);函数值字节型 byte  0~255。 (4)pos(str1,str2)求字串str1在字串中开始的位置;找到后返回值为sub在st中的位置,若没找到,函数值为0。  如:  pos('sca','pascal')结果为3; (5)upcase(ch)将字符ch转为大写字母,如 upcase( 'a' )结果为'A' ; 标准过程有: (1)Val(str,x,code)将数字型字串转为数字并存入变量x中;code返回st中第一个非法字符的位置,未有错,code为0。 如:Val(‘768’,x,code),x值为768,code为错误代码,若code=0表示没有错误; (2)str(n,s)将数字n转化为字串存入s中,如str(768,s)s的结果为 '768' ; (3)insert(str1,str2,n)把字串str1插入在字串str2的第n个字符之前,结果在str2中;{此过程中的str2为变量形参,具有传入传出的功能}; (4)delete(str,n,m)从字串str的第n个开始,删除m个字符,把剩余的字符存在str中,{此过程中的str为变量形参,具有传入传出的功能};  例5、有一个四位数①它是一个完全平方数②千位数和百位数相等,十位数和个位数相等。求这个四位数。 var m,n:integer; st:string[4]; begin for n=32 to 99 do begin m:=n*n; str(m,st); if (copy(st,1,1)=copy(st,2,1)) and (copy(st,3,1)=copy(st,4,1)) then writeln(m) end end. 例6、输入两个整数 x、y(0
/
本文档为【字符串函数与过程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索