字符和字符串类型

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、字符、字符串类型的使用

(一)字符类型

字符类型为由一个字符组成的字符常量或字符变量,字符常量定义:

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

程序如下:

program 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.

分析:程序中,我们利用了字符类型是顺序类型这一特性,直接将字符类型变量作为循环变量,使程序处理起来比较直观。

(二)字符串类型

字符串是由字符组成的有穷序列,字符串类型定义:

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

var

字符串变量:字符串类型标识符;

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

man=string[8];

line=string;

var

name:man;

screenline:line;

另一种字符类型的定义方式为把类型说明的变量定义合并在一起。

例如:VAR

name:STRING[8];

screenline:STRING;

Turbo Pascal中,一个字符串中的字符可以通过其对应的下标灵活使用。

例如:var

name:string;

begin

readln(nsme);

for i:=1 to ord(name[0]) do writeln(name[i]);

end.

语句writeln(name[i])输出name串中第i个字符。

【例2】求输入英文句子单词的平均长度

程序如下:

program ex8_2;

var

ch:string;

s,count,j:integer;

begin

write('The sentence is :');

readln(ch);

s:=0;

count:=0;

j:=0;

repeat

inc(j);

if not (ch[j] in [':',',',';','''','!','?','.',' ']) then inc(s);

if ch[j] in[' ','.','!','?'] then inc(count);

until (j=ord(ch[0])) or (ch[j] in ['.','!','?']);

if ch[j]<>'.' then writeln('It is not a sentence.')

else writeln('Average length is ',s/count:10:4);

end.

分析:程序中,变量s用于存句子中英文字母的总数,变量count用于存放句子中单词的个数,ch[j]表示ch串中的第j个位置上的字符,ord(ch[0])为ch串的串长度。程序充分利用Turbo Pascal允许直接通过字符串下标得到串中的字符这一特点,使程序比较简捷。

二、字符串的操作

(一)字符串的运算和比较

由字符串的常量、变量和运算符组成的表达式称为字符串表达式,字符串运算符包括:

+:连接运算符

例如:'Turbo '+'PASCAL'的结果是'Turbo PASCAL'

若连接的结果字符串长度超过255,则被截成255个字符;若连接后的字符串存放在定义的字符串变量中,当其长度超过定义的字符串长度时,超过部份字符串被截断。

例如:var

str1,str2,str3:string[8];

begin

str1:='Turbo ';

str2:='PASCAL';

str3:=str1+str2;

end.

则str3的值为:'Turbo PA'

=、<>、<、<=、>、>=:关系运算符

两个字符串的比较规则为,从左到右按照ASCⅡ码值逐个比较,遇到ASCⅡ码不等时,规定ASCⅡ码值大的字符所在的字符串为大。

例如:'AB'<'AC' 结果为真

'12'<'2' 结果为真

'PASCAL '='PASCAL' 结果为假

【例3】对给定的10个国家名,按其字母的顺序输出

程序如下:

program ex8_3;

var i,j,k:integer;

t:string[20];

cname:array[1..10] of string[20];

begin

for i:=1 to 10 do readln(cname[i]);

for i:=1 to 9 do

begin

k:=i;

for j:=i+1 to 10 do if cname[k]>cname[j] then k:=j;

t:=cname[i];cname[i]:=cname[k];cname[k]:=t;

end;

for i:=1 to 10 do writeln(cname[i]);

end.

分析:程序中,当执行到if cname[k]>cname[j]时,自动将cname[k]串与cname[j]串中的每一个字符逐个比较,直至遇到不等而决定其大小。这种比较方式是计算机中字符串比较的一般方式。

相关文档
最新文档