Pascal程序设计(第7课)-字符串_第1页
Pascal程序设计(第7课)-字符串_第2页
Pascal程序设计(第7课)-字符串_第3页
Pascal程序设计(第7课)-字符串_第4页
Pascal程序设计(第7课)-字符串_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

Pascal语言第7课字符类型字符类型为由一个字符组成的字符常量或字符变量。字符常量定义:

const

字符常量='字符'字符变量定义:

Var

字符变量表:char;字符类型是一个有序类型,字符的大小顺序按其ASCⅡ代码的大小而定。函数succ、pred、ord适用于字符类型。例如:后继函数:succ('a')='b'

前继函数:pred('B')='A'

序号函数:ord('A')=65【字符与字符串处理】

Programa1(input,output);Var

ch:char;Begin

For

ch:=‘a’to‘z’dowrite(ch:3);Writeln;{换行输出下面的内容}

For

ch:=‘z’downto

‘a’dowrite(ch:3);Writeln;End.参考程序:★例1:按正序和反序输出26个英文字母。分析:程序中,我们可以利用字符类型是顺序类型这一特性,直接将字符类型变量作为循环变量,使程序处理起来比较直观。★例2:按字母表顺序和逆序每隔一个字母打印输出。Programa2;

var

ch:char;

begin

for

ch:='a'to'z'do

if(ord(ch)-ord('a'))mod2=0then

write(ch:3);writeln;

for

ch:='z'

downto'a'do

if(ord(ch)-ord('z'))mod2=0then

write(ch:3);writeln;

end.参考程序:字符串类型字符串是由字符组成的有穷序列。字符串类型定义:

type<字符串类型标识符>=string[n];var

字符串变量:字符串类型标识符;其中:n是定义的字符串长度,必须是0~255之间的自然整数,第0号单元中存放串的实际长度,程序运行时由系统自动提供,第1~n号单元中存放串的字符。若将string[n]写成string,则默认n值为255。例如:typeman=string[8];

line=string;

var

name:man;

s:line;【字符与字符串处理】另一种字符串类型的定义方式为把类型说明的变量定义合并在一起。例如:VARname:string[8];s:string;Pascal中,一个字符串中的字符可以通过其对应的下标灵活使用。例如:var

name:string;beginread(name);fori:=1toord(name[0])do

writeln(name[i]);end.

语句writeln(name[i])输出name串中第i个字符。【字符与字符串处理】字符串的运算和比较由字符串常量、变量和运算符组成的表达式称为字符串表达式。字符串运算符包括:1.+(连接运算符)例如:'Turbo'+'PASCAL'的结果是'TurboPASCAL'。(1)若连接的结果字符串长度超过255,则被截成255个字符;(2)若连接后的字符串存放在定义的字符串变量中,当其长度超过定义的字符串长度时,超过部份字符串被截断。例如:var

str1,str2,str3:string[8];

begin

str1:='Turbo';

str2:='PASCAL';

str3:=str1+str2;

end.

则str3的值为:'TurboPA'。【字符串的操作】2.=.<>.<.<=.>.>=(关系运算符)两个字符串的比较规则为,从左到右按照ASCⅡ码值逐个比较,遇到ASCⅡ码不等时,规定ASCⅡ码值大的字符所在的字符串为大。例如:'AB'<'AC'结果为真;'12'<'2'结果为真;‘PASCAL’=‘PASCAL’结果为假;在程序中,当执行到两个字符串进行比较时,Pascal会自动将两个字符串中的每一个字符逐个比较,直至遇到不等而决定其大小。这种比较方式是计算机中字符串比较的一般方式。【字符串的操作】例3对给定的10个国家名,按其字母的顺序输出。参考程序:programa3;var

name:array[1..10]ofstring[20];

i,j,k:integer;

t:string[20];beginfori:=1to10doreadln(name[i]);fori:=1to9do

{选择排序}

begink:=i;forj:=i+1to10doifname[k]>name[j]thenk:=j;ifk<>ithenbegint:=name[i];

name[i]:=name[k];

name[k]:=t;end;end;fori:=1to10dowriteln(name[i]);end.字符串的函数和过程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:对输入的一句子实现查找且置换的功能。参考程序:programa4;

var

se,s,o:string;

i:integer;

beginwrite('Thetext:');readln(se);write('Find:');

readln(s);write('Replace:');

readln(o);i:=pos(s,se);whilei<>0dobegindelete(se,i,length(s));insert(o,se,i);i:=pos(s,se);end;

writeln(se);end.

另一种字符串类型的定义方式是使用一维数组定义成紧缩字符数组的形式。

例如:VARa:array[1..10]ofchar;b:packedarray[1..10]ofchar;

其中变量a为一般的一维数组,b为紧缩字符数组。紧缩字符数组存放字符串,除了可以节约存储空间之外,还使得字符串的读、写、比较、赋值等运算变得简单了。【字符与字符串处理】练习1:从键盘上随意输入20个字母,按照字母表的顺序将它们输出。

练习2:读入10个单词,按照字典次序排列单词。

练习参考参考返回programlianxi1(input,output);

var

a:string;i,j:integer;beginread(a);fori:=97to122doforj:=1to20doiford(a[j])=ithenwrite(a[j]);end.练习1:从键盘上随意输入20个字母,按照字母表的顺序将它们输出。参考程序:返回练习2:读入10个单词,按照字典次序排列单词。programlianxi2(input,output);typeword=packedarray[1..15]ofchar;

var

a:array[1..10]ofword;t:word;i,j:integer;beginfori:=1to10do

readl

温馨提示

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

评论

0/150

提交评论