nullnull字符数组及字符串类型数组元素的类型是字符型,称为字符数组。一、字符数组null例1:在一个字符数组LET中,形成由A开始有连续26个大写字母构成的字串,并将其倒置后放在LET中。赋值: for i:=1 to 26 do let[i]:=chr(i+64);倒置: for i:=1 to 13 do
begin
ch:=let[i];
let[i]:=let[26-i+1];
let[26-i+1]:=ch
end;null字符串常量:用撇号括起来的一串字符,但不包括撇号。
字符串长度: 字符串所含字符的个数。
空串: 不含任何字符的字符串。二、字符串类型1、字符串类型的定义
<类型标识符>=string[长度]
注: [长度] 省略时默认长度为255
如: type
filename=string[20];
var
book:filename;null 连接运算:
如: ‘turbo ’+‘pascal’=‘turbo pascal’字符串运算 关系运算:
比较大小:字典顺序
如:‘asc’=‘asc’
‘ASC’<‘ASCII’
‘ABCDMN’<>‘ABCDE’
‘3’>‘24’null几个字符串过程:
1、 delete(st,pos,num);
功能:从st串中的pos位置开始删除个数为 num个字符的子字符串。
如:st:=‘Turbo pacsl 6.0’
delete(st,7,6);
st变为 ‘Turbo 6.0’42、Insert(obj,target,pos);
功能:把字符串obj插入到字符串target的pos位置。
如: st:=‘ABCD’
insert(‘d’,st,3);
st 变为 ‘ABdCD’null几个字符串过程:
3、 str(value,st);
功能:把value的值转换成字符串存放在st中。
如:i的值为12345
str(i:6,st);
st变为 ‘12345’4、val(st,var,code);
功能:把字符串
达式st 转换成对应的整数型或实数型数值。
如:
st:=‘123’,则val(st,I,result)将i的值变为123,result的值为0;
St:=‘215xq2’ , 则i的值无定义, result的值为4null 几个字符串
数:
1、 length函数: 返回串的长度。如 length(‘abc’)=3 2、 pos函数: pos(st1,st2)
在st2中查找出现st1串的起始位置,找到则返回该位置值,否则返回0。Pos(‘abc’, ‘dgfabc’)= 43、copy(st,n,m)函数:在st串中从n开始顺序截取长度为m的字串。
如: copy(‘abcdefg’,3,4)=‘cdef’4、concat(st1,st2,….stn)函数:按给出的顺序连接起来。
如: concat(‘a’, ‘b’, ‘c’)=‘abc’null例2:分析以下程序:Program lx;
var letters:string; I,len:integer; ch:string[1];
Begin
readln(letters);
len:=length(letters);
for i:=1 to len do
begin
ch:=copy(letters,len,1);
delete(letters,len,1);
insert(ch,letters,i);
end;
writeln(letters);
readln
End.null例3:随机输入一些国家的英文名字,以 end作为输入结束,按字母顺序排序后输出。Program lx;
const n=100;
var a:array[1..n] of string[30];
i,j,m,b:integer;
k:string[30];
Begin
m:=0;
repeat
m:=m+1;
readln(a[m]);
until a[m]=‘end’null for i:=1 to m-2 do
for j:=i+1 to m-1 do
if a[i]
m-1 2 m
否则,取母串1的长度为m-2的子串(3个),即:
1 -> m-2 2 -> m-1 3 -> m
利用POS函数检测。一直到母串的长度为1,有m个子串去检测, 若还没有。则无公共子串。null例4:求n个字符串的最长公共字串(n<20),字符串长度不超过255。 m:=length(a[1]);
for j:=m dwonto 1 do
for k:=1 to m-j+1 do
begin
ch:=copy(a[1],k,j);
bool:=true;p:=1;
repeat
p:=p+1;
if pos(ch,a[p])=0 then bool:=false;
until (p=n) or (not bool);
if bool then
begin
writeln(‘the largest is ‘,ch);
readln; halt;
end
end; 子串个数ch子串是否是n个串中公共子串null例5:从键盘输入两个位数不超过200位的正整数A和B,输出它们的差。分析:数据A,B的值已超过整数、实数所能承受的最大范围。只能采用字符串进行处理。
为了便于相加,将各数位存在数组st1,st2中。
若被减数小于减数时,需交换位置,同时差为负数。 readln(st1);
readln(st2);
s1:=length(st1); s2:=length(st2);
if (s11) do k:=k-1;
for i:=k dwonto 1 do write(c[i]);
readln
将前面0去掉